Erstellen eines Telegram-Bots in Rust: Eine Schritt-für-Schritt-Anleitung für Mutige

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Telegram-Bot in Rust: Warum es einen Versuch wert ist?

\n

Rust 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.

\n

In 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\n

Was Sie für den Start benötigen

\n

Bevor 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 /newbot und folgen Sie den Anweisungen
  • \n
  • Grundlegendes Verständnis von async/await – in Rust geschieht dies über tokio oder async-std
  • \n
\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\n

Schritt 1: Projekterstellung und Abhängigkeiten installieren

\n

Öffnen Sie das Terminal und führen Sie Folgendes aus:

\n
cargo new my_telegram_bot\ncd my_telegram_bot
\n

Bearbeiten Sie nun die Datei Cargo.toml und fügen Sie die Abhängigkeiten hinzu:

\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

Erklärung: teloxide ist unser Hauptwerkzeug, tokio ist die asynchrone Laufzeitumgebung, log und env_logger dienen der praktischen Protokollierung.

\n\n

Schritt 2: Erster Start – Echo-Bot

\n

Schreiben wir einen ganz einfachen Bot, der mit demselben Text antwortet, der ihm gesendet wurde. Ersetzen Sie den Inhalt von src/main.rs durch:

\n
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}
\n

Beachten 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:

\n
export TELOXIDE_TOKEN="Ihr_Bot_Token"
\n

Starten 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!

\n\n

Schritt 3: Befehlsverarbeitung und Nachrichtenfilterung

\n

Ein 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.

\n
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                

Blogs

Buchempfehlungen