main.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "bufio"
  6. "os"
  7. "time"
  8. tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
  9. _ "GoEthemineTelegramBot/ethermineapi"
  10. )
  11. var (
  12. appSettings Settings
  13. dBConnector Connection
  14. myBotClient tgbotapi.BotAPI
  15. LogInfo *log.Logger
  16. LogWarn *log.Logger
  17. LogError *log.Logger
  18. LogDebug *log.Logger
  19. )
  20. func main() {
  21. appSettings.LoadFromFile("config.json")
  22. LoggersInit()
  23. LogInfo.Println("App started")
  24. botClient, err := tgbotapi.NewBotAPI(appSettings.Token)
  25. if err != nil {
  26. LogError.Panic(err)
  27. }
  28. myBotClient = *botClient
  29. var me = botClient.Self
  30. LogInfo.Printf("Hello, World! I am user %d and my name is %s.\n",
  31. me.ID, me.FirstName)
  32. switch len(os.Args[1:]){
  33. case 0:
  34. fmt.Print("DataBase Username:")
  35. _, err := fmt.Scanln(&appSettings.DbUser)
  36. if err != nil {
  37. LogError.Panic(os.Stderr, err)
  38. return
  39. }
  40. case 1:
  41. fmt.Print("DataBase Password:")
  42. _, err = fmt.Scanln(&appSettings.DbPassword)
  43. if err != nil {
  44. LogError.Panic(os.Stderr, err)
  45. return
  46. }
  47. break
  48. default:
  49. appSettings.DbUser = os.Args[1]
  50. appSettings.DbPassword = os.Args[2]
  51. break
  52. }
  53. dBConnector.Init()
  54. go Updater()
  55. go Listener(botClient)
  56. fmt.Println("Press Enter to exit")
  57. reader := bufio.NewReader(os.Stdin)
  58. reader.ReadString('\n')
  59. }
  60. // Listens for comming messages.
  61. func Listener(botClient *tgbotapi.BotAPI) {
  62. u := tgbotapi.NewUpdate(0)
  63. u.Timeout = 60
  64. updates, _ := botClient.GetUpdatesChan(u)
  65. for update := range updates {
  66. // Ignore any non-Message Updates
  67. if update.Message == nil {
  68. continue
  69. }
  70. go HandleMessage(update.Message, botClient)
  71. }
  72. }
  73. // Starts DataUpdater goroutine every 4 minutes
  74. func Updater() {
  75. LogInfo.Println("Scheduler started!")
  76. for {
  77. go dBConnector.UpdateData()
  78. time.Sleep(4 * time.Minute)
  79. }
  80. }