Bot em Rust: do zero ao bot pronto em uma noite

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 Rust é um tiro certeiro para o seu chatbot

\n\n

Se você está acostumado a escrever bots em Python e acha que não tem como ser mais rápido — você ainda não experimentou o Rust. Rust não oferece apenas velocidade, mas controle total sobre cada byte. Chatbots em Rust são extremamente rápidos, consomem pouquíssima memória e não quebram com erros de execução. Neste guia, vamos construir um bot real para o Telegram que processa comandos, responde mensagens e entrega uma performance que linguagens interpretadas não conseguem alcançar.

\n\n

Vamos escrever o bot do zero, usando as bibliotecas teloxide e reqwest. Você verá como o Rust assíncrono lida facilmente com milhares de requisições e por que criar um chatbot em Rust é um investimento na estabilidade do seu projeto.

\n\n

Configurando o ambiente e primeiro teste

\n\n

Antes de escrever código, certifique-se de que o Rust está instalado. Caso contrário, execute:

\n\n
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
\n\n

Adicione o cargo ao PATH e crie um novo projeto:

\n\n
cargo new rust_tg_bot\ncd rust_tg_bot
\n\n

Agora abra o arquivo Cargo.toml e adicione as dependências:

\n\n
[dependencies]\nteloxide = { version = "0.12", features = ["macros"] }\nreqwest = { version = "0.11", features = ["json"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1.0", features = ["derive"] }
\n\n

Essas bibliotecas são a base do nosso bot. O teloxide é um framework poderoso para a API do Telegram, e o reqwest permite fazer requisições HTTP (por exemplo, para APIs externas).

\n\n

Obtendo o token e criando o "esqueleto" do bot

\n\n

Acesse o @BotFather, crie um novo bot e copie o token. Salve-o em uma variável de ambiente:

\n\n
export TELOXIDE_TOKEN=seu_token_aqui
\n\n

Agora vamos escrever a versão mais simples do bot, que responde ao comando /start:

\n\n
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n    pretty_env_logger::init();\n    log::info!("Iniciando chatbot em Rust...");\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            if text == "/start" {\n                bot.send_message(msg.chat.id, "Olá! Eu sou um bot em Rust 🦀")\n                    .await?;\n            }\n        }\n        Ok(())\n    })\n    .await;\n}
\n\n

Execute cargo run e envie /start para o bot. Se tudo funcionar, você receberá uma saudação. Perceba: criar um bot em Rust com teloxide exige pouco código, mas oferece o máximo de desempenho.

\n\n

Como isso funciona?

\n
    \n
  • Bot::from_env() — lê o token da variável de ambiente TELOXIDE_TOKEN.
  • \n
  • teloxide::repl — um loop infinito para processar mensagens.
  • \n
  • Cada mensagem é passada para uma closure, onde verificamos o texto e enviamos a resposta.
  • \n
\n\n

Adicionando processamento de comandos e argumentos

\n\n

Responder de forma simples é entediante. Vamos criar o comando /echo, que repete o texto do usuário. Para isso, usamos a anotação Command do teloxide:

\n\n
use teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "Comandos disponíveis:")]\nenum Command {\n    #[command(description = "Mostrar saudação.")]\n    Start,\n    #[command(description = "Repetir seu texto.")]\n    Echo(String),\n}\n\nasync fn answer(bot: Bot, msg: Message, cmd: Command) -> ResponseResult<()> {\n    match cmd {\n        Command::Start => {\n            bot.send_message(msg.chat.id, "Olá! Sou um bot echo em Rust.").await?;\n        }\n        Command::Echo(text) => {\n            bot.send_message(msg.chat.id                

Blogs

Book Recommendations