وبلاگ شخصی حمیدرضا کاوه

آموزش ساخت ربات تلگرام – قسمت سوم

سلام دوستان.

اگر قسمت اول رو مطالعه نکردید میتونید از اینجا مطالعه کنید و قسمت دوم رو از اینجا .

در این قسمت به کامل کردن بات قسمت قبل و ادامه مبحث Handler ها میپردازیم.

در قست قبل ، بات به اینجا رسید :

حالا بیاید یکم قابلیت های کاربردی به بات اضافه کنیم.میخوایم یه دستور به نام caps ایجاد کنیم که یه متن رو دریافت میکنه و اون رو به صورت حروف بزرگ برمیگردونه.برای ساده کردن کار ،میتونید ارگمان هایی (به صورت لیست، جدا شده با فاصله ) که به دستورات ارسال میشن رو در تابع بازخوانی دریافت کنید:

نکته : به pass_args=True در تعریف CommandHandler دقت کنید.این لازم هست تا handler بدونه که شما میخواید لیست ارگمان های دستور رو به تابع بازخوانی فرستاده بشه.تمام handler ها چنین ارگمان هایی دارن.بعضی ها در تمام handler ها مشابه هستند و بعضی ها اختصاص به تعدادی خاص هستند.اگر برای اولین از یک نوع جدید از handler استفاده میکنید ،با نگاه کردن به مستندات ، میتونید اونایی که براتون مفید هستن رو استفاده کنید.

یکی دیگر از قابلیت های جالب ربات های تلگرا م ، Inline Mode یا حالت خطی هست.اگر میخواید حالت خطی رو به بات خودتون اضافه کنید ، اول باید با BotFather@ صحبت کنید و حالت خطی رو با دستور setinline/ فعال کنید.بعضی اوقات یکم طول میکشه تا بات شما به عنوان یه بات خطی روی کلاینت تلگرامتون ثبت بشه.برای سرعت بخشیدن به این فرایند ،‌میتونید برنامه تلگرامتون رو ری اسارت کنید. (یا گاهی اوقات فقط باید مدتی صبر کنید.)

حالا بیاید حالت خطی رو به بات‌تون اضافه کنیم.شما احتمالا الان دیگه روند کار رو میدونید، اما تعدادی نوع جدید استفاده شده پس بهتره با دقت کنید:

مستندات مرتبط : telegram.ext.InlineQueryHandler, answerInlineQuery

خب الان بات شما ، هم به صورت خطی و هم به صورت دستوری میتونه پیام ها رو به صورت حروف بزرگ برگردونه !

بعضی از کاربران گیج ( 🙂 ) ممکنه سعی کنن پیام هایی به بات بفرستند که بات متوجه اونا نمیشه.پس میتونید از یه MessageHandler و یه فیلتر command استفاده کنید تا به تمام دستوراتی که توسط handler های قبلی تشخیص داده نشدن ، جواب بده.

نکته : این handler باید در اخر اضافه بشه.اگر زودتر اضافه اش کنید ، ممکن قبل از اینکه CommandHandlers بتونه به اپدیت ها نگاهی بندازه ، این handler اجرا بشه.وقتی یه handler اجرا بشه تمام handler های بعد از اون چشم پوشی میشه و اجرا نمیشن.برای حل این مشکل میتونید کلمه کلیدی group (int) رو با مقداری غیر از ۰ به صورت ارگمان به add_handler بدید.

اگر بازی کردن با بات‌تون تموم شده ، میتونید بوسیله دستور زیر بات رو متوقف کنید:

نکته : همونطور که قبلا خوندید ، Updater در یه ریسه (thread) جداگانه اجرا میشه که برای این اموزش خیلی عالی هست.اما اگر شما اسکریپت مینویسین ، احتمالا بخواید که بات رو با Ctrl + C یا ارسال سیگنال به پروسس بات ، متوقف کنید. برای این کار، از ()updater.idle استفاده کنید. نحوه کارش اینجور هست که اجرا رو  بلاک میکنه تا وقتی که یکی از اون دو اتفاق رخ بده. سپس ()updater.stop رو صدا میزنه و به ادامه اجرای اسکریپت میپردازه.

در قسمت بعدی آموزش ، به صف کار (JobQueue) میپردازیم.

دسته بندی ها آموزش, برنامه نویسی

آموزش کتابخانه BeautifulSoup4 پایتون – مقدمه » « آموزش ساخت ربات تلگرام – قسمت دوم

4 دیدگاه

  1. ایول … کارت درسته =)

    اینکه توی آموزش هات مستندات میذاری واقعا کار عالی هست

    ادامه بده منتظر قسمت های بعدی هستم

    شاد و پیروز باشی

    • Hamidreza

      ۱۳۹۶-۱۲-۰۱ — ۱۴:۱۷

      ممنون. نظر لطفتون هست.
      چشم ، درگیر دانشگاه هستم، وقت ازاد پیدا کردم، قسمت بعدی رو مینویسم

  2. عالی بود. امکان ارسال پیام به گروه رو هم کاش بزارید.

    • Hamidreza

      ۱۳۹۶-۱۲-۰۷ — ۱۵:۰۶

      سلام.ممنون ، لطف داربد.
      با استفاده از تابع send_message میتونید به گروه ها هم ارسال کنید. کافیه chat_id گروه رو به جای چت ایدی کاربر بزارید.

دیدگاهتان را بنویسید

ایمیل شما منتشر نمی شود

*

کپی رایت © 2018 وبلاگ شخصی حمیدرضا کاوه

طراحی توسط Anders Norenبالا ↑