Criando um bot do Telegram em Rust: guia passo a passo para os corajosos

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

Bot do Telegram em Rust: por que vale a pena tentar?

\n

Rust não é apenas mais uma linguagem de programação de sistemas. Ele oferece velocidade incrível, segurança de memória sem coletor de lixo e concorrência impressionante. Em um mundo onde cada milissegundo de latência pode custar um usuário, um bot do Telegram em Rust se torna um trunfo na manga do desenvolvedor. Você obtém desempenho comparável ao C++, mas com uma sintaxe muito mais agradável e um sistema de tipos rigoroso que detecta erros em tempo de compilação.

\n

Neste guia, percorreremos o caminho desde a instalação das ferramentas até a publicação de um bot funcional. Você aprenderá como processar comandos, trabalhar com estados e até mesmo implantar o bot em um servidor. Se você já conhece os fundamentos do Rust, mas nunca escreveu bots — seja bem-vindo. Se você é iniciante em Rust — não se preocupe, vamos avançar passo a passo.

\n\n

O que você precisa para começar

\n

Antes de mergulhar no código, certifique-se de ter:

\n
    \n
  • Rust e Cargo — instale via rustup (site oficial rustup.rs). Verifique a versão: rustc --version
  • \n
  • Token do bot do Telegram — obtenha-o com @BotFather no Telegram. Basta enviar /newbot e seguir as instruções
  • \n
  • Compreensão básica de async/await — em Rust, isso é feito através de tokio ou async-std
  • \n
\n

Usaremos a biblioteca teloxide — este é, provavelmente, o framework mais maduro e documentado para criar bots do Telegram em Rust. Ele é construído sobre tokio e fornece uma API conveniente para todos os tipos de interações.

\n\n

Passo 1: Criando o projeto e instalando dependências

\n

Abra o terminal e execute:

\n
cargo new my_telegram_bot\ncd my_telegram_bot
\n

Agora edite o arquivo Cargo.toml, adicionando as dependências:

\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

Explicação: teloxide é nossa ferramenta principal, tokio é o runtime assíncrono, log e env_logger são para logging conveniente.

\n\n

Passo 2: Primeira execução — bot eco

\n

Vamos escrever um bot simples que responde com o mesmo texto que foi enviado. Substitua o conteúdo de src/main.rs por:

\n
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n    env_logger::init();\n    log::info!("Iniciando o 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

Observe: Bot::from_env() procura a variável de ambiente TELOXIDE_TOKEN. Crie um arquivo .env na raiz do projeto ou exporte o token manualmente:

\n
export TELOXIDE_TOKEN="seu_token_do_bot"
\n

Execute o bot: cargo run. Envie qualquer mensagem para ele no Telegram — ele deve responder. Parabéns, seu primeiro bot do Telegram em Rust está funcionando!

\n\n

Passo 3: Processamento de comandos e filtragem de mensagens

\n

Um simples eco é chato. Vamos adicionar os comandos /start e /help. Usaremos as macros do teloxide para criar uma 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 disponíveis:")]\nenum Command {\n    #[command(description = "Iniciar conversa")]\n    Start,\n    #[command(description = "Mostrar ajuda")]\n    Help,\n}\n\nasy                

Blogs

Book Recommendations