Bot do Telegram em Go: da ideia ao deploy em 30 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 version

Se 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:

/newbot

Digite 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-bot

Para 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/v5

Agora 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.go

Envie 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

Blogs

Book Recommendations