Как я могу заменить inlineKeyboardButton на другой inlineKeyboardButton, используя библиотеку python-telegram-bot? - PullRequest
0 голосов
/ 12 февраля 2019

Я новичок в программировании, сейчас пытаюсь создать простой меню телеграмма бота.

Как заменить текущие кнопки встроенной клавиатуры на другую?Я просто хочу создать меню с кнопками, в которых в зависимости от того, что я нажимаю, появляются различные встроенные кнопки клавиатуры, например, нажав «Happy», я хочу, чтобы появилось три разных счастливых состояния.Кто-нибудь может предложить легкий путь?

def start(bot, update):
    keyboard = [
                [InlineKeyboardButton("Happy", callback_data='1'),
                 InlineKeyboardButton("Whatever", callback_data='2')],
                [InlineKeyboardButton("Sad", callback_data='3')]]

    reply_markup = InlineKeyboardMarkup(keyboard)

    update.message.reply_text('Hey there! How do you feel today?', reply_markup=reply_markup)




def button(bot, update):
    query = update.callback_query
    if query.data == "1":

        bot.editMessageText(text="wowowowow",
                       chat_id=query.message.chat_id,
                       message_id=query.message.message_id)

    if query.data == "2":
        em = emoji.emojize(':expressionless:', use_aliases=True)
        bot.editMessageText(text="Does it matter? %s " % em,
                        chat_id=query.message.chat_id,
                        message_id=query.message.message_id)

    if query.data == "3":
        em = emoji.emojize(':disappointed:', use_aliases=True)
        bot.editMessageText(text="Oh man! %s " % em,
                        chat_id=query.message.chat_id,
                        message_id=query.message.message_id)

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Чтобы заменить встроенную клавиатуру, вы можете просто использовать метод bot.editMessageText или bot.editMessageReplyMarkup

I am using bot.editMessageText for this problem:

def button(bot,update):
    query=update.callback_query
    if query.data=='1':
        keyboard=[[InlineKeyboardButton('Happy 1',callback_data='1')],[InlineKeyboardButton('Happy 2',callback_data='2')],[InlineKeyboardButton('Happy 3',callback_data='3')
        reply_markup=InlineKeyboardMarkup(keyboard)
          bot.editMessageText(chat_id=query.message.chat_id,message_id=query.message.message_id,reply_markup=reply_markup)
0 голосов
/ 15 февраля 2019

Для замены InlineKeyboard вы можете использовать bot.edit_message_reply_markup.

Это будет примерно так:

def button(bot,update):
   query=update.callback_query

   if query.data == "1":
      keyboard=[[InlineKeyboardButton(' Just Happy',callback_data='0')],
                [InlineKeyboardButton('Very Happy',callback_data='1')]]

      reply_markup=InlineKeyboardMarkup(keyboard)

      bot.edit_message_reply_markup(
         chat_id=query.message.chat_id,
         message_id=query.message.message_id,
         reply_markup=reply_markup)

Надеюсь, это полезно!

...