تتيح لك هذه المكتبة كتابة روبوت برقية بلغة الصدأ. إنه عبارة عن غلاف كامل تقريبًا لـ Telegram Bot API ويستخدم Hyper لإرسال الطلبات إلى خادم Telegram. تُرجع كل استدعاء وظيفة Telegram مستقبلًا يحمل الروبوت الفعلي والإجابة.
أضف هذا إلى Cargo.toml
[ dependencies ]
telebot = " 0.3.1 " يوضح هذا المثال الاستخدام الأساسي لمكتبة Telebot. إنه ينشئ معالجًا جديدًا لأمر "/رد" بسيط ويجيب على النص المستلم. استطلاعات Tokio EventLoop كل 200 مللي ثانية للحصول على تحديثات جديدة وتطابقها مع الأحداث المسجلة. إذا كان الأمر يتطابق مع "/الرد" ، فسوف يتصل بالوظيفة وتنفيذ المستقبل الذي تم إرجاعه.
use telebot :: Bot ;
use futures :: stream :: Stream ;
use std :: env ;
// import all available functions
use telebot :: functions :: * ;
fn main ( ) {
// Create the bot
let mut bot = Bot :: new ( & env :: var ( "TELEGRAM_BOT_KEY" ) . unwrap ( ) ) . update_interval ( 200 ) ;
// Register a reply command which answers a message
let handle = bot . new_cmd ( "/reply" )
. and_then ( | ( bot , msg ) | {
let mut text = msg . text . unwrap ( ) . clone ( ) ;
if text . is_empty ( ) {
text = "<empty>" . into ( ) ;
}
bot . message ( msg . chat . id , text ) . send ( )
} )
. for_each ( |_| Ok ( ( ) ) ) ;
bot . run_with ( handle ) ;
} كان المثال السابق بسيطًا للغاية مع معالج واحد فقط ولا يوجد خطأ في التعامل مع الأخطاء. إذا كنت ترغب في رؤية واحدة أخرى موضحة وتوضيح ، يرجى الاطلاع هنا.
يستخدم هذا الصندوق مشتقًا مخصصًا لإنشاء وظائف من Telegram API. لذلك يتم وصف كل وظيفة كاملة مع بنية في الوظائف. من أجل العثور على وظيفة ، يمكن استخدام علامة البنية. على سبيل المثال النظر في SendLocation:
/// Use this method to send point on the map. On success, the sent Message is returned.
# [ derive ( TelegramFunction , Serialize ) ]
# [ call = "sendLocation" ]
# [ answer = "Message" ]
# [ function = "location" ]
pub struct SendLocation {
chat_id : u32 ,
latitude : f32 ,
longitude : f32 ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
disable_notification : Option < bool > ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
reply_to_message_id : Option < u32 > ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
reply_markup : Option < NotImplemented >
} يحدد الحقل "الدالة" اسم الوظيفة في واجهة برمجة التطبيقات المحلية. يمكن تغيير كل حقل اختياري في الهيكل عن طريق استدعاء وظيفة إضافية باسم الحقل. على سبيل المثال لإرسال موقع باريس للدردشة 432432 دون إخطار: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
مرخصة تحت أي من
في خيارك.
ما لم تقل صراحةً خلاف ذلك ، فإن أي مساهمة تم تقديمها عن عمد لإدراجها في العمل بواسطتك ، كما هو محدد في ترخيص Apache-2.0 ، تكون مرخصة مزدوجة على النحو الوارد أعلاه ، دون أي شروط أو شروط إضافية.