مرحبا بالجميع! هذا هو الجزء الثاني من المقال الذي سأخصص فيه وقتًا لطلبات البرق والخوادم. إذا لم ير شخص آخر الجزء الأول ، فأنا أوصي
بقراءته . سيصف الجزء الثالث على الأرجح كيفية التعامل مع قواعد البيانات. حسنا ، إذا كان لديك أسئلة مرة أخرى ، ثم اكتب لي في برقية:
dimagorovtsovما هي الرسالة؟
ربما سأل الكثير ممن كتبوا الروبوت في مقالتي السابقة عن الرسالة ولماذا ، على سبيل المثال ، لإرسال رسالة ، نحتاج إلى تحديد message.chat.id في معلمات دالة send_message؟ لمعرفة ذلك ، دعونا نعرض الرسالة في وحدة التحكم:
@bot.message_handler(commands=['start']) def start(message): print(message)
الآن عندما ندخل الأمر
/ start ، يرسل الروبوت الخاص بنا كمية هائلة من المعلومات. كل ما حصلنا عليه الآن هو استجابة json. Json هو تنسيق بسيط لتخزين البيانات المنظمة. يتم عرض كل شيء بالتنسيق: "مفتاح": القيمة. لنلقِ نظرة على ما حصلت عليه:
{ 'content_type':'text', 'message_id':573, 'from_user':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'username':'dimagorovtsov', 'last_name':'Gorovtsov', 'language_code':'ru' }, 'date':1565206363, 'chat':{ 'type':'private', 'last_name':'Gorovtsov', 'first_name':'Dmitry', 'username':'dimagorovtsov', 'id':687595402, 'title':None, 'all_members_are_administrators':None, 'photo':None, 'description':None, 'invite_link':None, 'pinned_message':None, 'sticker_set_name':None, 'can_set_sticker_set':None }, 'forward_from_chat':None, 'forward_from':None, 'forward_date':None, 'reply_to_message':None, 'edit_date':None, 'media_group_id':None, 'author_signature':None, 'text':'/start', 'entities':[ <telebot.types.MessageEntity object at 0x03807F50> ], 'json':{ 'message_id':573, 'from':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'language_code':'ru' }, 'chat':{ 'id':687595402, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'type':'private' }, 'date':1565206363, 'text':'/start', 'entities':[ { 'offset':0, 'length':6, 'type':'bot_command' } ] } }
على سبيل المثال ، من كل هذه المعلومات ، نريد الحصول على معرف الدردشة التي أرسلت منها الرسالة. للقيام بذلك ، انتقل إلى مفتاح الدردشة.
الاستعلام: print(message.chat)
الجواب هو: {'type': 'private', 'last_name': 'Gorovtsov', 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'id': 687595402, 'title': None, 'all_members_are_administrators': None, 'photo': None, 'description': None, 'invite_link': None, 'pinned_message': None, 'sticker_set_name': None, 'can_set_sticker_set': None}
انظر ، يحتوي مفتاح الدردشة على عدد قليل من المفاتيح: first_name ، last_name ، اسم المستخدم ... ولكل منهما قيمته الخاصة. الآن دعنا ننتقل إلى مفتاح الهوية:
print(message.chat.id)
كما ترون ، من أجل الحصول على القيمة المطلوبة ، تحتاج فقط إلى كتابة اسم المفاتيح من خلال نقطة. انظر الآن إلى استجابة الخادم:
687595402
كل شيء يسير كما ينبغي! حصلنا على معرف الدردشة ، تمامًا كما أردنا! الآن الحصول على اسم المرسل. هنا ، كما لاحظت ، تحتاج إلى استخدام مفتاح
from_user .
الاستعلام: print(message.from_user)
الجواب هو: {'id': 687595402, 'is_bot': False, 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'last_name': 'Gorovtsov', 'language_code': 'ru'}
الآن نحصل على قيمة مفتاح
first_name :
print(message.from_user.first_name)
حسنا ، هذا كل شيء! في بضع ثوان تمكنا من الحصول على معرف الدردشة واسمي في البرقية. ومرة أخرى ، لأولئك الذين لا يفهمون:

للحصول على قيمة مفتاح first_name ، نحتاج أولاً إلى الانتقال إلى مفتاح الدردشة ، وبعد ذلك فقط إلى first_name!
انظر الآن ، من أجل إرسال رسالة إلى أي دردشة نحتاج إلى تحديد العديد من المعلمات في وظيفة send_message. المعلمة الأولى هي chat_id ، معرف الدردشة نفسه. والثاني هو النص ، نص الرسالة. وأنت تفكر في ذلك ، بدلاً من كتابة message.chat.id ، يمكننا كتابة بياناتنا! هذه هي الطريقة التي يمكنك بها إرسال رسالة إلى نفسك إذا حددت هويتك في المعلمات:
bot.send_message(< id>, ' ')
حسنًا ، عندما نكتب message.chat.id ، نعني أن الروبوت سيرسل رسالة إلى الدردشة التي تم استدعاؤها.
استنتاج
حسنًا ، هذا كل شيء! آمل أن تفهم كيفية تلقي البيانات من الخادم ومعالجتها واستخدامها عند الضرورة. شكرا لاهتمامكم