Yangi formatda davom etish uchun: https://uzfor.net/view.php?act=post&id=3449
Postga havola
Сирожиддин [2882] [off]
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:
Natijaviy php kodlar
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 ))
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:
Natijaviy php kodlar
<?php include('vendor/autoload.php'); // Kutubxonani chaqiramiz use Telegram\Bot\Api; $telegram = new Api('token'); // BotFatherdan olingan tokenni o'rnatamiz $result = $telegram -> getWebhookUpdates(); // Foydalanuvchidan kelib tushgan xabar va boshqa ma'lumotlarni o'zgaruvchiga olib olamiz $text = $result["message"]["text"]; // Qabul qilingan xabar matni $chat_id = $result["message"]["chat"]["id"]; // Yozishma IDsi $name = $result["message"]["from"]["username"]; // Yuborgan odamning manzili (username) $keyboard = [["Men xaqimda"]]; // Klaviatura (shart emas lekin kimdir men xaqimda qiziqib qolsa ) if($text){ // Agar botga yuborilgan xabar matndan iborat bo'lsa quyidagilar bajariladi if ($text == "/start") { // Agar kimdir botga start bersa ya'ni yozishmani boshlasa unga birinchi xabar matni $reply = "Bu botni shunchaki o'zim uchun yozganman, jiddiy olinmasin!"; $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]); $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]); }elseif ($text == "Men xaqimda") { // Agar kimdir botni muallifi bilan qiziqib "Men xaqimda"ni bossa $reply = "Bu bot juda ko'p turdagi yozuvlarni lotin alifbosiga o'tkazib beradi. Boshida o'zim uchun bu botni yaratish fikri kelgan edi, lekin mendanam boshqa odamlarga kerak bo'lib qolar deb o'yladim. Fikr, mulohaza, taklif yoki kamchiliklar bo'lsa @ErkinPardayev"; $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]); } else{ // Yuborilgan matnli xabar hech biriga to'g'ri kelmasa demak u qayta ishlash uchun matn yuborgan // Matnni funksiyamiz orqali qayta ishlab o'ziga yuboramiz $reply = toUniversalString($text); // Matnni qayta ishlash $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]); // Matnni yuborish } }else{ $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Men faqat mant ko'rinishidagi xabarlarni qayta ishlay olaman." ]); } { ( 'delimiter' => ' ', 'limit' => null, 'lowercase' => true, 'transliterate' => true, ); ( // Latin 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH', 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th', 'ÿ' => 'y', // Latin symbols '©' => '(c)', // Greek 'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8', 'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P', 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W', 'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I', 'Ϋ' => 'Y', 'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8', 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p', 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w', 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's', 'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i', // Turkish 'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G', 'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g', // Russian 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'Ye', 'Ё' => 'Yo', 'Ж' => 'J', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'X', 'Ц' => 'Ts', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '\'', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'j', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'x', 'ц' => 'ts', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '\'', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', // Ukrainian 'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G', 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g', // Czech 'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U', 'Ž' => 'Z', 'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u', 'ž' => 'z', // Polish 'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z', 'Ż' => 'Z', 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z', 'ż' => 'z', // Latvian 'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N', 'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z', 'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n', 'š' => 's', 'ū' => 'u', 'ž' => 'z', // Uzbek "Ў"=>"O'", "ў"=>"o'", "Ғ"=>"G'", "ғ"=>"g'", "Ҳ"=>"H", "ҳ"=>"h", "Қ"=>"Q", "қ"=>"q", //Symbols "\"" => "'", "–" => "-", "‘" => "'", "“" => "\"", "”" => "\"", "’" => "'", "´" => "'", ); if ($options['transliterate']) { } return $str; } ?>
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 ))