{"id":5353,"date":"2023-01-30T04:45:24","date_gmt":"2023-01-30T04:45:24","guid":{"rendered":"https:\/\/texnokun.uz\/?p=5353"},"modified":"2023-02-19T05:08:44","modified_gmt":"2023-02-19T05:08:44","slug":"tugmalar-bilan-ishlash-2-dars","status":"publish","type":"post","link":"https:\/\/texnokun.uz\/?p=5353","title":{"rendered":"Tugmalar bilan ishlash (2-dars)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ushbu bo&#8217;limda biz siz bilan Telegram Botdagi tugmalar bilan ishlashni o&#8217;rganamiz. Telegram bot ikki xil tugmani jo&#8217;nata oladi: <strong>oddiy<\/strong> va <strong>inline<\/strong>(inlayn). Oddiy tugma deb ekranning past qismida chiqadigan tugmaga aytiladi, inline deb esa xabarning tagida chiqadigan tugmaga, quyidagi rasmda farqlarini ko&#8217;rishingiz mumkin:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_1.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Oddiy tugmalar<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oddiy tugma bosilganida unda yozilgan matn hudda foydalanuvchi jo&#8217;natgan matndek chatga jo&#8217;natiladi. Ushbu tugma bosilganida foydalanuvchiga javob berish uchun biz matnni qabul qiladigan handler yozishimiz kerak. Keling foydalanuvchi <code>\/start<\/code> buyrug&#8217;ini yuborsa matnli xabar bilan oddiy tugma jo&#8217;natamiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# from aiogram import types\n\n@dp.message_handler(commands='start')\nasync def start_cmd(message: types.Message):\n    keyboard = types.ReplyKeyboardMarkup() # keyboard obyekti\n    keyboard.add(types.KeyboardButton(text=&quot;Yaxshi&quot;)) # keyboardga KeyboardButton() orqali tugma qo'shish\n    keyboard.add(&quot;Yomon&quot;) # KeyboardButton()'siz keyboardga tugma qo'shish\n    await message.answer(&quot;Kayfiyatingiz qanday?&quot;, reply_markup=keyboard)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #616E88\"># from aiogram import types<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">commands<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">start<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">start_cmd<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ReplyKeyboardMarkup<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># keyboard obyekti<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">KeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Yaxshi<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># keyboardga KeyboardButton() orqali tugma qo&#39;shish<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Yomon<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># KeyboardButton()&#39;siz keyboardga tugma qo&#39;shish<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Kayfiyatingiz qanday?<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">keyboard<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">Python<\/span><\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<cite>E&#8217;tibor bergan bo&#8217;lsangiz &#8220;Yomon&#8221; tugmasini biz <code>KeyboardButton()<\/code>siz qo&#8217;shdik, chunki yangi tugma qo&#8217;shish uchun <code>add()<\/code> funksiyasiga shunchaki tugma uchun matnni bersa ham bo&#8217;ladi.<\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Keling endi kodimizni ishga tushirib, natijani ko&#8217;ramiz:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_2.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ko&#8217;rib turganingizdek ikkita tugma chiqdi, biroq tugmalarimiz kattaroq. Tugmalarni kichraytirish uchun keyboard obyektiga <code>resize_keyboard=True<\/code> parametrini berish kerak. Keling bira to&#8217;lasi ikkita tugmani bitta qatorda chiqarishni ham ko&#8217;ramiz. Keling endi kodimizni biroz o&#8217;zgartirib, yuqoridagilarni kodimizda qo&#8217;llaymiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"@dp.message_handler(commands='start')\nasync def start_cmd(message: types.Message):\n    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) # keyboard obyekti\n    buttons = ['Yaxshi','Yomon']\n    keyboard.add(*buttons) # yoki .add('Yaxshi','Yomon')\n    await message.answer(&quot;Kayfiyatingiz qanday?&quot;, reply_markup=keyboard)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">commands<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">start<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">start_cmd<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ReplyKeyboardMarkup<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">resize_keyboard<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># keyboard obyekti<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    buttons <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Yaxshi<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Yomon<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">buttons<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># yoki .add(&#39;Yaxshi&#39;,&#39;Yomon&#39;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Kayfiyatingiz qanday?<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">keyboard<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi kodni qayta ishga tushirib, natijani ko&#8217;ramiz:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_3.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ko&#8217;rib turganingizdek tugmalar kichyardi va bir qatorda bo&#8217;ldi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu tugmalarni foydalanuvchi bosganda unga javob beradigan qilish qoldi. Yoqorida aytib o&#8217;tganimizdek foydalanuvchi oddiy tugmani bosganida ushbu tugma botga matndek keladi, shuning uchun biz <strong>Yaxshi<\/strong> va <strong>Yomon<\/strong> matnlarini handlerda &#8220;ushlab&#8221; olishimiz kerak. Ma&#8217;lum bir matnni &#8220;ushlab&#8221; olish uchun handlerda aiogram&#8217;da <code>Text<\/code> filteri mavjud:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"from aiogram.dispatcher.filters import Text\n\n@dp.message_handler(Text(&quot;Yaxshi&quot;)) # yoki shunchaki text=&quot;Yaxshi&quot;\nasync def good(message: types.Message):\n    await message.reply(&quot;Kayfiyatingiz yaxshi ekanligidan xursandman :)&quot;)\n\n@dp.message_handler(Text(&quot;Yomon&quot;)) # yoki shunchaki text=&quot;Yomon&quot;\nasync def bad(message: types.Message):\n    await message.reply(&quot;Kayfiyatingiz yomonligidan afsusdaman :(\\nSizga yaxshi kayfiyat tilab qo'laman!&quot;)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> aiogram<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">dispatcher<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">filters <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> Text<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Text<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Yaxshi<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># yoki shunchaki text=&quot;Yaxshi&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">good<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">reply<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Kayfiyatingiz yaxshi ekanligidan xursandman :)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Text<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Yomon<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># yoki shunchaki text=&quot;Yomon&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">bad<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">reply<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Kayfiyatingiz yomonligidan afsusdaman :(<\/span><span style=\"color: #EBCB8B\">\\n<\/span><span style=\"color: #A3BE8C\">Sizga yaxshi kayfiyat tilab qo&#39;laman!<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Kodimizni qayta ishga tushirib, natijasini ko&#8217;ramiz:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_4.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E&#8217;tibor bergan bo&#8217;lsangiz biz tugmani bosganimizdan so&#8217;ng ham tugmalar o&#8217;chmayapti. Ushbu tugmalarni o&#8217;chirish uchun <code>ReplyKeyboardRemove<\/code> mavjud. Qo&#8217;llash uchun misol:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"await message.reply(&quot;Kayfiyatingiz yaxshi ekanligidan xursandman :)&quot;,reply_markup=types.ReplyKeyboardRemove())\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">reply<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Kayfiyatingiz yaxshi ekanligidan xursandman :)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ReplyKeyboardRemove<\/span><span style=\"color: #ECEFF4\">())<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<cite>Siz bilan to&#8217;liq bo&#8217;lmasa ham <a href=\"https:\/\/core.telegram.org\/bots\/api#replykeyboardmarkup\" target=\"_blank\" rel=\"noreferrer noopener\">oddiy tugmalar<\/a> bilan ishlashni o&#8217;rgandik. Agar to&#8217;liqroq o&#8217;rganmoqchi bo&#8217;lsangiz manbalar: (Telegram Bot API: <a href=\"https:\/\/core.telegram.org\/bots\/api#replykeyboardmarkup\" target=\"_blank\" rel=\"noreferrer noopener\">ReplyKeyboardMarkup<\/a>, <a href=\"https:\/\/core.telegram.org\/bots\/api#keyboardbutton\" target=\"_blank\" rel=\"noreferrer noopener\">KeyboardButton<\/a>), (Aiogram Docs: <a href=\"https:\/\/docs.aiogram.dev\/en\/latest\/telegram\/types\/reply_keyboard.html?highlight=replykeyboardmarkup#replykeyboardmarkup\" target=\"_blank\" rel=\"noreferrer noopener\">ReplyKeyboardMarkup<\/a>, <a href=\"https:\/\/docs.aiogram.dev\/en\/latest\/telegram\/types\/reply_keyboard.html?highlight=replykeyboardmarkup#keyboardbutton\" target=\"_blank\" rel=\"noreferrer noopener\">KeyboardButton<\/a>).<\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/#maxsus-oddiy-tugmalar\"><\/a>Maxsus oddiy tugmalar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oddiy tugmalarning vazifasi faqatgina foydalanuvchi biror bir tugmani bossa, usha tugma matnini chatga jo&#8217;natishdan iborat emas. Balki oddiy tugmalar orqali foydalanuvchining joylashuvini,telefon raqamini qabul qilish mumkin. Keling ushbu tugmalarni kodda qanday bo&#8217;lishini ko&#8217;ramiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"@dp.message_handler(commands=&quot;buttons&quot;)\nasync def buttons(message: types.Message):\n    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)\n    keyboard.add(types.KeyboardButton(text=&quot;Lokatsiyani yuborish&quot;, request_location=True))\n    keyboard.add(types.KeyboardButton(text=&quot;Telefon raqamni yuborish&quot;, request_contact=True))\n    await message.answer(&quot;Quyidagi maxsus tugmalardan birini tanlang: &quot;, reply_markup=keyboard)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">commands<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">buttons<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">buttons<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ReplyKeyboardMarkup<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">resize_keyboard<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">KeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Lokatsiyani yuborish<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">request_location<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">KeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Telefon raqamni yuborish<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">request_contact<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Quyidagi maxsus tugmalardan birini tanlang: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">keyboard<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<cite>Oddiy tugmalar bilan ishlashda yozilgan to&#8217;liq kod: <a href=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/blob\/main\/code\/2dars.py\">havola<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"has-text-align-left has-medium-font-size wp-block-paragraph\"><strong>Inline(inlayn) tugmalar<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inline(inlayn) tugmalar yuborilgan xabarning tagida chiqadi, oddiy tugmalar kabi ekranning pastgi qismida emas. Biz siz bilan ikki xil turdagi inline tugmalar bilan ishlashni o&#8217;rganamiz,bular: url va callback.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>URL(havolali) tugmalar<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu turdagi tugmalar orqali foydalanuvchini biror <code>http(s)<\/code> yoki <code>tg:\/\/<\/code> bilan boshlangan havolalarga yo&#8217;naltirsa bo&#8217;ladi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"@dp.message_handler(commands='url_tugma')\nasync def url_tugma(message: types.Message):\n    keyboard = types.InlineKeyboardMarkup(row_width=1)\n    buttons = [\n        types.InlineKeyboardButton(text=&quot;Instagram&quot;,url=&quot;https:\/\/www.instagram.com\/texnokun_uz\/&quot;),\n        types.InlineKeyboardButton(text=&quot;Telegram kanal&quot;,url=&quot;tg:\/\/resolve?domain=texnokun_uz&quot;),\n    ]\n    keyboard.add(*buttons)\n    await message.answer(&quot;TexnoKun.uz'ning ijtimoiy tarmoqlardagi sahifasi: &quot;,reply_markup=keyboard)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">commands<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">url_tugma<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">url_tugma<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">InlineKeyboardMarkup<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">row_width<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    buttons <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">InlineKeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Instagram<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">url<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">https:\/\/www.instagram.com\/texnokun_uz\/<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">InlineKeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Telegram kanal<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">url<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">tg:\/\/resolve?domain=texnokun_uz<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">buttons<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">TexnoKun.uz&#39;ning ijtimoiy tarmoqlardagi sahifasi: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">keyboard<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Natija esa:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agar ikkita tugmani bir qatorda qilmoqchi bo&#8217;lsangiz <code>InlineKeyboardMarkup<\/code>dan <code>row_width=1<\/code>ni olib tashlang(shunda standart(default) qiymat 3 ishlatiladi). <code>row_width<\/code> parametri orqali bir qatorda nechta tugma bo&#8217;lishi kerakligini sozlash mumkin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Callback tugmalar<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Callback tugmalarda foydalanuvchi qaysi tugmani bosganini bilish uchun o&#8217;zida maxsus qiymatni(data) saqlaydi. Ushbu qiymat bizga foydalanuvchi qaysi tugma bosganini va unga javoban nima deyish kerakligini bilish uchun kerak bo&#8217;ladi. Sodda qilib aytganda foydalanuvchi qaysi tugmani bosganini bilish va shunga qarab javob qaytarish uchun callback tugmalarda qiymat saqlanadi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keling endi praktikaga o&#8217;tsak, foydalanuvchi botga <code>\/random<\/code> buyrug&#8217;ini jo&#8217;natsa, unga callback tugma jo&#8217;natamiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"@dp.message_handler(commands='random')\nasync def random_cmd(message: types.Message):\n    keyboard = types.InlineKeyboardMarkup()\n    keyboard.add(types.InlineKeyboardButton(text=&quot;Tugmani bosing&quot;,callback_data='random_value'))\n    await message.answer(&quot;1dan 10gacha bo'lgan tasodifiy sonlarni jo'natishim uchun quyidagi tugmani bosing: &quot;, reply_markup=keyboard)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">message_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">commands<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">random<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">random_cmd<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">Message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">InlineKeyboardMarkup<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    keyboard<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">InlineKeyboardButton<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Tugmani bosing<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">callback_data<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">random_value<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">1dan 10gacha bo&#39;lgan tasodifiy sonlarni jo&#39;natishim uchun quyidagi tugmani bosing: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">reply_markup<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">keyboard<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi ushbu tugmani bosganda foydalanuvchiga javob berish qoldi. Biror bir yangi xabarni &#8220;ushlab&#8221; olish uchun avval biz <code>message_handler<\/code>dan foydalangan bo&#8217;lsak, callbackni &#8220;ushlab&#8221; olish uchun <code>callback_query_handler<\/code>dan foydalanamiz. Foydalanuvchi tugmani bosganida uni &#8220;ushlab&#8221; olish uchun biz tugmamizga bergan <code>callback_data<\/code>ni,yani maxsus qiymatni ushlab oladigan handler qilamiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"from random import randint\n\n@dp.callback_query_handler(text=&quot;random_value&quot;)\nasync def send_random_value(call: types.CallbackQuery):\n    await call.message.answer(str(randint(1,10)))\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> random <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> randint<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">callback_query_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">random_value<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">send_random_value<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">call<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CallbackQuery<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> call<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">answer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">randint<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">)))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<cite><code>callback_query_handler<\/code>da ham <code>message_handler<\/code> kabi <code>text<\/code> filter qo&#8217;llaniladi.<\/cite><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/raw\/main\/images\/3_dars_6.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Keling yuqoridagi kodimizga biroz o&#8217;zgartirish kiritib, tasodifiy sonni jo&#8217;natmasdan, bot jo&#8217;natgan xabarini tahrirlab foydalanuvchiga tasodifiy sonni taqdir etamiz:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span role=\"button\" tabindex=\"0\" data-code=\"@dp.callback_query_handler(text=&quot;random_value&quot;)\nasync def send_random_value(call: types.CallbackQuery):\n    await call.message.edit_text(str(randint(1,10)))\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #D08770\">dp<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D08770\">callback_query_handler<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">text<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">random_value<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">async<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">send_random_value<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">call<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> types<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CallbackQuery<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">await<\/span><span style=\"color: #D8DEE9FF\"> call<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">edit_text<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">randint<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">)))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi callback tugmani bosganingizda xabarni tahrirlab, tasodifiy sonni taqdim etadi. Sinab ko&#8217;rishingiz mumkin.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<cite>Callback tugmalar bilan ishlashdagi barcha kodlar: <a href=\"https:\/\/github.com\/RDev-Uz\/BotDarslari\/blob\/main\/code\/3dars_2.py\" target=\"_blank\" rel=\"noreferrer noopener\">link<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Kengi qism: <strong><a href=\"https:\/\/texnokun.uz\/?p=5358\">Ketma-ketlik bo&#8217;yicha foydalanuvchidan ma&#8217;lumotlarni qabul qilish(FSM)(3-qism)<\/a><\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ushbu bo&#8217;limda biz siz bilan Telegram Botdagi tugmalar bilan ishlashni o&#8217;rganamiz. Telegram bot ikki xil tugmani jo&#8217;nata oladi: oddiy va inline(inlayn).<\/p>\n","protected":false},"author":12,"featured_media":5308,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[1,14],"tags":[103,104],"class_list":["post-5353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-dasturlash","tag-aiogram","tag-telegram-bot"],"_links":{"self":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/5353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5353"}],"version-history":[{"count":8,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/5353\/revisions"}],"predecessor-version":[{"id":5723,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/5353\/revisions\/5723"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/media\/5308"}],"wp:attachment":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}