0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Виды клавиатур</a></li>
1
<ul><li><a>Виды клавиатур</a></li>
2
<li><a>Формирование меню через reply-элементы</a></li>
2
<li><a>Формирование меню через reply-элементы</a></li>
3
<li><a>Inline-клавиатура в Telegram bot</a></li>
3
<li><a>Inline-клавиатура в Telegram bot</a></li>
4
</ul><p>Боты - это удобные инструменты в социальных сетях и мессенджерах. С помощью них получится без привлечения дополнительных специалистов предоставить пользователям доступ к тем или иным функциям/возможностям. Боты умеют обрабатывать запросы и даже вести элементарные диалоги. Они предоставляют доступ ко встроенным меню и их кнопкам.</p>
4
</ul><p>Боты - это удобные инструменты в социальных сетях и мессенджерах. С помощью них получится без привлечения дополнительных специалистов предоставить пользователям доступ к тем или иным функциям/возможностям. Боты умеют обрабатывать запросы и даже вести элементарные диалоги. Они предоставляют доступ ко встроенным меню и их кнопкам.</p>
5
<p>Большинство ботов для Telegram пишутся на Python. Данный язык разработки является одним из самых известных и распространенных. Он служит кроссплатформенным инструментом программирования, а также вспомогательным компонентом в крупных проектах. Предусматривает простой и понятный синтаксис, благодаря чему легко осваивается даже неопытными программистами.</p>
5
<p>Большинство ботов для Telegram пишутся на Python. Данный язык разработки является одним из самых известных и распространенных. Он служит кроссплатформенным инструментом программирования, а также вспомогательным компонентом в крупных проектах. Предусматривает простой и понятный синтаксис, благодаря чему легко осваивается даже неопытными программистами.</p>
6
<p>Сегодня предстоит научиться делать бота на Python для Telegram. Далее упор будет сделан на формирование не робота-помощника, а его функционального меню и кнопок. Представленная ниже информация окажется полезной как IT-специалистам, так и обычным пользователям, заинтересованным в создании ботов у себя на каналах в мессенджерах.</p>
6
<p>Сегодня предстоит научиться делать бота на Python для Telegram. Далее упор будет сделан на формирование не робота-помощника, а его функционального меню и кнопок. Представленная ниже информация окажется полезной как IT-специалистам, так и обычным пользователям, заинтересованным в создании ботов у себя на каналах в мессенджерах.</p>
7
<h2>Виды клавиатур</h2>
7
<h2>Виды клавиатур</h2>
8
<p>Далее предстоит работать с эхо-ботом, который пишется на основе библиотеки aiogram. Его функция заключается в одном - присылать тот же текст в ответ на пользовательское сообщение. Трудно представить, но у такого робота-помощника тоже есть функциональное меню и кнопки.</p>
8
<p>Далее предстоит работать с эхо-ботом, который пишется на основе библиотеки aiogram. Его функция заключается в одном - присылать тот же текст в ответ на пользовательское сообщение. Трудно представить, но у такого робота-помощника тоже есть функциональное меню и кнопки.</p>
9
<p>Теперь предстоит поработать над этими компонентами. В эхо-бота предстоит добавить клавиатуру с быстрыми ответами и inline кнопки. Они будут использоваться для непосредственного перехода на заданный сайт. Пусть им окажется страница OTUS.</p>
9
<p>Теперь предстоит поработать над этими компонентами. В эхо-бота предстоит добавить клавиатуру с быстрыми ответами и inline кнопки. Они будут использоваться для непосредственного перехода на заданный сайт. Пусть им окажется страница OTUS.</p>
10
<p>Перед непосредственным созданием кнопок и inline-элементов необходимо выяснить, какими могут быть клавиатуры в Телеграмм у бота, созданного через aiogram. Они встречаются двух типов. Отличаются друг от друга только расположением кнопок:</p>
10
<p>Перед непосредственным созданием кнопок и inline-элементов необходимо выяснить, какими могут быть клавиатуры в Телеграмм у бота, созданного через aiogram. Они встречаются двух типов. Отличаются друг от друга только расположением кнопок:</p>
11
<ol><li>Reply-кнопки. Они выглядят как шаблонные (заранее заготовленные) ответы. Закрепляются вместо основной клавиатуры на экране устройства. Обычно используются в чат-ботах в качестве основного меню. Для их создания нужно задействовать метод ReplyKeyboardMarkup.</li>
11
<ol><li>Reply-кнопки. Они выглядят как шаблонные (заранее заготовленные) ответы. Закрепляются вместо основной клавиатуры на экране устройства. Обычно используются в чат-ботах в качестве основного меню. Для их создания нужно задействовать метод ReplyKeyboardMarkup.</li>
12
<li>Inline. Такие кнопки будут иметь связь с сообщениями в чате. Пользователь видит не только inline-кнопки, но и основную клавиатуру. В этом случае необходимо использовать метод InlineKeyboardMarkup.</li>
12
<li>Inline. Такие кнопки будут иметь связь с сообщениями в чате. Пользователь видит не только inline-кнопки, но и основную клавиатуру. В этом случае необходимо использовать метод InlineKeyboardMarkup.</li>
13
</ol><p><a>Здесь</a>можно посмотреть на первую часть эхо-бота. Она будет дополнена инлайн-кнопками и функциональным меню.</p>
13
</ol><p><a>Здесь</a>можно посмотреть на первую часть эхо-бота. Она будет дополнена инлайн-кнопками и функциональным меню.</p>
14
<h2>Формирование меню через reply-элементы</h2>
14
<h2>Формирование меню через reply-элементы</h2>
15
<p>Изначально написанный бот может только отправлять текстовые сообщения и получать их обратно. Необходимо немного модернизировать его и добавить кнопки с готовыми сообщениями. Они позволят не вводить "с нуля" через клавиатуру тот или иной текст.</p>
15
<p>Изначально написанный бот может только отправлять текстовые сообщения и получать их обратно. Необходимо немного модернизировать его и добавить кнопки с готовыми сообщениями. Они позволят не вводить "с нуля" через клавиатуру тот или иной текст.</p>
16
<p>Чтобы сформировать такое меню, необходимо использовать reply-button. Они работают при помощи класса Perly Keyboard Markup. Начать необходимо с его импорта, а также с дополнительных нужных для дальнейшей работы классов.</p>
16
<p>Чтобы сформировать такое меню, необходимо использовать reply-button. Они работают при помощи класса Perly Keyboard Markup. Начать необходимо с его импорта, а также с дополнительных нужных для дальнейшей работы классов.</p>
17
<p>Команда, позволяющая добиться соответствующего результата, выглядит так:</p>
17
<p>Команда, позволяющая добиться соответствующего результата, выглядит так:</p>
18
<p>from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton</p>
18
<p>from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton</p>
19
<p>Здесь:</p>
19
<p>Здесь:</p>
20
<ul><li>ReplyKeyboardRemove и ReplyKeyboardMarkup - используются для создания и удаления клавиатуры;</li>
20
<ul><li>ReplyKeyboardRemove и ReplyKeyboardMarkup - используются для создания и удаления клавиатуры;</li>
21
<li>KeyboardButton - применяется для непосредственного добавления кнопок.</li>
21
<li>KeyboardButton - применяется для непосредственного добавления кнопок.</li>
22
</ul><p>Теперь необходимо сформировать элементы управления с заготовленными фразами. Исходный код соответствующего фрагмента будет иметь следующую форму:</p>
22
</ul><p>Теперь необходимо сформировать элементы управления с заготовленными фразами. Исходный код соответствующего фрагмента будет иметь следующую форму:</p>
23
@dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): kb = [ [ types.KeyboardButton(text="Сможешь повторить это?"), types.KeyboardButton(text="А это?") ], ] keyboard = types.ReplyKeyboardMarkup(keyboard=kb) await message.reply("Привет!\nЯ Эхобот от Otus!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.", reply_markup=keyboard)<p>Этот код работает по такому принципу:</p>
23
@dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): kb = [ [ types.KeyboardButton(text="Сможешь повторить это?"), types.KeyboardButton(text="А это?") ], ] keyboard = types.ReplyKeyboardMarkup(keyboard=kb) await message.reply("Привет!\nЯ Эхобот от Otus!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.", reply_markup=keyboard)<p>Этот код работает по такому принципу:</p>
24
<ol><li>Сначала в первом декораторе создается список kb. Он отвечает за хранение управляющего компонента (button).</li>
24
<ol><li>Сначала в первом декораторе создается список kb. Он отвечает за хранение управляющего компонента (button).</li>
25
<li>В aiogram buttons создаются при помощи types.KeyboardButton. Далее в круглых кавычках пишется text=””. В этом параметре необходимо передать название управляющего компонента. Иначе говоря, имя.</li>
25
<li>В aiogram buttons создаются при помощи types.KeyboardButton. Далее в круглых кавычках пишется text=””. В этом параметре необходимо передать название управляющего компонента. Иначе говоря, имя.</li>
26
<li>Далее нужно сформировать клавиатуру и сообщить ей о наличии тех или иных buttons. Это делается при помощи types.ReplyKeyboardMarkup. Далее в круглых кавычках пишется keyboard-list. В ней вместо list указывается название списка с кнопками. В рассматриваемом случае это kb.</li>
26
<li>Далее нужно сформировать клавиатуру и сообщить ей о наличии тех или иных buttons. Это делается при помощи types.ReplyKeyboardMarkup. Далее в круглых кавычках пишется keyboard-list. В ней вместо list указывается название списка с кнопками. В рассматриваемом случае это kb.</li>
27
<li>Отобразить в Телеграмм клавиатуру. Для этого нужно добавить строку reply_markup=keyboard. Оно отобразит клавиатуру после обработки команды /start.</li>
27
<li>Отобразить в Телеграмм клавиатуру. Для этого нужно добавить строку reply_markup=keyboard. Оно отобразит клавиатуру после обработки команды /start.</li>
28
</ol><p>Все это приводит к тому, что при запуске эхо-робота в Телеграмм в чате появляются две кнопки после обработки /start: "Сможешь повторить?" и "А это?". При клике по любому из предложенных компонентов робот отправит соответствующий текст в качестве ответа.</p>
28
</ol><p>Все это приводит к тому, что при запуске эхо-робота в Телеграмм в чате появляются две кнопки после обработки /start: "Сможешь повторить?" и "А это?". При клике по любому из предложенных компонентов робот отправит соответствующий текст в качестве ответа.</p>
29
<p>При программировании ботов (не только эхо-типа) на Python можно создавать бесконечное количество разнообразных шаблонов. А еще - связывать управляющие компоненты с новыми манипуляциями. Далее соответствующая задача будет рассмотрена на примере inline-клавиатуры.</p>
29
<p>При программировании ботов (не только эхо-типа) на Python можно создавать бесконечное количество разнообразных шаблонов. А еще - связывать управляющие компоненты с новыми манипуляциями. Далее соответствующая задача будет рассмотрена на примере inline-клавиатуры.</p>
30
<h2>Inline-клавиатура в Telegram bot</h2>
30
<h2>Inline-клавиатура в Telegram bot</h2>
31
<p>Inline кнопки имеют некоторые отличия от обычных. Они не связаны с областью клавиатуры в мессенджере. Вместо этого связь предусматривается с тем или иным сообщение в Телеграм боте.</p>
31
<p>Inline кнопки имеют некоторые отличия от обычных. Они не связаны с областью клавиатуры в мессенджере. Вместо этого связь предусматривается с тем или иным сообщение в Телеграм боте.</p>
32
<p>Самым простым примером inline-кнопок является меню на канале @BotFather. С помощью него обычно создается робот-автоответчик в Телеграмме. А точнее - токен для доступа к API в мессенджере.</p>
32
<p>Самым простым примером inline-кнопок является меню на канале @BotFather. С помощью него обычно создается робот-автоответчик в Телеграмме. А точнее - токен для доступа к API в мессенджере.</p>
33
<p>Можно создать на Python bot, который будет вести на OTUS и курсы по разработке программного обеспечения. Для этого потребуется вернуться к разделу с импортами в исходном коде. Туда добавляется еще одна строка. Она позволит задействовать необходимые для бота классы. Выглядит соответствующая строчка так:</p>
33
<p>Можно создать на Python bot, который будет вести на OTUS и курсы по разработке программного обеспечения. Для этого потребуется вернуться к разделу с импортами в исходном коде. Туда добавляется еще одна строка. Она позволит задействовать необходимые для бота классы. Выглядит соответствующая строчка так:</p>
34
<p>from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton</p>
34
<p>from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton</p>
35
<p>Здесь:</p>
35
<p>Здесь:</p>
36
<ul><li>InlineKeyboadMarkup - инициализирует инлайн-кнопки;</li>
36
<ul><li>InlineKeyboadMarkup - инициализирует инлайн-кнопки;</li>
37
<li>InlineKeyboardButton - используется для непосредственного создания рассматриваемых компонентов.</li>
37
<li>InlineKeyboardButton - используется для непосредственного создания рассматриваемых компонентов.</li>
38
</ul><p>Теперь можно сформировать сами элементы управления. Они будут выглядеть так:</p>
38
</ul><p>Теперь можно сформировать сами элементы управления. Они будут выглядеть так:</p>
39
urlkb = InlineKeyboardMarkup(row_width=1) urlButton = InlineKeyboardButton(text='Перейти в журнал OTUS', url='https:// https://otus.ru/journal/') urlButton2 = InlineKeyboardButton(text='Перейти к имеющимся у OTUS курсам', url='https:// https://otus.ru/catalog/courses') urlkb.add(urlButton,urlButton2) @dp.message_handler(commands='ссылки') async def url_command(message: types.Message): await message.answer('Полезные ссылки:', reply_markup=urlkb)<p>Здесь:</p>
39
urlkb = InlineKeyboardMarkup(row_width=1) urlButton = InlineKeyboardButton(text='Перейти в журнал OTUS', url='https:// https://otus.ru/journal/') urlButton2 = InlineKeyboardButton(text='Перейти к имеющимся у OTUS курсам', url='https:// https://otus.ru/catalog/courses') urlkb.add(urlButton,urlButton2) @dp.message_handler(commands='ссылки') async def url_command(message: types.Message): await message.answer('Полезные ссылки:', reply_markup=urlkb)<p>Здесь:</p>
40
<ol><li>Сначала происходит инициализация клавиатуры через InlineKeyboardMarkup. Для этого нужно передать в качестве аргумента row_width число 1. Оно будет отвечать за то, сколько управляющих компонентов находится в одном ряду.</li>
40
<ol><li>Сначала происходит инициализация клавиатуры через InlineKeyboardMarkup. Для этого нужно передать в качестве аргумента row_width число 1. Оно будет отвечать за то, сколько управляющих компонентов находится в одном ряду.</li>
41
<li>Создается переменная и инициализируется класс Button. В его параметрах указывается: text - текст, который отображается на кнопке в Телеграмм, а также url - адрес страницы, на которую перенаправляется пользователь при клике.</li>
41
<li>Создается переменная и инициализируется класс Button. В его параметрах указывается: text - текст, который отображается на кнопке в Телеграмм, а также url - адрес страницы, на которую перенаправляется пользователь при клике.</li>
42
<li>Через add-метод добавляются два компонента к уже сформированной клавиатуре.</li>
42
<li>Через add-метод добавляются два компонента к уже сформированной клавиатуре.</li>
43
<li>Пишется message_handler. Он вызывает в Телеграм соответствующие inline-кнопки. Операция выполняется точно так же, как и обычными buttons. Разница заключается в том, что в качестве команды вызова указываются ссылки, а в параметре reply_markup передается название клавиатуры - urlkb.</li>
43
<li>Пишется message_handler. Он вызывает в Телеграм соответствующие inline-кнопки. Операция выполняется точно так же, как и обычными buttons. Разница заключается в том, что в качестве команды вызова указываются ссылки, а в параметре reply_markup передается название клавиатуры - urlkb.</li>
44
</ol><p>Все готово. Теперь остается только сохранить исходный код и посмотреть на результат. Bot на Питоне будет оснащен обычной клавиатурой, отображаемой при команде /start, а также inline menu, выводимым при команде /ссылки.</p>
44
</ol><p>Все готово. Теперь остается только сохранить исходный код и посмотреть на результат. Bot на Питоне будет оснащен обычной клавиатурой, отображаемой при команде /start, а также inline menu, выводимым при команде /ссылки.</p>
45
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
45
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
46
46