Creando un bot de Telegram en Rust: guía paso a paso para valientes

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

Bot de Telegram en Rust: ¿por qué vale la pena intentarlo?

\n

Rust no es solo otro lenguaje de programación de sistemas. Ofrece una velocidad increíble, seguridad de memoria sin recolector de basura y una concurrencia impresionante. En un mundo donde cada milisegundo de retraso puede costarte un usuario, un bot de Telegram en Rust se convierte en un as bajo la manga para el desarrollador. Obtienes un rendimiento comparable al de C++, pero con una sintaxis mucho más agradable y un sistema de tipos estricto que detecta errores en tiempo de compilación.

\n

En esta guía, recorreremos el camino desde la instalación de herramientas hasta la publicación de un bot funcional. Aprenderás cómo manejar comandos, trabajar con estados e incluso desplegar el bot en un servidor. Si ya conoces los fundamentos de Rust pero nunca has escrito bots, bienvenido. Si eres nuevo en Rust, no te preocupes, avanzaremos paso a paso.

\n\n

Qué necesitarás para empezar

\n

Antes de sumergirte en el código, asegúrate de tener:

\n
    \n
  • Rust y Cargo — instálalos a través de rustup (sitio oficial rustup.rs). Verifica la versión: rustc --version
  • \n
  • Token de bot de Telegram — obténlo de @BotFather en Telegram. Simplemente envía /newbot y sigue las instrucciones
  • \n
  • Comprensión básica de async/await — en Rust se hace a través de tokio o async-std
  • \n
\n

Usaremos la biblioteca teloxide — es, probablemente, el framework más maduro y documentado para crear bots de Telegram en Rust. Está construida sobre tokio y proporciona una API conveniente para todo tipo de interacciones.

\n\n

Paso 1: Creación del proyecto e instalación de dependencias

\n

Abre la terminal y ejecuta:

\n
cargo new my_telegram_bot\ncd my_telegram_bot
\n

Ahora edita el archivo Cargo.toml, agregando las dependencias:

\n
[package]\nname = "my_telegram_bot"\nversion = "0.1.0"\nedition = "2021"\n\n[dependencies]\nteloxide = { version = "0.12", features = ["macros"] }\ntokio = { version = "1", features = ["full"] }\nlog = "0.4"\nenv_logger = "0.10"
\n

Explicación: teloxide es nuestra herramienta principal, tokio es el runtime asíncrono, log y env_logger son para un registro (logging) conveniente.

\n\n

Paso 2: Primer lanzamiento — bot eco

\n

Escribamos un bot muy simple que responda con el mismo texto que se le envió. Reemplaza el contenido de src/main.rs con:

\n
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n    env_logger::init();\n    log::info!("Iniciando bot eco...");\n\n    let bot = Bot::from_env();\n\n    teloxide::repl(bot, |bot: Bot, msg: Message| async move {\n        if let Some(text) = msg.text() {\n            bot.send_message(msg.chat.id, text).await?;\n        }\n        Ok(())\n    })\n    .await;\n}
\n

Ten en cuenta: Bot::from_env() busca la variable de entorno TELOXIDE_TOKEN. Crea un archivo .env en la raíz del proyecto o exporta el token manualmente:

\n
export TELOXIDE_TOKEN="tu_token_del_bot"
\n

Ejecuta el bot: cargo run. Envíale cualquier mensaje en Telegram — debería responder. ¡Felicidades, tu primer bot de Telegram en Rust está funcionando!

\n\n

Paso 3: Manejo de comandos y filtrado de mensajes

\n

Un simple eco es aburrido. Agreguemos los comandos /start y /help. Usaremos las macros de teloxide para crear una máquina de diálogo (dialogue).

\n
use teloxide::prelude::*;\nuse teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "Comandos disponibles:")]\nenum Command {\n    #[command(description = "Iniciar conversación")]\n    Start,\n    #[command(description = "Mostrar ayuda")]\n    Help,\n}\n\nasy                

Blogs

Book Recommendations