يمكن ايضا استخدام Telegram Bot API في مكتبة TeleBot يعتمد على استدعاء الدوال (الميثودات) المتوفرة في المكتبة للتفاعل مع خادم Telegram وتنفيذ العمليات مثل استقبال الرسائل، إرسال الردود، وإدارة المحادثات. إليك شرحًا عمليًا خطوة بخطوة لكيفية استخدام الـ API في مكتبة TeleBot:
---
1. إعداد البوت والحصول على الـ Token:
قم بإنشاء بوت باستخدام BotFather على Telegram واحصل على Token.
استخدم هذا التوكن لتوصيل البوت بخادم Telegram.
الكود:
import telebot
TOKEN = "YOUR_TOKEN_HERE"
bot = telebot.TeleBot(TOKEN)
---
2. استقبال الرسائل النصية:
يمكن تحديد استجابة البوت لرسائل معينة باستخدام message handlers.
الميثود @bot.message_handler تستقبل الرسائل وتنقلها لمعالج محدد.
مثال:
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, "مرحبًا! كيف أساعدك؟")
في هذا المثال:
يتم الرد على الرسائل التي تحتوي على الأمر /start أو /help.
يتم استخدام الميثود reply_to للرد مباشرةً على رسالة المستخدم.
---
3. إرسال الرسائل والوسائط:
يتم إرسال المحتوى للمستخدمين باستخدام دوال الـ API مثل:
send_message: لإرسال نصوص.
send_photo: لإرسال الصور.
send_document: لإرسال الملفات.
مثال:
chat_id = 123456789 # استبدل بـ chat_id الخاص بالمستخدم
bot.send_message(chat_id, "هذه رسالة نصية")
bot.send_photo(chat_id, "https://example.com/photo.jpg")
---
4. إنشاء أزرار تفاعلية:
Telegram Bot API يدعم Reply Keyboards وInline Keyboards.
يمكن إنشاء الأزرار باستخدام كائنات المكتبة مثل ReplyKeyboardMarkup وInlineKeyboardMarkup.
مثال على أزرار لوحة مفاتيح عادية:
markup = telebot.types.ReplyKeyboardMarkup(row_width=2)
button1 = telebot.types.KeyboardButton("زر 1")
button2 = telebot.types.KeyboardButton("زر 2")
markup.add(button1, button2)
bot.send_message(chat_id, "اختر:", reply_markup=markup)
مثال على أزرار مضمنة:
markup = telebot.types.InlineKeyboardMarkup()
button = telebot.types.InlineKeyboardButton("زر مضمن", url="https://example.com")
markup.add(button)
bot.send_message(chat_id, "اضغط الزر:", reply_markup=markup)
---
5. الاستجابة للأحداث (Polling):
لجعل البوت يستمع للرسائل والأحداث، يتم استخدام الميثود polling.
الكود:
bot.polling()
يتم تنفيذ هذه الميثود في نهاية الكود بعد تعريف جميع الأحداث والردود.
---
6. معالجة البيانات المتقدمة:
يمكنك استخدام States لإنشاء محادثات متعددة الخطوات بناءً على حالة المستخدم.
مثال:
user_states = {}
@bot.message_handler(func=lambda message: True)
def step_one(message):
user_states[message.chat.id] = "step_two"
bot.reply_to(message, "أدخل الخطوة التالية")
# تحقق من الحالة
@bot.message_handler(func=lambda message: user_states.get(message.chat.id) == "step_two")
def step_two(message):
bot.reply_to(message, "تم الوصول للخطوة الثانية!")
---
7. التعامل مع الأخطاء:
يمكن استخدام الكتل try...except لمعالجة أي أخطاء أثناء استدعاء API.
مثال:
try:
bot.send_message(chat_id, "مرحبًا!")
except Exception as e:
print(f"حدث خطأ: {e}")
---
الخلاصة:
يتم استخدام API عبر استدعاء دوال المكتبة التي ترسل أو تستقبل البيانات من خادم Telegram.
يتم التحكم في البيانات (الرسائل، الردود، الوسائط) من خلال معرفات المستخدمين أو الرسائل.
المكتبة تسهل التعامل مع واجهة Telegram Bot API بشكل كبير مقارنةً باستخدام الطلبات HTTP الخام.