telegram bot yaratish
- Darslar, Dasturlash Darslar, Telegram bot

Telegram + PHP = Bot yaratish. #1 — Chat bot yaratamiz.

Assalom alaykum ismim 😎SaidAbbos Khudoykulov va men FullStack Web dasturchiman. Bugun siz bilan Telegram platformasida shaxsiy chat bot yaratamiz. Boshlanishiga botimiz oddiygina bo’ladi. Demak olg’a do’stlarim !

Mo’jizaviy Telegram

So’ngi yillarda Telegram deya atalmish mo’jizakor tizim bizning hayotimizda kerakli va qadrli buyumga aylanib ulgurdi. Telegram bepul, tejamkor, tezkor va foydalanish juda oson bo’lganligi sabab O’zbekistonda eng ko’p foydalanuvchilarga ega messenjer nomiga sazavor bo’ldi. UShbu tizim qachonlardur shunchaki habarlar almashinuvi uchun yaratilgandi,. Ushbu sehrli tarmoq orqali istalgan yaqinimizga, do’stlarimizga va hamkasblarimizga hatlar, musiqalar, vediolar, hujjatlar hattoki joyashuv nuqtamizni ham bir zumda yuborishimiz mumkin.

Telegram Business

Hozirgi kunda O’zbekistonda ham, Telegramdan nafaqat shaxsiy balki biznes maqsadlarda ham keng foydalanilmoqda. Masalan onlayn do’konlar, restoranlar, hizmatlar, o’quv dasturlari, to’lov tizimlari va boshqa hizmatlar. Oddiy telegram messenerini biznes sohalarida muvaffaqiyatga yetaklagan yana bir muhim jihati bu Telegram botlardir. Telegram botlar bu messenjer ichida ishlaydigan kichik dasturchalar bo’lishiga qaramasdan uning imkoniyatlari kundan — kunga kengayib bormoqda.

Aqilli chat botlar

Telegram botlarning eng foydali hususiyati, botlar bizning o’rnimizga foydalanuvchilar bian bemalol suhbat qurishi mumkin. Natijada hizmat ko’rsatishi lozim bolgan inson, minglab foydalanuvchilar tomonidan har doim beriladigan bir xil savollarga qayta — qayta javob berishi shart emas, foydalanuvchilar ham o’z savollariga javob olish uchun navbat kutib vaqt o’tkazmaydi. Tan olish kerak bu juda qoyilmaqom texnologiya, Ahir botga doim beriladigan savollar va javoblarni o’rgatib qo’yish kifoya qolganini bot o’zi amallaydi.

Sizning shaxsiy yordamchi botingiz

Ha bilaman siz ham telegramdan harkuni foydalanasiz, har kuni do’stlaringiz, tanishlar va begonalar sizdan maslahatlar so’rashadi yoki yoki siz tarmoqdan tashqarida bolganingizda sizga yozishadi, Balki shu zhoti javob ololmaganlar hafa ham bo’lishi mumkin. Bugun siz bilan, sizning shaxsiy chat botingizni yaratamiz va kiyingi dasrlarda asta sekinlik bilan uni rivojlantirib boramiz. Ushbu botni shaxsiy yoki biznes maqsadda ishlatish sizning istagingizga bo’gliq holos.

Ushbu qiziqarli sayohatni, Telegramda shaxsiy botimizni ro’yxatdan o’tkazishdan boshlaymiz.

Botni Ro’yxatdan o’tkazamiz:

Ishni Telegramdagi barcha botlarning otasi bo’lmish Botfatherda bot yaratishdan boshlaymiz:

  • BotFatherni ishga tushurib, «/newbot» buyrug’ini yuboramiz.
  • Avvaliga bot nomi kiyin bot uchun username kiritamiz. Bot nomi istalagan shaklda bo’lishi mumkin, Ammo username «bot» jumlasi bilan tugallanishi shart !
  • Botimizga surat va qo’shimcha tavsif qo’shishimiz uchun avvaliga /mybots buyrug’ini yuborib, yaratilgan botimizni tanlaymiz.
  • «Edit bot» tugmasini bosamiz va navbat bilan botimizni tahrirlaymiz.

⚠️ Botning tahrirlash ishlarini pastdagi vedioda to’liq ko’rishingiz mumkin !

Bot uchun dasturlashni boshlaymiz

Telegram bot dasturiy qismini ishga tushurishimiz uchun bizga web hosting + ssl sertefekat bilan domen kerak boladi.

⚠️Agarda siz, Telegram botlar yaratuvchisiga aylanish istagida bo’lsangiz. Sizni 03.06.2020 sanasida, kech soat 20:00 da start beriladigan, «Telegram Business 🔴Live» Jonli eferda darslar seriyasiga taklif etaman.
🎁Bonus: Mutlaqo bepul Domen va Web Hosting.

Ushbu darslar Telegram bot tushunchasidan boshlanib toki siz Telegram botlar va Telegram bo’yicha haqiqiy mutahhassis bo’lib yetishguningizga qadar davom etadi. ushbu muddat ichida men SaidAbbos Khudoykulov siz bilan yelkadosh bo’lishga va’da beraman, Biz birgalikda olamshumul natijalarga erishamiz !

Demak dasturlashni boshladik:

  1. Saytimizda istalgan nom bilan PHP fayl yaratamiz, Masalan «chat_bot.php» va fayl ichida bot dasturini boshlaymiz.
  • BotFather taqdim etgan, bot tokeni yani kaliti uchun o’zgarmas constant yaratib olamiz. Constant nomini «API_KEY» deb nomladim.
<?php
define('API_KEY', '1016572094:AAGrwwZhjmMHTUaC4VAHgforR3QlFkSbF8s');
  • Botni boshqaradigan insonning telegram id raqami va Ism Familyasini yoki kompaniya nomini o’zgaruvchiga saqlaymiz. Telegram id raqamini olish uchun ushbu botga «/start» buyrug’uni bering. Botga o’tish: http://t.me/infomiruz_idbot
$Manager = "150105698";
$compane = "infomir.uz";
  • bot dasturi barcha amallarini kerakli shaklda Telegram Bot API ga yuboradigan asosiy funksiyani yozamiz
function bot($method, $datas = []){
    $url = "https://api.telegram.org/bot".API_KEY."/" . $method;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $datas);
    $res = curl_exec($ch);
    curl_close($ch);
    if (!curl_error($ch)) return json_decode($res);
};
  • Foydalanuvchilarning Ism Familyasi yoki Yozgan murojati tarkibida uchrashi mumkin bo’lgan kodga a’loqador belgilardan himoya funksiyasini yozamiz
function html($text){
    return str_replace(['<','>'],['&#60;','&#62;'],$text);
};
  • Telegram Bot API dan kelgan JSON formatdagi ma’lumotni «json_decode» funksiyasi yordamida «stdClass Object» shaklida qabul qilamiz
$update = json_decode(file_get_contents('php://input'));
  • Telegram Bot API bizga yuborayotgan javobni ko’rishimiz uchun hozircha ushbu kodni qo’shib qo’yamiz, ushbu kod bot ishga tushganda javobni yangi «log.txt» faylga yozib qo’yadi.
//test log
file_put_contents("log.txt",file_get_contents('php://input'));
  • Botni ishga tushurish uchun Maxsus «setWebhook» funksiayasi orqali Telegram API ga botimiz kodlari qaysi manzilda joylashganligi haqida habar berishimiz lozim. Buning uchun avval Webhook murojat urlini tayyorlaymiz:
 https://api.telegram.org/botBuyerda Token/setWebHook?url=php fayl manzili
  • Mening botim uchun mana bunday shaklda:
https://api.telegram.org/bot1151828985:AAFu_2fo/setWebHook?url=https://infomir.uz/chat_bot.php
  • Ushbu url so’rovni browserda ishga tushuramiz va agar hammasini to’g’ri qilgan bo’lsangiz javobi mana bunday ko’rinishda boladi:
{"ok":true,"result":true,"description":"Webhook was set"}
  • Botimiz ishga tushdi ammo hozircha bizga hech nima qaytarmaydi, Chunki dastur davomini yozishimiz lozim.
  • Ammo nima yozishni bilmayman deysizmi ? Ahir bizda endi log fayli bor shuni ochib ko’ramiz:
{
"update_id":445311974,
  "message":{
  "message_id":39,
  "from":
   {
   "id":767265901,"is_bot":false,
   "first_name":"SaidAbbos",
   "last_name":"Khudoykulov",
   "username":"Mujik_s_Borodoy",
   "language_code":"ru"
   },
  "chat":
  {
   "id":767265901,
   "first_name":"SaidAbbos",
   "last_name":"Khudoykulov",
   "username":"Mujik_s_Borodoy",
   "type":"private"
  },
"date":1591090681,
"text":"/start",
"entities":[{"offset":0,"length":6,"type":"bot_command"}]}
}
  • stdClass tarkibida kelgan ma’lumotlar ichidan o’zimizga kerakli ma’lumotlarni o’zgaruvchilarga himoya funksiyamiz orqali tozalab saqlaymiz
// message variables
$message = $update->message;
$text = html($message->text);
$chat_id = $message->chat->id;
$from_id = $message->from->id;
$message_id = $message->message_id;
$first_name = $message->from->first_name;
$last_name = $message->from->last_name;
$full_name = html($first_name . " " . $last_name);

// replymessage
$reply_to_message = $message->reply_to_message;
$reply_chat_id = $message->reply_to_message->forward_from->id;
$reply_text = $message->text;
  • Demak dastur davomida shunday yozamiz:
// Agar yozgan odam $Manager bo'lmasa ushbu kod qismiga kiramiz
if ($chat_id != $Manager) {
    // Agar yozilgan habar /start bolsa, yani yangi foydalanuvchi
    //  botni ishga tushursa ushbu kod bajariladi
    if ($text == "/start") {
        // Foydalanuvchiga Manager  yoki kompaniya nomidan salom yo'llaymiz.
        $reply = "Assalom Alaykum <b>" . $full_name . "</b>, " . $compane . " 
                Qabul Botiga Xush Kelibsiz !\nMurojat Yo'llashingiz Mumkin 👇";
        bot('sendmessage', [ // maxsus bot funksiyamiz orqali sendmessage ga
            'chat_id' => $chat_id, //foydalanuvchi id raqami va
            'text' => $reply, // habar matnini
            'parse_mode' => "HTML", //html formatda yuboramiz.
        ]);
        //  Yangi foydalanuvchi malumotlarini manajerga aniq vaqt bilan yuboramiz.
        $reply = "Yangi mijoz:\n" . $full_name . "\n
                👉 👉 <a href='tg://user?id=" . $from_id . "'>" . $from_id . "</a>\n
                " . date('Y-m-d H:i:s') . "";
        bot('sendmessage', [ // maxsus bot funksiyamiz orqali sendmessage ga
            'chat_id' => $Manager, //Manager id raqami va
            'text' => $reply, // habar matnini
            'parse_mode' => "HTML", //html formatda yuboramiz.
        ]);
        // Foydalanuvchidan kelgan ilk /start habarini javob 
        // bera olishi uchun managerga yuboramiz.
        bot('forwardMessage', [ // maxsus bot funksiyamiz orqali forwardMessage ga
            'chat_id' => $Manager, //Manager id raqami va
            'from_chat_id' => $chat_id, // foydalanuvchi bilan bot o'rtasidagi chat id raqami
            'message_id' => $message_id, // va foydalanuvchi yuborgan habar id raqamini yuboramiz.
        ]);
        // Tekshiramiz foydalanuvchi /start komandasidan boshqa narsa yozgan bo'lsa
    }else if ($text != "/start"){
        // Foydalanuvchidan kelgan habarni javob bera olishi uchun managerga yuboramiz.
        bot('forwardMessage', [ // maxsus bot funksiyamiz orqali forwardMessage ga
            'chat_id' => $Manager, //Manager id raqami va
            'from_chat_id' => $chat_id, // foydalanuvchi bilan bot o'rtasidagi chat id raqami
            'message_id' => $message_id, // va foydalanuvchi yuborgan habar id raqamini yuboramiz.
        ]);
    }
    // Yoki agar $Manager yozgan bo'lsa ushbu kod qismiga kiramiz
}else if($chat_id == $Manager){
    // Agar manager bot qayta yuborgan hatga javob berish orqali habar yuborsa,
    if(isset($reply_to_message)){
        // Manager habarini bot qayta yuborgan habar egasiga bot nomidan yuboramiz
        bot('sendmessage', [ // maxsus bot funksiyamiz orqali sendmessage ga
            'chat_id' => $reply_chat_id, // bot qayta yuborgan habar id raqami va
            'text' => $reply_text, // manager yuborgan habarni
            'parse_mode' => "HTML", //html formatda yuboramiz.
        ]);
    }
    // Manager profilidan botni tekshirib ko'rish uchun botdan managerga salom !
    if($text == "hi" or $text == "/start"){
        bot('sendmessage', [
            'chat_id' => $Manager,
            'text' => "Salom Manager !",
        ]);
    }
}

Mana do’stlar shaxsiy chat botimiz ishlamoqda:

Shuning bilan PHP dasturlash tilida yozilgan oddiygina telegram botimiz tayyor. Mukammal telegram botlar yasashni o’rganish uchun «Telegram Business 🔴Live» darslariga taklif etib qolaman. Batafsil ma’lumot: @SaidAbbos_Khudoykulov_Official

Bot dasturining to’liq kodini yuklash. https://cloud.mail.ru/public/Kk9c/2UJxgUQ17