Сирожиддин
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
  1. <?php
  2.  
  3. include('vendor/autoload.php'); // Kutubxonani chaqiramiz
  4.  
  5. use Telegram\Bot\Api;
  6.  
  7.  
  8. $telegram = new Api('token'); // BotFatherdan olingan tokenni o'rnatamiz
  9.  
  10. $result = $telegram -> getWebhookUpdates(); // Foydalanuvchidan kelib tushgan xabar va boshqa ma'lumotlarni o'zgaruvchiga olib olamiz
  11.  
  12.  
  13.  
  14. $text = $result["message"]["text"]; // Qabul qilingan xabar matni
  15.  
  16. $chat_id = $result["message"]["chat"]["id"]; // Yozishma IDsi
  17.  
  18. $name = $result["message"]["from"]["username"]; // Yuborgan odamning manzili (username)
  19.  
  20. $keyboard = [["Men xaqimda"]]; // Klaviatura (shart emas lekin kimdir men xaqimda qiziqib qolsa )
  21.  
  22.  
  23. if($text){
  24. // Agar botga yuborilgan xabar matndan iborat bo'lsa quyidagilar bajariladi
  25. if ($text == "/start") {
  26. // Agar kimdir botga start bersa ya'ni yozishmani boshlasa unga birinchi xabar matni
  27. $reply = "Bu botni shunchaki o'zim uchun yozganman, jiddiy olinmasin!";
  28.  
  29. $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
  30.  
  31. $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
  32.  
  33. }elseif ($text == "Men xaqimda") {
  34. // Agar kimdir botni muallifi bilan qiziqib "Men xaqimda"ni bossa
  35. $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";
  36. $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
  37. }
  38. else{
  39. // Yuborilgan matnli xabar hech biriga to'g'ri kelmasa demak u qayta ishlash uchun matn yuborgan
  40. // Matnni funksiyamiz orqali qayta ishlab o'ziga yuboramiz
  41. $reply = toUniversalString($text); // Matnni qayta ishlash
  42.  
  43. $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]); // Matnni yuborish
  44.  
  45. }
  46.  
  47. }else{
  48.  
  49. $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Men faqat mant ko'rinishidagi xabarlarni qayta ishlay olaman." ]);
  50.  
  51. }
  52.  
  53. function toUniversalString($str, $options = array())
  54. {
  55. $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());
  56. $defaults = array
  57. (
  58. 'delimiter' => ' ',
  59. 'limit' => null,
  60. 'lowercase' => true,
  61. 'replacements' => array(),
  62. 'transliterate' => true,
  63. );
  64.  
  65. $options = array_merge($defaults, $options);
  66. $char_map = array
  67. (
  68. // Latin
  69. 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C',
  70. 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I',
  71. 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O',
  72. 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',
  73. 'ß' => 'ss',
  74. 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c',
  75. 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
  76. 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o',
  77. 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',
  78. 'ÿ' => 'y',
  79. // Latin symbols
  80. '©' => '(c)',
  81. // Greek
  82. 'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
  83. 'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
  84. 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
  85. 'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
  86. 'Ϋ' => 'Y',
  87. 'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
  88. 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
  89. 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
  90. 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
  91. 'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',
  92. // Turkish
  93. 'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G',
  94. 'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',
  95. // Russian
  96. 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'Ye', 'Ё' => 'Yo', 'Ж' => 'J',
  97. 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
  98. 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'X', 'Ц' => 'Ts',
  99. 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '\'', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
  100. 'Я' => 'Ya',
  101. 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'j',
  102. 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
  103. 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'x', 'ц' => 'ts',
  104. 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '\'', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
  105. 'я' => 'ya',
  106. // Ukrainian
  107. 'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
  108. 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',
  109. // Czech
  110. 'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U',
  111. 'Ž' => 'Z',
  112. 'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
  113. 'ž' => 'z',
  114. // Polish
  115. 'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z',
  116. 'Ż' => 'Z',
  117. 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
  118. 'ż' => 'z',
  119. // Latvian
  120. 'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N',
  121. 'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z',
  122. 'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
  123. 'š' => 's', 'ū' => 'u', 'ž' => 'z',
  124. // Uzbek
  125. "Ў"=>"O'", "ў"=>"o'", "Ғ"=>"G'", "ғ"=>"g'", "Ҳ"=>"H", "ҳ"=>"h", "Қ"=>"Q", "қ"=>"q",
  126. //Symbols
  127. "\"" => "'", "–" => "-", "‘" => "'", "“" => "\"", "”" => "\"", "’" => "'", "´" => "'",
  128. );
  129.  
  130. $str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);
  131. if ($options['transliterate']) {
  132. $str = str_replace(array_keys($char_map), $char_map, $str);
  133. }
  134.  
  135. $str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);
  136. $str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');
  137. $str = trim($str, $options['delimiter']);
  138. return $str;
  139. }
  140. ?>


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 ))