package main import ( "fmt" "log" "bufio" "os" "time" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api" ) var ( appSettings Settings dBConnector Connection myBotClient tgbotapi.BotAPI LogInfo *log.Logger LogWarn *log.Logger LogError *log.Logger LogDebug *log.Logger ) func main() { appSettings.LoadFromFile("config.json") LoggersInit() LogInfo.Println("App started") botClient, err := tgbotapi.NewBotAPI(appSettings.Token) if err != nil { LogError.Panic(err) } myBotClient = *botClient var me = botClient.Self LogInfo.Printf("Hello, World! I am user %d and my name is %s.\n", me.ID, me.FirstName) if len(os.Args[1:]) >= 2 { appSettings.DbUser = os.Args[1] appSettings.DbPassword = os.Args[2] } else { fmt.Print("DataBase Username:") _, err := fmt.Scanln(&appSettings.DbUser) if err != nil { LogError.Panic(os.Stderr, err) return } fmt.Print("DataBase Password:") _, err = fmt.Scanln(&appSettings.DbPassword) if err != nil { LogError.Panic(os.Stderr, err) return } } dBConnector.Init() go Updater() go Listener(botClient) fmt.Println("Press Enter to exit") reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') } // Listens for comming messages. func Listener(botClient *tgbotapi.BotAPI) { u := tgbotapi.NewUpdate(0) u.Timeout = 60 updates, _ := botClient.GetUpdatesChan(u) for update := range updates { // Ignore any non-Message Updates if update.Message == nil { continue } go HandleMessage(update.Message, botClient) } } // Starts DataUpdater goroutine every 4 minutes func Updater() { LogInfo.Println("Scheduler started!") for { go dBConnector.UpdateData() time.Sleep(4 * time.Minute) } }