Tryuklar / Dasturlash
4
06.08.2017 19:10 Erkin 866 0

PHP dasturlash tilida Telegram bot yozish

    Assalomu alaykum. Men ba’zi bir sabablarga ko’ra telegramga bot yozishimga to’g’ri keldi. Buning natijasida ozmi ko’pmi tajribaga ega bo’ldim va ba’zilarini sizlar bilan bo’lishmoqchiman. Xozir biz php dasturlash tilida oddiygina bot yasaymiz.

    Biz internet saytlarda yoki messenjerlarda turli xil qiziq narsalarni o’qiganimizda kim bilandir ulashgimiz, kimgadir junatgimiz keladi. Unda hech qanday messenjer yoki ijtimoiy tarmoqlardagi accout bo’lmasa unga bu o’qigan matnimizni sms tariqasi yubormoqchi bo’lamiz va o’qigan narsamizni belgilab smsga kirib joylashtiramiz. SMS xizmatini xam o’zini standartlari bor, ba’zi bir belgilar qo’shilgandan keyin smsimizni hajmi oshib ketib 4-5 ta sms bo’lib qoladi yoki mms ga o’tib qoladi. Natijada biz uni yubora olmaymiz. Xozir biz ana shunday vaziyatda kerakli matnni sms standartlariga moslab mmsga aylanib ketmaydigan qilib beradigan bot yasaymiz.

 

    - Men PHP dasturlash tilida ishlayman.

    - Bizda web – hostinglar asosan phpga moslashtirilgan yoki chetdan birorta bepul hosting olinsa xam asosan php sozlangan bo’ladi.

   

    Shu sabablarga ko’ra botni PHP tilida yozishga qaror qildim.

 

    Ishni bajarishni asosiy ketma – ketligi quyidagicha.

 

    - Matndagi sms ga “xalaqit” beradigan simvollarni boshqasiga almashtiramiz, Kirilcha qo’shilib qolgan harflarni xam lotin alifbosidagisiga aylantirib chiqadigan funksiya yasaymiz (ko’chiramiz :) ).

    - @botfather dan yangi bot yasab uni boshqarish uchun API kalitini olamiz.

    - Fayllarni hostingga yuklab uni webhook sifatida ko’rsatamiz. (Ba’zi bir terminlarni maqola davomida tushuntirib ketaman).

 

   PHPda berilgan matndagi simvollarni smsga moslab beradigan quyidagicha funksiya yozamiz.

    Endi botga kimdir xabar yuborsa uni shu funksiya orqali qayta tahrirlab egasiga qaytarib yuborishi uchun maxsus kutubxonadan foydalanamiz. Biz ishlatgan kutubxonani quyidagi manzil bo’yicha olishingiz mumkin:
https://github.com/irazasyed/telegram-bot-sdk
    Eslatib o’taman. Bu kutubxona keng imkoniyatli bo’lib men buni faqat ba’zi bir imkoniyatlaridan foydalanganman xolos. To’liq ma’lumot uchun kutubxonani dokumentatsiyasi: https://telegram-bot-sdk.readme.io/docs

  

    Endi yangi php fayl yaratib kutubxonani va funksiyanimiz unga birlashtiramiz:

 

 

  Mana kodlarni xam yozib oldik. Endi uni hostingga yoki shaxsiy serverga chiqarib bot bilan xabar almashishini ta’minlashimiz kerak. Buni esa botni yasab bo’lganimizdan keyin amalga oshirishga qoldiramiz.

 

  Biz yangi bot yasab unga birorta dastur bilan murojaat qilishimiz uchun uni API kalitini olishimiz kerak bo’ladi.

API kalit bilan uni boshqarish uchun va unga xabar yuborilganda u xabarni bizni dasturimizga yuborishi uchun unga webhook sozlamasiga php scriptimizni manzilini ko’rsatib qo’yamiz. Buning uchun telegramda @botfather bilan salomlashamiz ))

 

 

    Yangi bot yasash uchun \new buyrug’ini yuboramiz

    Keyin bizdan botimizga nom berishimizni so’raydi. Men uni String2UTF8 deb nomladim.

    Keyin biz unga manzil kiritishimiz kerak bo’ladi va u oxirida bot qo’shimchasi bilan tugashi kerak. Men uni String2UTF8_bot deb nomladim. Agar biz tanlagan manzil band bo’lsa boshqa manzil topishimiz kerak. Manzilni (username) xam to’g’ri kiritganimizda bizga botfather buni takidlab bizga HTTP API beradi. API xabarda "Use this token to access the HTTP API: 445482470:AAGNmQbhHZTOaqe2Aj9R9FY2lffqqCXRd94" kabi yozilgan bo’ladi.

    Mana bizni botimiz ishlatishga tayyor bo’ldi va u qo’ygan manzilimiz bo’yicha ishlatishga tayyor. https://t.me/String2UTF8_bot manzili bo’yicha murojaat qilinsa bo’ladi. Lekin u xozircha so’rovlarimizga javob qaytara olmaydi. Botga buyruqni https://api.telegram.org/botAPI/buyruq ko’rinishida berishimiz mumkin. Mavjud buyruqlar to’liq ro’yhatini https://core.telegram.org/bots/api manzilida o’qishingiz mumkin.

    Botga kimdir nimadir yozsa uni 24 soat mobaynida telegramning serverida JSON shakida saqlanib turadi. Uni quyidagi manzil bo’yicha o’qishimiz mumkin: https://api.telegram.org/botAPI/getUpdates

    Endi maqsadimiz botga kimdir nimadir yozganda u xabarni o’sha zaxotiyoq qayta ishlab egasiga yuborishimiz kerak bo’ladi. Buning uchun botimizga webhook tayinlaymiz, ya’ni botga nimadir yozilganda bot xabarni avtomatik tarzda o’sha manzilga json ko’rinishida yuboradi. Buning uchun https://api.telegram.org/bot[token]/setwebhook?url=[webhook] manzilini ishlatamiz.

 

    Endi tayyor php scriptimizni hostingga yuklab uni bot orqali ishlatishga kiritamiz. Bot birorta web servis bilan xabar almashishi uchun o’rtadagi muloqot shifrlangan (himoyalangan) bo’lishi kerak ya’ni SSL sertifikat kerak bo’ladi. SSL sertifikat esa yaxshigina pul turadi. Bizni oldimizda Let's Encrypt dan bepul sertifikat olib o’rnatish yoki o’zimiz yaratishimiz yoki shunga o’xshash yo’llar turibdi. Men Let's Encryptdan sertifikat olib uni uzinfocomni oddiy hostinggiga sozlab botni ishlataman deganimda hosting bilan muammolar yuzaga keldi va boshqa yo’l izlashimga to’g’ri keldi. Izlanishlarim natijasida COMODO CA Limited tomonidan beriladigan bepul sertifikatli bepul hosting va bepul 3-darajali domen beradigan sayt/firma/tizim xullas “ajib bir narsa” chiqib qoldi )) Manzil quyidagicha: https://www.000webhost.com/ Uni tariflarini bizni hostingerlarimiz yaqin orada hayoliga ham keltira olishmaydi. Ex essiz uzcard bilan tulov qilib bo’lganda pulli tarifidan sotib olardim. Mayli xozircha bepul tarifini tanlab ro’yhatdan o’tamiz va o’zimizga yangi akkount ochamiz. Yangi akkount ochib unga yangi sayt ochishni tushuntirib o’tmayman, o’ylaymanki o’zingiz qila olasiz.

 

    Yangi sayt ochganimizdan keyin unga ftp orqali fayllarimizni yuklaymiz. O'ylaymanki buni xam o'zingiz qila olasiz (jarayonni bajarishda muammolarga duch kelinsa bemalol murojaat qilishingiz mumkin)

 

    Meni yuklagan faylim https://erkin.000webhostapp.com/tbot.php manzili bo’yicha joylashdi. Demak webhookni shu manzil bo’yicha sozlaymiz. Buning uchun brouzerimiz manzillar qatoriga quyidagini yozamiz va murojaat yuboramiz. (enterni bosamiz)

https://api.telegram.org/bot445482470:AAGNmQbhHZTOaqe2Aj9R9FY2lffqqCXRd94/setwebhook?url=https://erkin.000webhostapp.com/tbot.php

    Natija ijobiy bo’lsa brouzerimizda quyidagicha natija chiqadi:

 

    Endi Botfatherdan telegram orqali botimizni izoxini, rasmini va boshqa sozlamalarini o’zgaritirishimiz mumkin.

 

    Tayyor bo’lgan bot: https://t.me/String2UTF8_bot

 

   P.S. Anchadan beri maqola yozmagan edim. Xar xil joydan xar xil o’qigan ma’lumotlarim orqali yasagan botimni eslab ushbu maqolani yozdim. Xato va kamchiliklar bo’lsa uzur surayman va ular yuzasidan menga murojaat qilsangiz albatta to’g’irlash kiritib qo’yaman.

    P.P.S Agar natijaviy scriptga optimizatsiya kiritmoqchi bo’lganlar bo’lsa fikrlaringizni kutib qolaman.

шаблоны для dle 11.2

Ma`lumotnoma
Xabarga izoh qoldirish uchun iltimos saytimizda ro`yxatdan o`ting.
Ommabop yangiliklar