Меню

Messages
1,679
Reaction score
288
Website
tehadm.ru
Пример простого меню, с возможностью выбора и обработки нажатия
C-like:
package main

import (
    "log"

    tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
    bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
    if err != nil {
        log.Panic(err)
    }

    bot.Debug = false

    log.Printf("Авторизовался как %s", bot.Self.UserName)

    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60

    updates := bot.GetUpdatesChan(u)

    for update := range updates {
        if update.Message != nil { // Если получено сообщение
            if update.Message.IsCommand() { // Если сообщение - команда
                switch update.Message.Command() {
                case "start":
                    sendMainMenu(update.Message.Chat.ID, bot)
                default:
                    msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Неизвестная команда. Используйте /start для начала.")
                    bot.Send(msg)
                }
            } else {
                // Обработка обычных сообщений
                log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
                msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Пожалуйста, используйте меню или команды.")
                bot.Send(msg)
            }
        } else if update.CallbackQuery != nil { // Если получен callback из инлайн-кнопки
            callback := update.CallbackQuery
            log.Printf("Нажата кнопка: %s", callback.Data)

            var responseText string
            switch callback.Data {
            case "option1":
                responseText = "Вы выбрали Опцию 1"
            case "option2":
                responseText = "Вы выбрали Опцию 2"
            case "option3":
                responseText = "Вы выбрали Опцию 3"
            default:
                responseText = "Неизвестная опция."
            }

            // Отправляем уведомление пользователю
            msg := tgbotapi.NewMessage(callback.Message.Chat.ID, responseText)
            bot.Send(msg)

            // Удостоверяемся, что уведомление обработано
            callbackConfig := tgbotapi.NewCallback(callback.ID, "")
            bot.Request(callbackConfig)
        }
    }

}

func sendMainMenu(chatID int64, bot *tgbotapi.BotAPI) {
    // Создаём кнопки меню
    keyboard := tgbotapi.NewInlineKeyboardMarkup(
        tgbotapi.NewInlineKeyboardRow(
            tgbotapi.NewInlineKeyboardButtonData("Опция 1", "option1"),
            tgbotapi.NewInlineKeyboardButtonData("Опция 2", "option2"),
        ),
        tgbotapi.NewInlineKeyboardRow(
            tgbotapi.NewInlineKeyboardButtonData("Опция 3", "option3"),
        ),
    )

    msg := tgbotapi.NewMessage(chatID, "Выберите опцию:")
    msg.ReplyMarkup = keyboard

    bot.Send(msg)
}
 
Back
Top