【问题标题】:Constructing InlineKeyboardButton Dynamically in Python在 Python 中动态构造 InlineKeyboardButton
【发布时间】:2018-03-14 17:30:56
【问题描述】:

我想在 python 中为 Telegram 创建一个 InlineKeyboardButton,如下面的函数,但我想动态地做。此功能将两个按钮组合在一行中,并将一个按钮添加到第二行。我想每行做两个按钮。

def options(bot, update):
    keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
                 InlineKeyboardButton("Option 2", callback_data='2')],
                [InlineKeyboardButton("Option 3", callback_data='3')]]

    reply_markup = InlineKeyboardMarkup(keyboard)

    update.message.reply_text('Please choose:', reply_markup = reply_markup)

但是无论我尝试什么,我都会收到类似的错误消息

data['inline_keyboard'].append([x.to_dict() for x in inline_keyboard])
AttributeError: 'list' object has no attribute 'to_dict'

我的代码如下:

def create_options(self, gid, Events):
    opts = []
    o = []
    keyboard = []

    for i, events in enumerate(Events):
        if (events.gid == gid):
            o.append([[InlineKeyboardButton(events.etkinlik + u" ????", callback_data=i),InlineKeyboardButton(events.etkinlik + u" ????", callback_data=i)]])
            opts.append(o)
    keyboard.append(opts)
    return InlineKeyboardMarkup(keyboard)

你能建议我在哪里做错了吗?

非常感谢您的帮助

【问题讨论】:

    标签: python telegram-bot python-telegram-bot


    【解决方案1】:

    我找到了解决方案,如果我以这种方式编码,它可以按我的意愿工作。

    keyboard = []
    for i, events in enumerate(Events):
         if (events.gid == gid):
            keyboard = keyboard + 
            [[InlineKeyboardButton(events.etkinlik + u" ?", callback_data=i),
              InlineKeyboardButton(events.etkinlik + u" ?", callback_data=i + 100)]]
    return InlineKeyboardMarkup(keyboard)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 2021-04-07
      相关资源
      最近更新 更多