Встала задача, чтобы при нажатии обычной кнопки передачи геопозиции бот отвечал сообщением с инлайн-кнопками, но при этом пропадала кнопка передачи геопозиции. В await message.answer я могу либо указывать инлайн-клавиатуру, либо удаление обычной клавиатуры:
Как я могу это объединить?
Вот Вам вариант решения, возможно он не самый оптимальный, но, все же, является действенным и полностью соответствует Вашему запросу.
Код выполняет следующий алгоритм: 1) Пользователь инициирует /start и получает обычную кнопку «Отправить геопозицию»; 2) Пользователь решается на это не самое безопасное действие и отправляет свою геопозицию; 3) Ваш добропорядочный бот оправляет пользователю сообщенние с его геопозицией (в этом тестовом примере); 4) К этому сообщению бот прикрепляет 2 инлайн кнопки; 5) В тоже время бот выполняет процедуру удаления обычной кнопки «Отправить геопозицию».
Aiogram как удалить replykeyboardmarkup
Всё ещё ищете ответ? Посмотрите другие вопросы с метками python telegram-bot или задайте свой вопрос.
Как удалить клавиатуру telegram bot python
Как скрыть клавиатуру telebot
TELEGRAM БОТ С КЛАВИАТУРОЙ НА PYTHON ЗА 15 МИНУТ
? Посмотрите другие вопросы с метками python python-3.x telebot клавиатура или задайте свой вопрос.
- id — уникальный идентификатор пользователя в Telegram
- last_name — значение поля фамилия, может быть пустым
- first_name — значение поля имя, может быть пустым
- username — уникальное значение текстовый идентификатор, может быть пустым
- language_code — кодовое обозначение выбранного языка интерфейса приложения (en, ru . )
- is_bot — флаг, определяющий пользователя как бота, в случае с ботом равен 1, в случае с пользователем пустое значение
KeyboardButton
- text — текст который будет на отображен на кнопке, обязательный параметр, поддерживает текст и смайлики (эмодзи)
- request_contact — если параметр установлен в true, пользователь отправит в бот свой номер телефона на который зарегистрирован аккаунт
- request_location — если параметр установлен в true, пользователь отправит в бот свое текущее местоположение
- keyboard — массив кнопок (объекты KeyboardButton)
- resize_keyboard — если предать true, то клавиатура подгонится по высоте до возможного минимума.
- one_time_keyboard — возможность скрывать клавиатуру после ее использования
- selective — если надо показать клавиатуру только определенным пользователям
InlineKeyboardButton
- action — действие, в нашем случае это vote
- type — тип кнопки: 1 — левая, 0 — правая
- count1 — текущее значение левой кнопки
- count2 — текущее состояние правой кнопки
- При получении команды /start — мы выводим приветственное слово и набор кнопок: Голосовать, Помощь.
- При получении команды Помощь, выводим простое текстовое сообщение.
- При получении команды Голосовать, выводим текстовое сообщение и набор встроенных кнопок с параметром callback_data.
- При получении не запланированного значения, выводим текстовое сообщение.
- И самое интересное это когда принимаем значение в начале которого стоит action , в нашем случае это vote. Мы формируем новую клавиатуру изменяем в ней текстовое значение, увеличиваем счетчик у нажатой кнопки и подставляем новую служебную информацию в параметрах callback_data.
-
— меняем клавиатуру у заданного сообщения — позволяет выводить уведомление о проделанной работе CallbackQuery, мы его используем, уведомляя пользователя что он удачно проголосовал.
Telegram Bot PYTHON [ 2 ] | Команды и кнопки (Inline, Reply)
Как сделать кнопки в боте Телеграм на Python?
То, что цепляется к низу экрана вашего устройства, будем называть обычными кнопками , а то, что цепляется непосредственно к сообщениям, назовём инлайн-кнопками.
И, казалось бы, всё работает:
С этой ошибкой вы, скорее всего, будете поначалу часто сталкиваться, пытаясь редактировать сообщения.
Но, в действительности, решается проблема очень просто: мы проигнорируем исключение MessageNotModified.
Похожие публикации:
- Как записать звук на айфоне
- Как понять является ли число степенью двойки
- Как развернуть таблицу в excel на 90 градусов
- Телефон сам удаляет фото что делать
Источник: big-soviet.ru
Как удалить клавиатуру?(Python telegram bot, keyboard_remove)
Когда получаете следующее сообщение, добавьте строку:
await message.answer(«Клавиатура скрыта», reply_markup=types.ReplyKeyboardRemove())
Отслеживать
ответ дан 11 авг 2021 в 13:48
128 9 9 бронзовых знаков
Т.к. удалить кнопки так и не вышло, нашел другой подход:
отправляем запрос контакта.
После полученного номера, отправляем другую клавиатуру
а вот такую клавиатуру уже можно и удалить
Отслеживать
ответ дан 12 авг 2021 в 13:44
53 8 8 бронзовых знаков
- python
- telegram-bot
- клавиатура
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Есть ли функция для удаления InlineKeyboardMarkup после ответа пользователя? (Python-телеграмма-бот)
Я ищу способ удалить кнопку встроенной клавиатуры после того, как пользователь ответил. Бот телеграммы попросит пользователя выбрать вариант после того, как пользователь вводит / по умолчанию. Я хочу убрать возможность для пользователя нажимать кнопку ответа несколько раз. Ниже мой пример кода, я использую пакет python-telegram-bot.
list_default_options = [‘a’, ‘b’, ‘c’, ‘d’] def default_options(update, context): «»»Generates responses for default options.»»» button_list = [] for each in list_options: button_list.append(InlineKeyboardButton(each, callback_data=each)) reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=2)) context.bot.send_message(chat_id=update.message.chat_id, text=»Choose option», reply_markup=reply_markup) def build_menu(buttons, n_cols=1, header_buttons=None, footer_buttons=None): «»» Returns a list of inline buttons used to generate inlinekeyboard responses :param buttons: `List` of InlineKeyboardButton :param n_cols: Number of columns (number of list of buttons) :param header_buttons: First button value :param footer_buttons: Last button value :return: `List` of inline buttons «»» menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)] if header_buttons: menu.insert(0, header_buttons) if footer_buttons: menu.append(footer_buttons) return menu def query_default_option(update, context): «»»Callback function when inline response is selected»»» print(«Default Option: » + update.callback_query.data) context.bot.send_message(chat_id=update.effective_chat.id, text=»Registered: » + update.callback_query.data) def main(): # Define telegram updater and dispatcher updater = Updater(token=API_KEY, use_context=True) dp = updater.dispatcher # Register handlers # Different commands or Text dp.add_handler(CommandHandler(‘start’, start)) dp.add_handler(MessageHandler(Filters.text https://stackru.com/questions/58033429/est-li-funktsiya-dlya-udaleniya-inlinekeyboardmarkup-posle-otveta-polzovatelya-p» target=»_blank»]stackru.com[/mask_link]