1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| bot, err = tgbotapi.NewBotAPI("<YOUR_BOT_TOKEN_HERE>")
updates := bot.GetUpdatesChan(u)
case update := <-updates: handleUpdate(update)
func handleUpdate(update tgbotapi.Update) { switch { case update.Message != nil: handleMessage(update.Message) break
case update.CallbackQuery != nil: handleButton(update.CallbackQuery) break } }
func handleMessage(message *tgbotapi.Message) { user := message.From text := message.Text
if user == nil { return }
log.Printf("%s wrote %s", user.FirstName, text)
var err error if strings.HasPrefix(text, "/") { err = handleCommand(message.Chat.ID, text) } else if screaming && len(text) > 0 { msg := tgbotapi.NewMessage(message.Chat.ID, strings.ToUpper(text)) msg.Entities = message.Entities _, err = bot.Send(msg) } else { copyMsg := tgbotapi.NewCopyMessage(message.Chat.ID, message.Chat.ID, message.MessageID) _, err = bot.CopyMessage(copyMsg) }
if err != nil { log.Printf("An error occured: %s", err.Error()) } }
func sendMenu(chatId int64) error { msg := tgbotapi.NewMessage(chatId, firstMenu) msg.ParseMode = tgbotapi.ModeHTML msg.ReplyMarkup = firstMenuMarkup _, err := bot.Send(msg)
return err }
func sendKeyboard(chatId int64) error { var itemsSel = tgbotapi.NewReplyKeyboard( tgbotapi.NewKeyboardButtonRow( tgbotapi.NewKeyboardButton("button1"), tgbotapi.NewKeyboardButton("button2")), ) msg := tgbotapi.NewMessage(chatId, "Main Menu") msg.ReplyMarkup = &tgbotapi.ReplyKeyboardMarkup{ Keyboard: itemsSel, ResizeKeyboard: true, OneTimeKeyboard: false, Selective: false, } msg.ReplyMarkup = mainMenu _, err := bot.Send(msg)
return err }
nextButton = "Next" firstMenuMarkup = tgbotapi.NewInlineKeyboardMarkup( tgbotapi.NewInlineKeyboardRow( tgbotapi.NewInlineKeyboardButtonData(nextButton, nextButton), ), )
func handleButton(query *tgbotapi.CallbackQuery) { var text string
markup := tgbotapi.NewInlineKeyboardMarkup() message := query.Message
if query.Data == nextButton { text = secondMenu markup = secondMenuMarkup } }
|