You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的问题。

修正步骤

  1. 所有内联按钮的callback_data统一转为字符串格式
  2. 检查所有用到的按钮(包括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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:09:03