首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >电报机器人错误- telegram.error.BadRequest: Button_data_invalid

电报机器人错误- telegram.error.BadRequest: Button_data_invalid
EN

Stack Overflow用户
提问于 2018-11-23 12:28:39
回答 1查看 3.5K关注 0票数 3

我正在尝试用Python上的telegramtelegram.ext库制作一个电报机器人。我尝试将按钮的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)]]

我真的不知道我错在哪里了。当我将静态文本赋值给callback_data而不是args时,它工作得很好

你觉得会是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 13:40:57

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

代码语言:javascript
运行
复制
len('YOUR DATA'.encode('utf-8'))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53440654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档