كتابة روبوت برقية في بيثون باستخدام جزء مكتبة التيلبوت 1

الاهتمام ، وقد تم نشر الجزء الثاني من المقال ، أوصي قراءته



انحدار غنائي


البوتات اليوم هي أداة متعددة الوظائف ، سواء للعمل أو للترفيه. أنا شخصياً أعتقد أن المستقبل يكمن معهم. بالطبع ، بعد قراءة هذا المقال ، لن تكون قادرًا على إنشاء مشاريع كبيرة ، ولكن الاهتمام والبدء جيد جدًا.

التثبيت والإعداد


للبدء ، دعنا ننزّل بيثون نفسه. يمكنك القيام بذلك على الموقع الرسمي . لا تنس أن تحقق إضافة إلى PATH أثناء التثبيت! بعد تثبيت الثعبان ، نحتاج إلى محرر رمز جيد. JetBrains يأتي لإنقاذ مع PyCharm لها مجانا. نحن قريبون ، يبقى تنزيل مكتبة التيليبوت. للقيام بذلك ، انتقل إلى سطر الأوامر واكتب:

pip install pytelegrambotapi 

إذا سارت الأمور على ما يرام ، يمكننا الاستمرار!

VPN


أعتقد أن الجميع يعرفون حول حظر البرق في روسيا والحل الوحيد ، كما هو الحال دائمًا ، هو VPN. شخصيا ، أوصي Windscribe ، كما أنها تعطيك 2 غيغابايت. حركة المرور خالية تماما!

بوت الأب


في البحث عن telegram ، نجد Bot Farher وننشئ روبوتنا باستخدام الأمر / newbot. ثم أدخل الاسم واسم المستخدم. يرجى ملاحظة أن اسم المستخدم يجب أن ينتهي في الروبوت!

صورة

كما ترى ، لقد حصلنا على رمز مميز خاص بـ api يمكنك التحكم به في روبوتك (في حالتي ، هو: 776550937: AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM ). يمكنك أن تتذكر رمزك ، لكنني أوصي بكتابته.

قانون


لقد حان الوقت الذي ينتظره الجميع. افتح PyCharm وإنشاء مشروع جديد.

صورة

هنا أوصي بوضع كل شيء لي (الاسم ، بالطبع ، يمكن تغييره). بعد إنشاء المشروع ، دعونا ننشئ ملفًا سيكون به رمزنا. انقر بزر الماوس الأيمن فوق المجلد مع مشروعك ، ثم New → Python File. حسنًا ، لنبدأ في كتابة الكود. استيراد مكتبة telebot باستخدام:

 import telebot 

تحتاج الآن إلى إنشاء متغير bot. في الواقع ، يمكن أن يكون اسم المتغير أي شيء ، ولكن أنا معتاد على كتابة الروبوت.

 bot = telebot.TeleBot(' ') 

سوف نكتب ديكور bot .message_handler () ، والذي سيرد به الروبوت لدينا على الأمر / start. للقيام بذلك ، نكتب الأوامر = ['البدء'] بين قوسين. نتيجة لذلك ، يجب أن نحصل على هذا:

 @bot.message_handler(commands=['start']) 

إذا حاولت تشغيل برنامج الروبوت الخاص بك (RMB-> تشغيل) ، فلن ينفعك شيء. أولاً ، في نهاية الشفرة ، نحتاج إلى كتابة bot.polling (). يعد ذلك ضروريًا حتى لا يتم إيقاف برنامج الروبوت على الفور ، لكنه يعمل ويتحقق لمعرفة ما إذا كانت هناك رسالة جديدة على الخادم. وثانيا ، الروبوت لدينا ، حتى لو كان يبحث عن الرسائل ، لا يزال غير قادر على الإجابة على أي شيء. حان الوقت لإصلاحها! بعد التصميم الخاص بنا ، نقوم بإنشاء دالة start_message ، والتي ستأخذ معلمة الرسالة (يمكن أن يكون اسم الوظيفة أي شيء). بعد ذلك ، دعونا ننفذ إرسال الرسائل من الروبوت نفسه. في هذه الوظيفة ، نكتب bot.send_message (message.chat.id ، "مرحبًا ، لقد كتبت لي / بدأت"). انظر ما يجب أن تحصل عليه:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') bot.polling() 

لنفحص ...

صورة

عظيم ، لدينا بوت يعمل! بحيث يستجيب ليس فقط للأوامر ، ولكن أيضًا للرسائل ، أنشئ روبوت ديكور جديد .message_handler () ، وكتب بين قوسين content_types = ['text']. بشكل عام ، هناك العديد من أنواع المحتوى ، على سبيل المثال الموقع ، الصورة ، الصوت ، الملصق ، إلخ. لكننا بحاجة للرد على النص ، أليس كذلك؟ لذلك ، نقوم بإنشاء دالة send_text تأخذ معلمة رسالة. في الوظيفة ، نكتب الشرط:

 @bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ',  ') elif message.text == '': bot.send_message(message.chat.id, ', ') 

إذا كان نص الرسالة هو "Hello" ، فسيجيب الروبوت على "Hello my creator" ، وإذا كان نص الرسالة هو "Bye" ، فسيجيب الروبوت على "Goodbye creator". أنا هنا أعتقد أن كل شيء واضح. لكنك على الأرجح تساءلت ، وإذا كتب المستخدم "مرحبًا" أو "مرحبًا" ، فما الذي يجب عليك فعله في هذا الموقف؟ كل شيء بسيط جدا! في الحالة ، بعد message.text اكتب الوظيفة .lower () ، وفي النص استبدل جميع الأحرف الكبيرة بأحرف صغيرة. الآن لا يستجيب الروبوت الخاص بنا إلى "الترحيب" فحسب ، بل يستجيب أيضًا لـ "PrivT" ، وحتى "PRIVET".

صورة

إليك ما يجب أن تحصل عليه:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling() 

حسنًا ، اكتشفنا النص ، ولكن كيف نرسل ملصقًا على سبيل المثال؟ كل شيء بسيط! كل ملصق له معرفه الخاص ، على التوالي ، ومعرفته ، يمكننا إرساله. هناك طريقتان للحصول على معرف الملصق. الأول (بسيط) - من خلال الروبوت الخاص "ما هو معرف الملصق؟"

صورة

حسنًا ، الطريقة الثانية ، لأولئك الذين لا يبحثون عن طرق سهلة. نقوم بإنشاء مصمم روبوت جديد. message_handler () ، فقط بين قوسين نكتب content_types = ['sticker']. ثم كل شيء كالمعتاد. نقوم بإنشاء وظيفة تأخذ معلمة الرسالة ، ولكن هنا نكتب print (message). نطلق الروبوت.



انظر ، بمجرد إرسال الملصق ، عرض المعلومات على الفور في وحدة التحكم ، وفي النهاية سيكون معرف الملصق الخاص بنا (file_id). دعونا نتأكد من أنه عندما يرسل المستخدم روبوت "أنا أحبك" ، فإن الروبوت يستجيب مع لاصق. ليست هناك حاجة لإنشاء ديكور جديد ، نضيف فقط الحالة التي كانت قبل ذلك. ولكن بدلاً من bot.send_message () نكتب bot.send_sticker () ، وبدلاً من النص نكتب معرف الملصق.

صورة

مبروك ، كل شيء سار! أفكر في كيفية إرسال الصوت والصور وتحديد الموقع الجغرافي ، وستكتشف ذلك بنفسك. أريد أن أوضح لك كيفية صنع لوحة المفاتيح التي سيظهرها الروبوت عند بدء التشغيل. هذا سيجعل الأمر أكثر صعوبة. نقوم بإنشاء متغير keyboard1 ، حيث نكتب telebot.types.ReplyKeyboardMarkup (). هذه الوظيفة تستدعي لوحة المفاتيح. بعد ذلك ، قم بإنشاء الصفوف ، لكن تذكر أنه لا يمكن أن يكون هناك أكثر من 12 صفًا! من أجل إنشائها ، اكتب keyboard1.row (). في الأقواس ، اكتب ما تريد ؛ شخصيًا ، سأكتب "Hello" و "وداعًا". الآن ، للاتصال بلوحة المفاتيح ، دعونا نضيف reply_markup = keyboard1 إلى وظيفة إرسال رسالة عند بدء التشغيل. إليك ما يجب أن تحصل عليه:

 keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) 

نطلق الروبوت ...



ترى أن لوحة المفاتيح كبيرة. لإصلاح هذا ، تحتاج فقط إلى تسجيل True في ReplyKeyboardMarkup (). حسنًا ، إذا كنت تريد إخفاء لوحة المفاتيح بمجرد نقر المستخدم عليها ، فاكتب True آخر. يمكنك قراءة المزيد حول معنى "True" في الوثائق الرسمية .

 keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) 

حسنًا ، هذا كل شيء! بالطبع ، هذا ليس كل روبوتات ممكنة في برقية ، لكنني أوضحت لك الميزات الرئيسية. شكرا لاهتمامكم

كود المصدر:

 import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '  ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling() 


إذا كان لديك أي أسئلة - يمكنك الكتابة إلى برقية dimagorovtsov

Source: https://habr.com/ru/post/ar448310/


All Articles