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

python-telegram-bot menu creation util library import issue

我正在尝试使用 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: global name 'util' is not defined

我无法在示例中对导入进行罚款,而且那里无法识别它。

我到底应该导入什么?

该示例来自我们的 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)