Por que Go é a linguagem ideal para bots do Telegram
Se você já escreveu bots em Python, sabe: tudo funciona até esbarrar na performance. Go resolve esse problema no nível da arquitetura. É rápido, leve e não requer ambiente virtual. Um bot do Telegram em Go não é apenas um brinquedo, mas um serviço completo que suporta milhares de requisições por segundo e consome pouca memória.
Neste artigo, criaremos do zero um bot em Golang que responderá a comandos, processará mensagens e até trabalhará com uma API externa. Sem teoria desnecessária — apenas código que pode ser executado imediatamente.
Passo 1: Preparação do ambiente
Antes de escrever um bot do Telegram em Go, certifique-se de ter o Go versão 1.20 ou superior instalado. Você pode verificar com o comando:
go versionSe o Go não estiver instalado, baixe-o do site oficial. A instalação leva 2 minutos.
Você também precisará de um token de bot. Acesse o Telegram, encontre o BotFather e execute o comando:
/newbotDigite o nome e o username do bot. Após a criação, o BotFather enviará o token — guarde-o, pois será necessário para conectar-se à Telegram Bot API.
Passo 2: Estrutura do projeto
Crie uma pasta para o projeto e inicialize o módulo:
mkdir my-telegram-botcd my-telegram-botgo mod init my-telegram-botPara trabalhar com o Telegram, usaremos a biblioteca tgbotapi — a biblioteca Go para Telegram mais popular. Instale-a:
go get github.com/go-telegram-bot-api/telegram-bot-api/v5Agora crie o arquivo main.go. A estrutura básica será assim:
package main
import ( "log" "os" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5")
func main() { token := os.Getenv("TELEGRAM_BOT_TOKEN") bot, err := tgbotapi.NewBotAPI(token) if err != nil { log.Panic(err) }
bot.Debug = true log.Printf("Bot @%s iniciado", bot.Self.UserName)
u := tgbotapi.NewUpdate(0) u.Timeout = 60
updates := bot.GetUpdatesChan(u)
for update := range updates { if update.Message != nil { log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Olá! Estou funcionando em Go!") bot.Send(msg) } }}Execute o bot:
export TELEGRAM_BOT_TOKEN="seu_token"go run main.goEnvie uma mensagem para o bot no Telegram — ele deve responder. Se tudo funcionar, vá para o próximo passo.
Passo 3: Processamento de comandos
Apenas responder "Olá" é entediante. Vamos adicionar processamento de comandos para o bot do Telegram. Implementaremos os comandos /start e /help:
for update := range updates { if update.Message != nil { switch update.Message.Command() { case "start": msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Bem-vindo! Sou um bot em Go. Use /help para a lista de comandos.") bot.Send(msg) case "help": msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Comandos disponíveis:/start - saudação/help - ajuda/echo - repetir mensagem") bot.Send(msg) default: msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Comando desconhecido. Use /help") bot.Send(msg) } }}Agora o bot reage a comandos. Mas isso é apenas o começo. O verdadeiro poder de um bot do Telegram em Golang está na performance ao lidar com grandes cargas.
Passo 4: Trabalho com API externa
Vamos adicionar uma função útil