package main import ( "html/template" "log" "sync" "git.sr.ht/~michalr/go-satel" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func handleStatusCommand(dataStore *DataStore, msg tgbotapi.MessageConfig, bot *tgbotapi.BotAPI, tpl *template.Template, s SatelNameGetter, logger *log.Logger) { data := dataStore.GetGenericMessageOfAllowedPartitions(satel.ArmedPartition) msg.Text = data.Format(tpl, s, logger) if _, err := bot.Send(msg); err != nil { log.Panic(err) } } func HandleIncomingCommands(dataStore *DataStore, tgChan tgbotapi.UpdatesChannel, bot *tgbotapi.BotAPI, wg *sync.WaitGroup, tpl *template.Template, s SatelNameGetter, quitChan <-chan interface{}, logger *log.Logger) { wg.Add(1) defer wg.Done() for { select { case update, ok := <-tgChan: if ok == false { // quit when tgChan closes return } if update.Message == nil { // ignore any non-Message updates continue } if !update.Message.IsCommand() { // ignore any non-command Messages continue } msg := tgbotapi.NewMessage(update.Message.Chat.ID, "") msg.ReplyToMessageID = update.Message.MessageID switch update.Message.Command() { case "status": handleStatusCommand(dataStore, msg, bot, tpl, s, logger) default: logger.Print("Received an unknown command: ", update.Message.Command()) } case <-quitChan: return } } }