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)
我正在尝试使用 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)