بوت تيليغرام بلغة رست: لماذا يجب تجربته؟
\nرست ليست مجرد لغة برمجة أنظمة أخرى. إنها توفر سرعة لا تصدق، وأمان للذاكرة بدون جامع القمامة، وتزامنًا رائعًا. في عالم حيث كل ميلي ثانية تأخير قد تكلفك مستخدمًا، يصبح بوت تيليغرام بلغة رست ورقة رابحة في جعبة المطور. تحصل على أداء مشابه لـ C++، ولكن مع بناء جملة أكثر متعة ونظام أنواع صارم يكتشف الأخطاء في مرحلة التجميع.
\nفي هذا الدليل، سننتقل من تثبيت الأدوات إلى نشر بوت يعمل. ستتعلم كيفية معالجة الأوامر، والعمل مع الحالات، وحتى نشر البوت على خادم. إذا كنت على دراية بأساسيات رست ولكنك لم تكتب بوتات من قبل - مرحبًا بك. إذا كنت مبتدئًا في رست - لا تقلق، سنتحرك خطوة بخطوة.
\n\nما ستحتاجه للبدء
\nقبل الغوص في الكود، تأكد من أن لديك:
\n- \n
- رست و Cargo — قم بالتثبيت عبر
rustup(الموقع الرسمي rustup.rs). تحقق من الإصدار:rustc --version\n - رمز بوت تيليغرام — احصل عليه من @BotFather في تيليغرام. فقط أرسل
/newbotواتبع التعليمات \n - فهم أساسي لـ async/await — في رست يتم ذلك عبر
tokioأوasync-std\n
سنستخدم مكتبة teloxide — وهي على الأرجح الإطار الأكثر نضجًا وتوثيقًا لإنشاء بوتات تيليغرام بلغة رست. وهي مبنية على tokio وتوفر API مناسب لجميع أنواع التفاعلات.
\n\nالخطوة 1: إنشاء المشروع وتثبيت التبعيات
\nافتح الطرفية ونفذ:
\ncargo new my_telegram_bot\ncd my_telegram_bot\nالآن قم بتحرير ملف Cargo.toml، وأضف التبعيات:
[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شرح: teloxide — أداتنا الرئيسية، tokio — وقت التشغيل غير المتزامن، log و env_logger — للتسجيل المريح.
الخطوة 2: التشغيل الأول — بوت الصدى
\nلنكتب بوتًا بسيطًا يرد بنفس النص الذي أُرسل إليه. استبدل محتوى src/main.rs بـ:
use teloxide::prelude::*;\n\n#[tokio::main]\nasync fn main() {\n 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 bot.send_message(msg.chat.id, text).await?;\n }\n Ok(())\n })\n .await;\n}\nلاحظ: Bot::from_env() يبحث عن متغير البيئة TELOXIDE_TOKEN. أنشئ ملف .env في جذر المشروع أو قم بتصدير الرمز يدويًا:
export TELOXIDE_TOKEN="رمز_البوت_الخاص_بك"\nقم بتشغيل البوت: cargo run. أرسل له أي رسالة في تيليغرام — يجب أن يرد. تهانينا، أول بوت تيليغرام لك بلغة رست يعمل!
الخطوة 3: معالجة الأوامر وتصفية الرسائل
\nالصدى البسيط ممل. دعنا نضيف الأمرين /start و /help. سنستخدم وحدات الماكرو في teloxide لإنشاء آلة حوار (dialogue).
use teloxide::prelude::*;\nuse teloxide::utils::command::BotCommand;\n\n#[derive(BotCommand)]\n#[command(rename = "lowercase", description = "الأوامر المتاحة:")]\nenum Command {\n #[command(description = "بدء المحادثة")]\n Start,\n #[command(description = "إظهار المساعدة")]\n Help,\n}\n\nasy