Yangi formatda davom etish uchun: https://uzfor.net/view.php?act=post&id=3447
Postga havola
Сирожиддин [2882] [off]
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.
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.
"Funksiya" (+/-)
{ // Make sure string is in UTF-8 and strip invalid UTF-8 characters ( 'delimiter' => ' ', 'limit' => null, 'lowercase' => true, 'transliterate' => true, ); // Merge options ( // 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 "\"" => "'", "–" => "-", "‘" => "'", "“" => "\"", "”" => "\"", "’" => "'", "´" => "'", ); // Make custom replacements // Transliterate characters to ASCII if ($options['transliterate']) { } // Replace non-alphanumeric characters with our delimiter // $str = preg_replace("/'[^\p{L}\p{Nd}]+/u", $options['delimiter'], $str); // Remove duplicate delimiters // Truncate slug to max. characters // Remove delimiter from ends return $str; }