all repos — telegram-bot-api @ 9b9c5c57d2e86b1bd5de78e4853803bfc0f173f2

Golang bindings for the Telegram Bot API

docs/examples/command-handling.md (view raw)

 1# Command Handling
 2
 3This is a simple example of changing behavior based on a provided command.
 4
 5```go
 6package main
 7
 8import (
 9	"log"
10	"os"
11
12	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
13)
14
15func main() {
16	bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_APITOKEN"))
17	if err != nil {
18		log.Panic(err)
19	}
20
21	bot.Debug = true
22
23	log.Printf("Authorized on account %s", bot.Self.UserName)
24
25	u := tgbotapi.NewUpdate(0)
26	u.Timeout = 60
27
28	updates := bot.GetUpdatesChan(u)
29
30	for update := range updates {
31		if update.Message == nil { // ignore any non-Message updates
32			continue
33		}
34
35		if !update.Message.IsCommand() { // ignore any non-command Messages
36			continue
37		}
38
39		// Create a new MessageConfig. We don't have text yet,
40		// so we leave it empty.
41		msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")
42
43		// Extract the command from the Message.
44		switch update.Message.Command() {
45		case "help":
46			msg.Text = "I understand /sayhi and /status."
47		case "sayhi":
48			msg.Text = "Hi :)"
49		case "status":
50			msg.Text = "I'm ok."
51		default:
52			msg.Text = "I don't know that command"
53		}
54
55		if _, err := bot.Send(msg); err != nil {
56			log.Panic(err)
57		}
58	}
59}
60```