main.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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", me.ID, me.FirstName)
  31. if len(os.Args[1:]) >= 2 {
  32. appSettings.DbUser = os.Args[1]
  33. appSettings.DbPassword = os.Args[2]
  34. } else {
  35. fmt.Print("DataBase Username:")
  36. _, err := fmt.Scanln(&appSettings.DbUser)
  37. if err != nil {
  38. LogError.Panic(os.Stderr, err)
  39. return
  40. }
  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. }
  48. dBConnector.Init()
  49. go Updater()
  50. go Listener(botClient)
  51. fmt.Println("Press Enter to exit")
  52. reader := bufio.NewReader(os.Stdin)
  53. reader.ReadString('\n')
  54. }
  55. // Listens for comming messages.
  56. func Listener(botClient *tgbotapi.BotAPI) {
  57. u := tgbotapi.NewUpdate(0)
  58. u.Timeout = 60
  59. updates, _ := botClient.GetUpdatesChan(u)
  60. for update := range updates {
  61. // Ignore any non-Message Updates
  62. if update.Message == nil {
  63. continue
  64. }
  65. go HandleMessage(update.Message, botClient)
  66. }
  67. }
  68. // Starts DataUpdater goroutine every 4 minutes
  69. func Updater() {
  70. LogInfo.Println("Scheduler started!")
  71. for {
  72. go dBConnector.UpdateData()
  73. time.Sleep(4 * time.Minute)
  74. }
  75. }