रस्ट में चैट-बॉट: एक शाम में विचार से तैयार बॉट तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

रस्ट आपके चैट-बॉट के 'दिमाग' में गोली क्यों है

\n\n

अगर आप Python में बॉट लिखने के आदी हैं और सोचते हैं कि इससे तेज़ कुछ नहीं हो सकता — तो आपने Rust को नहीं आज़माया। Rust सिर्फ गति नहीं देता, बल्कि हर बाइट पर नियंत्रण देता है। रस्ट में चैट-बॉट बिजली की गति से काम करते हैं, बहुत कम मेमोरी खपत करते हैं, और रनटाइम त्रुटियों से नहीं गिरते। इस गाइड में हम एक वास्तविक Telegram-बॉट बनाएंगे जो कमांड प्रोसेस करता है, संदेशों का जवाब देता है, और ऐसा प्रदर्शन देता है जो इंटरप्रेटेड भाषाओं के लिए असंभव है।

\n\n

हम शुरुआत से बॉट लिखेंगे, teloxide और reqwest क्रेट का उपयोग करके। आप देखेंगे कि एसिंक्रोनस रस्ट हजारों अनुरोधों को कितनी आसानी से संभालता है, और क्यों रस्ट में चैट-बॉट बनाना आपके प्रोजेक्ट की स्थिरता में निवेश है।

\n\n

पर्यावरण सेटअप और पहला रन

\n\n

कोड लिखने से पहले, सुनिश्चित करें कि आपके पास Rust स्थापित है। यदि नहीं, तो यह चलाएँ:

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

cargo को PATH में जोड़ें और एक नया प्रोजेक्ट बनाएँ:

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

अब Cargo.toml खोलें और निर्भरताएँ जोड़ें:

\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

ये क्रेट हमारे बॉट की नींव हैं। teloxide Telegram API के लिए एक शक्तिशाली फ्रेमवर्क है, और reqwest HTTP अनुरोध (जैसे बाहरी API) करने की अनुमति देगा।

\n\n

टोकन प्राप्त करें और बॉट का 'कंकाल' लिखें

\n\n

@BotFather पर जाएँ, एक नया बॉट बनाएँ और टोकन कॉपी करें। इसे पर्यावरण चर में सहेजें:

\n\n
export TELOXIDE_TOKEN=आपका_टोकन_यहाँ
\n\n

अब बॉट का सबसे सरल संस्करण लिखें जो /start कमांड का जवाब देता है:

\n\n
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n    pretty_env_logger::init();\n    log::info!("रस्ट में चैट-बॉट शुरू कर रहे हैं...");\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, "नमस्ते! मैं रस्ट में बना बॉट हूँ 🦀")\n                    .await?;\n            }\n        }\n        Ok(())\n    })\n    .await;\n}
\n\n

cargo run चलाएँ और बॉट को /start लिखें। अगर सब ठीक है — आपको अभिवादन मिलेगा। ध्यान दें: teloxide के साथ रस्ट में बॉट लिखना न्यूनतम कोड की आवश्यकता है, लेकिन अधिकतम प्रदर्शन देता है।

\n\n

यह कैसे काम करता है?

\n
    \n
  • Bot::from_env() — पर्यावरण चर TELOXIDE_TOKEN से टोकन पढ़ता है।
  • \n
  • teloxide::repl — संदेश प्रसंस्करण का अनंत लूप।
  • \n
  • प्रत्येक संदेश क्लोजर को भेजा जाता है, जहाँ हम टेक्स्ट की जाँच करते हैं और उत्तर भेजते हैं।
  • \n
\n\n

कमांड और आर्गुमेंट प्रोसेसिंग जोड़ना

\n\n

सरल उत्तर — उबाऊ है। चलिए /echo कमांड बनाते हैं जो उपयोगकर्ता के टेक्स्ट को दोहराता है। इसके लिए teloxide से Command-एनोटेशन का उपयोग करें:

\n\n
use teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "उपलब्ध कमांड:")]\nenum Command {\n    #[command(description = "अभिवादन दिखाएँ।")]\n    Start,\n    #[command(description = "आपका टेक्स्ट दोहराएँ।")]\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, "नमस्ते! मैं रस्ट में इको-बॉट हूँ।").await?;\n        }\n        Command::Echo(text) => {\n            bot.send_message(msg.chat.id                

ब्लॉग

पुस्तक अनुशंसाएँ