- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为 telegram 组创建了一个机器人,但是每当有人发送一个poll 时,这个错误就会一次又一次地出现。
不断给出错误的 API 消息:
{"update_id":869921319,
"poll":{"id":"5427146762856956026","question":"[4/10] Qui \u00e9tait le ma\u00eetre de Grey","options":[{"text":"Oul","voter_count":6},{"text":"Grandin\u00e9","voter_count":0},{"text":"Leon","voter_count":0},{"text":"Mavis","voter_count":2}],"total_voter_count":8,"is_closed":true,"is_anonymous":false,"type":"quiz","allows_multiple_answers":false,"correct_option_id":0}}
我的代码:
import telepot
def on_chat_message(msg):
try:
content_type, chat_type, chat_id = telepot.glance(msg)
except Exception as e:
return "Oops!", e.__class__, "occurred."
def on_callback_query(msg):
query_id, chat_id, query_data = telepot.glance(msg, flavor='callback_query')
TOKEN = "BOT TOKEN"
bot = telepot.Bot(TOKEN)
MessageLoop(bot, {'chat': on_chat_message,
'callback_query': on_callback_query}).run_as_thread()
print('Listening ...')
while 1:
time.sleep(10)
错误:
Traceback (most recent call last):
File "C:\Python38\lib\site-packages\telepot\loop.py", line 67, in run_forever
self._update_handler(update)
File "C:\Python38\lib\site-packages\telepot\loop.py", line 153, in <lambda>
collectloop.input_queue.put(_extract_message(update)[1]))
File "C:\Python38\lib\site-packages\telepot\loop.py", line 103, in _extract_message
key = _find_first_key(update, ['message',
File "C:\Python38\lib\site-packages\telepot\__init__.py", line 68, in _find_first_key
raise KeyError('No suggested keys %s in %s' % (str(keys), str(d)))
KeyError: "No suggested keys ['message', 'edited_message', 'channel_post', 'edited_channel_post', 'callback_query', 'inline_query', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query'] in {'update_id': 869921319, 'poll': {'id': '5427146762856956026', 'question': '[4/10] Qui était le maître de Grey', 'options': [{'text': 'Oul', 'voter_count': 6}, {'text': 'Grandiné', 'voter_count': 0}, {'text': 'Leon', 'voter_count': 0}, {'text': 'Mavis', 'voter_count': 2}], 'total_voter_count': 8, 'is_closed': True, 'is_anonymous': False, 'type': 'quiz', 'allows_multiple_answers': False, 'correct_option_id': 0}}"
最佳答案
您可能知道,telepot 已经有一段时间没有维护了。在我看来它像 this pull request试图解决这个问题,但从未合并。继续使用 telepot 可能是不可取的。
但是,您可以查看 forks .也许其中一个实际上仍然有效。
这个问题很可能是由于 telegram 端 API 的更改,以及 telepot 中意外值的不干净处理造成的。
由于这样的消息,我自己的机器人最近也停止工作了。我在没有进行太多审查的情况下切换到 this fork - 我不再投资于我的机器人,所以必须这样做。根据您的使用情况,这可能是也可能不是一个好的途径。
如果你选择去做,那只是一个
python2.7 -m pip install --user https://github.com/MoumenKhadr/telepot.git
或者只是
pip install https://github.com/MoumenKhadr/telepot.git
取决于您的设置。
关于python - Telepot 错误不断出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65487195/
我为 telegram 组创建了一个机器人,但是每当有人发送一个poll 时,这个错误就会一次又一次地出现。 不断给出错误的 API 消息: {"update_id":869921319, "poll
我在 python 3.5 中将 Telepot python 库与我的机器人一起使用。我想阅读已经在聊天中的消息文本,知道电报聊天的 id 和消息的 id。我能怎么做? 最佳答案 telepot库是
我可以使用 Telepot 将内联键盘按钮放在多行上吗? 如果我能做到,我该怎么做? 我尝试通过这个示例来学习如何使用 InlineKeyboard, 但我没有找到有关 Telepot 中内联键盘的其
我是 Python 和 Telegram bot 的新手,我希望你能通过一个简单的例子帮助我理解这一点。我需要的是定义一个方法,返回一个字符串来完成一个 url。在Python中我需要的是: user
我已经尝试过了 elif command == 'bold': telegram_bot.sendMessage (chat_id, str("*bold*"), reply_markup=m
我无法发送照片,这里的代码有错误: if command.startswith('/rank '): rank(msg) def rank(msg): chat_id = msg['c
我正在尝试研究 python 库 Telepot通过查看 counter.py此处提供的示例:https://github.com/nickoala/telepot/blob/master/examp
我正在使用 telepot 制作电报机器人。 当群聊消息以“/”开头时,它会处理一个处理程序。 有没有办法获取所有群聊消息? 最佳答案 有两种方法可以获取一个群组的所有消息: 1.您的机器人应该被添加
我正在使用 Python 的 Telepot 库开发 Telegram Bot ,并且需要让两个机器人在一组中相互通信。 出于某种原因,两个机器人都无法读取机器人发送的消息。 有人能告诉我我该怎么做吗
我试图制作一个机器人来检索群组中聊天发件人的姓名。我将 Python 与 Telepot 结合使用。 >>> from pprint import pprint >>> import telepot
在我的研究中,我想使用 Telegram 机器人每天在特定时刻向实验中 35 名志愿者的个人智能手机发出 4 个简单的多项选择题。我已经检查了 Telepot 文档和示例,但我无法构建一个好的解决方案
我目前正在使用 VPN 和用于管理 Telegram Bot 的 telepot 库。 当我尝试收听消息时,它给了我这个 SSL 错误。 Traceback (most recent call las
我正在使用 python 编写电报机器人 telepot api .我现在被困在我想发送直接来自 URL 而不将其存储在本地的图片的点。 Telepot提供以下发送照片的说明: >>> f = ope
我是一名优秀的程序员,十分优秀!