Telegram-Bot in Rust: Warum es einen Versuch wert ist?
\nRust ist nicht nur eine weitere Systemprogrammiersprache. Sie bietet unglaubliche Geschwindigkeit, Speichersicherheit ohne Garbage Collector und beeindruckende Nebenläufigkeit. In einer Welt, in der jede Millisekunde Verzögerung einen Nutzer kosten kann, wird ein Telegram-Bot in Rust zum Trumpf im Ärmel des Entwicklers. Sie erhalten eine Leistung, die mit C++ vergleichbar ist, aber mit einer viel angenehmeren Syntax und einem strengen Typsystem, das Fehler bereits zur Kompilierzeit abfängt.
\nIn dieser Anleitung gehen wir den Weg von der Installation der Werkzeuge bis zur Veröffentlichung eines funktionierenden Bots. Sie erfahren, wie Sie Befehle verarbeiten, mit Zuständen arbeiten und den Bot sogar auf einem Server bereitstellen. Wenn Sie bereits mit den Grundlagen von Rust vertraut sind, aber noch nie Bots geschrieben haben – willkommen. Wenn Sie neu in Rust sind – keine Sorge, wir gehen Schritt für Schritt vor.
\n\nWas Sie für den Start benötigen
\nBevor wir in den Code eintauchen, stellen Sie sicher, dass Sie Folgendes haben:
\n- \n
- Rust und Cargo – installieren Sie sie über
rustup(offizielle Website rustup.rs). Überprüfen Sie die Version:rustc --version\n - Telegram-Bot-Token – erhalten Sie ihn von @BotFather in Telegram. Senden Sie einfach
/newbotund folgen Sie den Anweisungen \n - Grundlegendes Verständnis von async/await – in Rust geschieht dies über
tokiooderasync-std\n
Wir werden die Bibliothek teloxide verwenden – dies ist wohl das ausgereifteste und am besten dokumentierte Framework zur Erstellung von Telegram-Bots in Rust. Es basiert auf tokio und bietet eine praktische API für alle Arten von Interaktionen.
\n\nSchritt 1: Projekterstellung und Abhängigkeiten installieren
\nÖffnen Sie das Terminal und führen Sie Folgendes aus:
\ncargo new my_telegram_bot\ncd my_telegram_bot\nBearbeiten Sie nun die Datei Cargo.toml und fügen Sie die Abhängigkeiten hinzu:
[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"\nErklärung: teloxide ist unser Hauptwerkzeug, tokio ist die asynchrone Laufzeitumgebung, log und env_logger dienen der praktischen Protokollierung.
Schritt 2: Erster Start – Echo-Bot
\nSchreiben wir einen ganz einfachen Bot, der mit demselben Text antwortet, der ihm gesendet wurde. Ersetzen Sie den Inhalt von src/main.rs durch:
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n env_logger::init();\n log::info!("Starte Echo-Bot...");\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}\nBeachten Sie: Bot::from_env() sucht nach der Umgebungsvariable TELOXIDE_TOKEN. Erstellen Sie eine Datei .env im Stammverzeichnis des Projekts oder exportieren Sie das Token manuell:
export TELOXIDE_TOKEN="Ihr_Bot_Token"\nStarten Sie den Bot: cargo run. Senden Sie ihm eine beliebige Nachricht in Telegram – er sollte antworten. Herzlichen Glückwunsch, Ihr erster Telegram-Bot in Rust funktioniert!
Schritt 3: Befehlsverarbeitung und Nachrichtenfilterung
\nEin einfaches Echo ist langweilig. Fügen wir die Befehle /start und /help hinzu. Wir verwenden die Makros von teloxide, um eine Dialogmaschine (dialogue) zu erstellen.
use teloxide::prelude::*;\nuse teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "Verfügbare Befehle:")]\nenum Command {\n #[command(description = "Kommunikation starten")]\n Start,\n #[command(description = "Hilfe anzeigen")]\n Help,\n}\n\nasy