81 lines
2.2 KiB
Markdown
81 lines
2.2 KiB
Markdown
|
# Inline Keyboard
|
||
|
|
||
|
This bot waits for you to send it the message "open" before sending you an
|
||
|
inline keyboard containing a URL and some numbers. When a number is clicked, it
|
||
|
sends you a message with your selected number.
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"os"
|
||
|
|
||
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||
|
)
|
||
|
|
||
|
var numericKeyboard = tgbotapi.NewInlineKeyboardMarkup(
|
||
|
tgbotapi.NewInlineKeyboardRow(
|
||
|
tgbotapi.NewInlineKeyboardButtonURL("1.com", "http://1.com"),
|
||
|
tgbotapi.NewInlineKeyboardButtonData("2", "2"),
|
||
|
tgbotapi.NewInlineKeyboardButtonData("3", "3"),
|
||
|
),
|
||
|
tgbotapi.NewInlineKeyboardRow(
|
||
|
tgbotapi.NewInlineKeyboardButtonData("4", "4"),
|
||
|
tgbotapi.NewInlineKeyboardButtonData("5", "5"),
|
||
|
tgbotapi.NewInlineKeyboardButtonData("6", "6"),
|
||
|
),
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_APITOKEN"))
|
||
|
if err != nil {
|
||
|
log.Panic(err)
|
||
|
}
|
||
|
|
||
|
bot.Debug = true
|
||
|
|
||
|
log.Printf("Authorized on account %s", bot.Self.UserName)
|
||
|
|
||
|
u := tgbotapi.NewUpdate(0)
|
||
|
u.Timeout = 60
|
||
|
|
||
|
updates := bot.GetUpdatesChan(u)
|
||
|
|
||
|
// Loop through each update.
|
||
|
for update := range updates {
|
||
|
// Check if we've gotten a message update.
|
||
|
if update.Message != nil {
|
||
|
// Construct a new message from the given chat ID and containing
|
||
|
// the text that we received.
|
||
|
msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
|
||
|
|
||
|
// If the message was open, add a copy of our numeric keyboard.
|
||
|
switch update.Message.Text {
|
||
|
case "open":
|
||
|
msg.ReplyMarkup = numericKeyboard
|
||
|
|
||
|
}
|
||
|
|
||
|
// Send the message.
|
||
|
if _, err = bot.Send(msg); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
} else if update.CallbackQuery != nil {
|
||
|
// Respond to the callback query, telling Telegram to show the user
|
||
|
// a message with the data received.
|
||
|
callback := tgbotapi.NewCallback(update.CallbackQuery.ID, update.CallbackQuery.Data)
|
||
|
if _, err := bot.Request(callback); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
// And finally, send a message containing the data received.
|
||
|
msg := tgbotapi.NewMessage(update.CallbackQuery.Message.Chat.ID, update.CallbackQuery.Data)
|
||
|
if _, err := bot.Send(msg); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|