Bot de Telegram en Go: de la idea al despliegue en 30 minutos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Por qué Go es el lenguaje ideal para bots de Telegram

Si alguna vez has escrito bots en Python, sabes que todo funciona hasta que te topas con el rendimiento. Go resuelve este problema a nivel de arquitectura. Es rápido, liviano y no requiere un entorno virtual. Un bot de Telegram en Go no es solo un juguete, sino un servicio completo que soporta miles de solicitudes por segundo y consume muy poca memoria.

En este artículo crearemos desde cero un bot en Golang que responderá a comandos, procesará mensajes e incluso trabajará con una API externa. Sin teoría innecesaria, solo código que puedes ejecutar de inmediato.



Paso 1: Preparación del entorno

Antes de escribir un bot de Telegram en Go, asegúrate de tener instalado Go versión 1.20 o superior. Puedes verificarlo con el comando:

go version

Si Go no está instalado, descárgalo desde el sitio oficial. La instalación toma 2 minutos.

También necesitarás un token de bot. Entra en Telegram, busca a BotFather y ejecuta el comando:

/newbot

Ingresa el nombre y el nombre de usuario del bot. Después de la creación, BotFather te enviará un token: guárdalo, lo necesitarás para conectarte a la API de Telegram Bot.



Paso 2: Estructura del proyecto

Crea una carpeta para el proyecto e inicializa el módulo:

mkdir my-telegram-botcd my-telegram-botgo mod init my-telegram-bot

Para trabajar con Telegram usaremos la librería tgbotapi, que es la librería de Go para Telegram más popular. Instálala:

go get github.com/go-telegram-bot-api/telegram-bot-api/v5

Ahora crea el archivo main.go. La estructura básica será la siguiente:

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, "¡Hola! ¡Estoy funcionando en Go!") bot.Send(msg) } }}

Ejecuta el bot:

export TELEGRAM_BOT_TOKEN="tu_token"go run main.go

Escríbele al bot en Telegram; debería responder. Si todo funciona, pasamos al siguiente paso.



Paso 3: Manejo de comandos

Simplemente responder "Hola" es aburrido. Agreguemos manejo de comandos para el bot de Telegram. Implementaremos los comandos /start y /help:

for update := range updates {    if update.Message != nil {        switch update.Message.Command() {        case "start":            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "¡Bienvenido! Soy un bot en Go. Usa /help para la lista de comandos.")            bot.Send(msg)        case "help":            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Comandos disponibles:/start - saludo/help - ayuda/echo - repetir mensaje")            bot.Send(msg)        default:            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Comando desconocido. Usa /help")            bot.Send(msg)        }    }}

Ahora el bot reacciona a los comandos. Pero esto es solo el comienzo. El verdadero poder de un bot de Telegram en Golang está en el rendimiento al trabajar con grandes cargas.



Paso 4: Trabajo con una API externa

Añadamos una función útil

Blogs

Book Recommendations