python-3.x - Telegram Bot 错误 - telegram.error.BadRequest : Button_data_invalid

标签 python-3.x telegram telegram-bot

我正在尝试使用 telegram 制作 Telegram Bot 和 telegram.ext Python 上的库。我尝试通过 callback_data用于将按钮作为内联键盘的参数,但在将键盘添加为 reply_markup 时,它发送以下错误:
Traceback (most recent call last): File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\ext\dispatcher.py", line 279, in process_update handler.handle_update(update, self) File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\ext\callbackqueryhandler.py", line 143, in handle_update return self.callback(dispatcher.bot, update, **optional_args) File ".\__init__.py", line 121, in button reply_markup=reply_markup File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\bot.py", line 60, in decorator result = func(self, *args, **kwargs) File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\bot.py", line 85, in decorator result = self._request.post(url, data, timeout=kwargs.get('timeout')) File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\utils\request.py", line 273, in post **urlopen_kwargs) File "C:\Users\micke\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telegram\utils\request.py", line 210, in _request_wrapper raise BadRequest(message) telegram.error.BadRequest: Button_data_invalid
代码如下:
p1 = "%s(@%s)"%(query.from_user.first_name,query.from_user.username) text = "<b>⚔Duel</b>\nChallenger %s is ready!\nWaiting for an opponent..."%p1 args = '{"next":"player2","p1":"%s","text":"%s"}'%(p1,text) reply_markup = InlineKeyboardMarkup(kb.kb(op = "data",args = args)) bot.edit_message_text( text=text, inline_message_id=query.inline_message_id, parse_mode=ParseMode.HTML, reply_markup=reply_markup )
另外,键盘的代码是:
class kb: def kb(op = None, args = None): if op == 'data': keyboard = [[InlineKeyboardButton("Join", callback_data = args)]]
我真的不知道我错在哪里了。当代替 args 时它运行良好我将静态文本分配给 callback_data
你认为它可能是什么?

最佳答案

您传递的数据大小可能超过了 64 的最大允许字节数。
这是docs .
您可以按如下方式获取以字节为单位的数据大小。

len('YOUR DATA'.encode('utf-8'))

关于python-3.x - Telegram Bot 错误 - telegram.error.BadRequest : Button_data_invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440654/

相关文章:

python - 请求.exceptions.SSLError : [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl. c:600)

Python 3.5 While 循环不进入 If 语句

python - 如何将四列excel数据作为pandas中的两行

telegram - ifttt:将消息(文本、照片和视频)从 Telegram 重定向到电子邮件

python-3.x - conda install 的替代方案以进行快速试验?

bots - Telegram 机器人无法发送直接消息

php - 在 Telegram Bot 中发送消息

javascript - Telegram bot(telegraf.js 库)将消息从一个 channel 转发到另一个 channel 的方法?

c# - 如何在 C# 中将 jpg 转换为 webp

java - Autowire 在使用 Spring Boot 的 telegram 应用程序中不起作用