Bot Telegram en Rust : pourquoi essayer ?
\nRust n'est pas qu'un énième langage de programmation système. Il offre une vitesse incroyable, une sécurité mémoire sans ramasse-miettes et une concurrence impressionnante. Dans un monde où chaque milliseconde de latence peut coûter un utilisateur, un bot Telegram en Rust devient un atout dans la manche du développeur. Vous obtenez des performances comparables à C++, mais avec une syntaxe bien plus agréable et un système de typage strict qui détecte les erreurs à la compilation.
\nDans ce guide, nous parcourrons le chemin allant de l'installation des outils à la publication d'un bot fonctionnel. Vous apprendrez à traiter des commandes, à gérer des états et même à déployer le bot sur un serveur. Si vous connaissez déjà les bases de Rust mais n'avez jamais écrit de bots, bienvenue. Si vous êtes débutant en Rust, n'ayez crainte, nous avancerons pas à pas.
\n\nCe dont vous aurez besoin pour commencer
\nAvant de plonger dans le code, assurez-vous d'avoir :
\n- \n
- Rust et Cargo — installez via
rustup(site officiel rustup.rs). Vérifiez la version :rustc --version\n - Un token de bot Telegram — obtenez-le auprès de @BotFather sur Telegram. Envoyez simplement
/newbotet suivez les instructions \n - Une compréhension de base d'async/await — en Rust, cela se fait via
tokioouasync-std\n
Nous utiliserons la bibliothèque teloxide — c'est probablement le framework le plus mature et le mieux documenté pour créer des bots Telegram en Rust. Elle est construite sur tokio et fournit une API pratique pour tous les types d'interactions.
\n\nÉtape 1 : Création du projet et installation des dépendances
\nOuvrez un terminal et exécutez :
\ncargo new my_telegram_bot\ncd my_telegram_bot\nModifiez maintenant le fichier Cargo.toml en ajoutant les dépendances :
[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"\nExplication : teloxide est notre outil principal, tokio est le runtime asynchrone, log et env_logger servent à la journalisation pratique.
Étape 2 : Premier lancement — le bot écho
\nÉcrivons un bot très simple qui répond avec le même texte qu'on lui envoie. Remplacez le contenu de src/main.rs par :
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n env_logger::init();\n log::info!("Lancement du bot écho...");\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}\nNotez que Bot::from_env() cherche la variable d'environnement TELOXIDE_TOKEN. Créez un fichier .env à la racine du projet ou exportez le token manuellement :
export TELOXIDE_TOKEN="votre_token_de_bot"\nLancez le bot : cargo run. Envoyez-lui n'importe quel message sur Telegram — il devrait répondre. Félicitations, votre premier bot Telegram en Rust fonctionne !
Étape 3 : Traitement des commandes et filtrage des messages
\nUn simple écho, c'est ennuyeux. Ajoutons les commandes /start et /help. Utilisons les macros de teloxide pour créer une machine à dialogues (dialogue).
use teloxide::prelude::*;\nuse teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "Commandes disponibles :")]\nenum Command {\n #[command(description = "Démarrer la conversation")]\n Start,\n #[command(description = "Afficher l'aide")]\n Help,\n}\n\nasy