main.go 1.7 KB

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