python-telegram-bot菜单创建util库导入问题

时间:2017-06-17 09:48:20

标签: python-telegram-bot

我试图使用python-telegram-bot模块在电报中构建菜单,其中有以下内容:

button_list = [
    InlineKeyboardButton("col 1", ...),
    InlineKeyboardButton("col 2", ...),
    InlineKeyboardButton("row 2", ...)
]
reply_markup = InlineKeyboardMarkup(util.build_menu(button_list, n_cols=2))
bot.send_message(..., "A two-column menu", reply_markup=reply_markup)

我收到此错误:

  

NameError:全局名称' util'未定义

我无法对样本中的导入进行罚款,但在那里无法识别。

我应该准确导入什么?

1 个答案:

答案 0 :(得分:2)

该示例来自我们的Code Snippets页面。因此,要使代码生效,您需要实际包含代码段,因为它本身并不是库的一部分。

def build_menu(buttons,
               n_cols,
               header_buttons,
               footer_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

然后将util.build_menu(button_list, n_cols=2)更改为build_menu(button_list, n_cols=2)

请注意,您甚至不必使用build_menu来使用按钮。事实上,将按钮定义为二维列表通常更简单,因此您的代码将变为:

button_list = [
    [
        InlineKeyboardButton("col 1", ...),
        InlineKeyboardButton("col 2", ...)
    ],
    [
        InlineKeyboardButton("row 2", ...)
    ]
]
reply_markup = InlineKeyboardMarkup(button_list)
bot.send_message(..., "A two-column menu", reply_markup=reply_markup)