Python telebot开发Telegram Bot用InlineKeyboardButton仍报文本按钮错误如何解决?
问题解决方案
这个报错是Telegram API校验内联键盘参数不合法导致的,核心原因有两个:
- 第一,Telegram API要求
InlineKeyboardButton的callback_data参数必须为字符串类型,你代码中直接传入整数0/1/2不符合接口要求 - 第二,你当前贴出的代码仅定义了btn_1到btn_3三个按钮,但add方法里传入了btn_4到btn_17共14个未在片段中定义的按钮,需要确认这些按钮的创建逻辑是否正确,避免出现参数缺失、参数顺序错误、或者误用普通
KeyboardButton的问题。
修正步骤
- 所有内联按钮的
callback_data统一转为字符串格式 - 检查所有用到的按钮(包括btn_4到btn_17)的创建逻辑,确保每个按钮都通过
types.InlineKeyboardButton创建,且正确传参
修正后的代码参考:
keyboard = types.InlineKeyboardMarkup(row_width=2) # row_width=2代表每行2个按钮 btn_1 = types.InlineKeyboardButton(bookmarks_categories[0], callback_data="0") btn_2 = types.InlineKeyboardButton(bookmarks_categories[1], callback_data="1") btn_3 = types.InlineKeyboardButton(bookmarks_categories[2], callback_data="2") # 补充完善btn_4到btn_17的定义,和上面格式保持一致,callback_data都用字符串 btn_4 = types.InlineKeyboardButton(bookmarks_categories[3], callback_data="3") # ... 剩下的btn_5到btn_17按同样规则定义 keyboard.add(btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_10,btn_11,btn_12,btn_13,btn_14,btn_15,btn_16,btn_17) bot.send_message(message.chat.id, 'Вывод inline-клавиатуры', reply_markup=keyboard)
内容的提问来源于stack exchange,提问作者makemono_zeroke
相关产品推荐
相关产品推荐

