Telegram bot loyihasini ishga tushirib olish uchun namuna

cPanel-da telegram bot loyihasini Flask va web-hooklar orqali ishga tushirib olish uchun namuna

Namuna uchun olingan loyiha

Biz tayyorlagan telegram bot loyihasi bu eng sodda python loyihalardan. U ishga tushgach, agar siz "salom", "hi", yoki "привет" deb yozsangiz u sizga alik qaytaradi. Bu uch so'zdan boshqa har qanday xabar uchun esa u sizdan uch kalit so'zdan birini yozishingiz kerakligini aytib javob qaytaradi.

Loyiha juda oddiy bo'lgani bilan uni production uchun tayyorlash va serverga joylash biroz murakkab bo'lib tuyilishi mumkin. Sababi aynan cPanel-ga bu kabi loyihani joylash va ishga tushirib olish o'ziga yarasha tartib qoidalarni talab qiladi.

Local muhitda - kompyuteringizda oddiy polling(doimiy "biror yangi xabar bormi" so'rovi bilan telegram-dan so'rab turuvchi loop) bilan telegram botni tekshirib olaverasiz. VDS/VPS serverlarida va tayyor panel, masalan, cPanel muhitlarida esa o'z tartib qoidalari mavjud bo'ladi.

Nega Flask va webhook-dan foydalanish kerak

Eng to'g'ri yo'li wbhooklar va minimal frameworklardan biri, masalan, biz ishlatadigan Flask-ni ishlatish bo'ladi. Ya'ni webhook-lar bilan biz doimiy telegram serveridan "yangi xabar bormi?" deb so'rayvermaymiz. Telegram o'zi biz tasdiqlagan URL ga yangi xabarni yetkazib turadi. Flask esa mana shunday webhook xabarlarni qabul qilib, qayta ishlash uchun qulay muhit vazifasini bajarib beradi.

Loyihani yuklab olish

Namunaviy loyihani .zip formatida yuklab olish

telegram_bot-sample.zip

Loyihani cPanel-da ishga tushirish

Loyiha uchun subdomen yaratish

cPanel → Domains → Create A New Domain

Loyiha uchun alohida subdomen yaratib olamiz. Sababi telegram faqat https protokol bilan ishlaydi, buning uchun esa biz tg-bot.scroll.uz subdomenini yaratib olamiz va u uchun SSL sertifikat olinganiga ishonch hosil qilib olamiz.

Subdomen yaratilishi ayni shu nomdagi papkani ham yaratadi

Loyiha uchun Python App (yurituvchi muhit ilovasi)ni yaratib olish

cPanel → Setup Python App → Create Application

  1. Python version - Flask va boshqa kutubxonalar versiyasiga mos Python versiyasini tanlab olamiz;
  2. Application root - Loyiha papkasi, loyiha ishga tushadigan papka. Bizning holatda subdomenimiz uchun yaratilgan papka - tg-bot.scroll.uz bo'ladi. Agar siz asosiy domenga sozlayotgan bo'lsangiz, unda public_html;
  3. Application URL - Bu ilova uchun tanlanadigan domen nomi. Bizning holatda tg-bot.scroll.uz subdomeni tanlanadi;
  4. "Application startup file" va "Application Entry point" qismlariga hech narsa kiritish shart emas. Ilova yaratilishida ular avtomatik passenger_wsgi.py va application qiymatlariga sozlanadi;
  5. Har ehtimolga qarshi, loglarni o'zida saqlovchi .log faylni sozlab qo'yamiz. Keyinchalik, agar loyihada biror muammo yuzaga kelsa, buning sababini ana o'sha log fayldan ko'rib, aniqlash mumkin bo'ladi.

Ilova yaratilgach uning papkasini ochib, muhitni aktivlashtirib olish uchun tayyor terminal komandasi yuqori qismda taqdim qilinadi. Uni biror joyga vaqtincha saqlab qo'yamiz. Birozdan keyin Terminal orqali kutubxonalarni o'rnatib olishda bu buyruq amali kerak bo'ladi.

Loyiha arxivini serverga yuklash

cPanel → File Manager → /home/scroll/tg-bot.scroll.uz

Loyiha arxivini serverning kerakli joyiga yuklash uchun "File Manager" interfeysi orqali subdomen papkasini ochib olamiz va "Upload"(yuklash) tugmasini bosamiz:

Loyiha arxivini tanlab, yuklaymiz:

Yuklash yakunlangach ortga qaytishni bosamiz:

Yuklangan arxivni arxivdan chiqaramiz:

Shu tariqa loyiha fayllarini serverning kerakli papkasiga yuklab olgan bo'lamiz.

Loyihani production uchun konfiguratsiya qilish / telegram bot yaratish

Birinchi ish - sizga loyiha ichida sample.passenger_wsgi.py fayli berilgan bo'ladi. Uning kodini passenger_wsgi.py fayliga ko'chirib o'ting va saqlang.

Ikkinchisi esa - @BotFather orqali telegram botni yaratib oling va bot token qiymatini loyihadagi config.py fayliga, kerakli qismiga ko'chib o'tib saqlang.

Kutubxonalarni o'rnatish

cPanel → Terminal

Terminal orqali avval "Python App" da berilgan buyruqdan foydalanib, env ni aktivlashtirib olamiz.

So'ng esa requirements.txt faylidan foydalanib, barcha kerakli kutubxonalarni o'rnatib olamiz:

pip install -r requirements.txt
Ilovani qayta ishga tushiramiz

cPanel → Setup Python App

Ilova interfeysini ochamiz va uni qayta ishga tushiramiz:

Telegramga bir martalik webhook URL manzilini ko'rsatib yuboramiz

cPanel → Terminal

Bu amal bilan telegram webhook so'rovlarini (javob xabarlarini) qaysi manzilga jo'natishni o'zida sozlab oladi.

Buning uchun Terminal-ga qaytamiz va quyidagi kabi buyruqni ishga tushiramiz:

curl -F "url=https://<YOUR_DOMAIN>/webhook" \
   https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook

Bu albatta namunaviy buyruq. Undagi <YOUR_DOMAIN> va <YOUR_BOT_TOKEN> o'rniga mos keladigan qiymatlar qo'yilishi kerak.

Masalan, bizning vaqtincha yaratib olgan domen va tokenimiz bilan u quyidagicha holatga keladi:

curl -F "url=https://tg-bot.scroll.uz/webhook" \
   https://api.telegram.org/bot8667036217:AAFrlLgJK-7jmFrYzpe6uYHMUQ8s55BzHSs/setWebhook

Rasmdagi kabi natija bizga URL sozlanishi muvaffaqiyatli kechganini ko'rsatadi.

Botni tekshirib olamiz

Ko'rib turganingizdek, bot o'z vazifasini bajaryapti. Siz esa bizning eng minimal loyihani, unda jarayon qanday amalga oshirilganini mustaqil ko'rib chiqing va o'z loyihangizga tadbiq qiling.

Namunaviy loyihani cPanel dan o'chirish

Biz yaxshi e'tibor qaratmaydigan, ammo to'g'ri bajarilmasa, kutilmagan muammolarga, qiyinchiliklarga olib keladigan vaziyatlar bo'ladi. Shulardan biri bu "Setup Python App" orqali yaratilgan loyihani to'g'ri yo'l bilan o'chirish hisoblanadi. Agar loyihani o'chirish tartibi to'g'ri bajarilmasa, kutilmagan muammolar kelib chiqishi mumkin.

Ilovani o'chirish

cPanel → Sutup Python App

Eng birinchi o'rinda ilova to'xtatilishi(stop) so'ng o'chirishga berilishi kerak (delete):

Subdomenni o'chirish

cPanel → Domains → Manage

So'ngra namuna sifatida yaratilgan subdomenni o'chirib yuborsak bo'ladi:

Loyiha papkasini o'chirish

cPanel → File Manager

Subdomen o'chirilishi uning papkasini o'chirmaydi. Loyiha papkasini o'zimiz, "File Manager" interfeysi orqali amalga oshiramiz:

Shu tariqa loyiha muammolarsiz to'liq o'chirilgan bo'ladi.