Кнопки в телеграм-ботах
Это статья из серии о телеграм-ботах. Я по частям расскажу о важных моментах в pytelegrambotapi. Сразу полезная информация: я начал учиться делать ботов по этой статье и всем ее рекомендую.
Виды
Кнопки в телеграм бывают двух видов - inline и обычные (reply).
Обычные
Обычные вы видите вместо клавиатуры, все, что они делают, как правило, - отправляют текстовое сообщение боту.
Но, перед тем, как сделать кнопку, нужно создать клавиатуру. Для обычных кнопок она одна, для inline другая, вот обычная:
Параметры:
resize_keyboard: bool - необязательный | будет ли клавиатура растягиваться (по умолчанию: без значения)
one_time_keyboard: bool - необязательный \ разовая ли клавиатура (по умолчанию: без значения)
selective: bool - необязательный | кому показывать (по умолчанию: без значения)
row_width: int - обязательный | количество столбцов кнопок (по умолчанию: 3)
input_field_placeholder: str - необязательный | заменяет текст-заглушку в поле ввода (по умолчанию: без значения)
Создав клавиатуру, создадим к ней кнопку:
text: str - обязательный | текст кнопки. Если указан только он, то кнопка будет просто отправлять текст при нажатии.
request_contact: bool - необязательный | если указан как true то пользователь при нажатии отправит свой контакт. Доступен только в приватных чатах.
request_location: bool - необязательный | если указан как true, то пользователь при нажатии отправит свою локацию. Доступен только в приватных чатах.
request_poll: bool - необязательный | если указан как true, то пользователь при нажатии отправит свою локацию. Доступен только в приватных чатах.
web_app: WebAppInfo - необязательный | если указан как true, то при нажатии откроется страница указанного веб-приложения - про это есть отдельная статья. Доступен только в приватных чатах.
После создания кнопки ее нужно добавить в клавиатуру вот так:
И далее дать эту клавиатуру пользователю с сообщением:
- Отправить можно только одну клавиатуру за раз
- Это актуально для всех типов клавиатур.
Inline
Inline-кнопки вы видите под сообщением.
Клавиатура для них делается вот так:
у нее только один параметр:
row_width: int - обязательный | количество столбцов кнопок (по умолчанию: 3)
Теперь делаем кнопку:
inline-кнопки бывают нескольких видов.
1) Отправляющие данные. В кнопке записаны какие-то данные в формате строки. При нажатии их можно отловить и среагировать на них.
2) Ссылки - просто открывают сайт в вашем браузере.
3) WebApp - открывают веб-приложение в отдельном окне, опять-таки у меня есть статья об этом.
Есть и другие виды. Можете посмотреть актуальные по ссылке.
Рассмотрим самый часто используемый - отправляющий данные.
Чтобы создать такую нам нужно указать просто текст и данные в виде строки. А чтобы отловить это действие и получить данные нужно сделать следующее:
Вот и все, мы выяснили какие бывают основные кнопки и как ими пользоваться.
Нужен VDS-сервер для хостинга ботов? - рекомендую sprintbox. По моему промокоду CASHGOK20 вы получите кэшбэк 20% при первом пополнении - не забудьте ввести его.
Успехов и всего доброго 🤟
Добрый день, Михаил! А как можно размещать опрос типа такого?
Пересылать сообщение наверное, раз опрос
Да, можно делать опросы, есть отдельные функции для этого.
Примерно так:
bot.send_poll(message.chat.id, 'вопрос', options=['1', '2', '3'])
Добрый день!
А как ограничивать ответы бота?
Чтобы с одной ReplyKeyboard только одни команды регистрировались, а на другой другие?
Просто в таком формате обработке я могу вбить вариант из другой клавиатуры🙃
Разобрался