python - 删除投票 python-telegram-bot
问题描述
我正在使用 python 中的 python-telegram-bot 库开发电报机器人我希望我的机器人向用户发送测验这是代码:
question = dict_api.get_question()
word = question['word']
answer = question['answer']
options = question['options']
q = f"What is the translation of the word '{word}'"
context.bot.send_poll(chat_id=person_id, question=q, options=options, type=Poll.QUIZ, correct_option_id=answer)
我有 PollHandler 来处理响应,当用户响应时,我希望机器人删除用户的测验,我该怎么做?
我试图删除它
context.bot.delete_message(message_id=update.poll.id, chat_id=chat_id)
因为有人会删除一条消息,但它没有用,我认为是因为电报对民意调查的处理方式不同。提前致谢
解决方案
的message_id
参数bot.delete_message
需要消息 id,而不是轮询 id。请注意,投票更新不包含message_id
,因为例如可以转发投票,因此即使在您的机器人甚至不是成员的聊天中,它们也可以有多个 message_id。
但是,如果您只想删除原始消息,您可以例如在 eg(chat_id, message_id)
中存储一个映射轮询 id -> context.bot_data
,然后用于chat_id, message_id = context.bot_data[update.poll.id]
获取存储的值以删除该消息。请注意,context.user/chat_data
此处无法解决此问题,因为投票更新与特定用户/聊天无关,因此context.user/chat_data
将None
在PollHandler
回调中。
除了存储之外(chat_id, message_id)
,您还可以只存储返回的Message
对象bot.send_poll
- 然后您只需调用context.bot_data[update.poll.id].delete()
.
参考:
免责声明:我目前是python-telegram-bot
.
推荐阅读
- python - 处理多个数组
- python - PyCharm 文件大小超出配置限制 (2,56 MB),代码洞察功能不可用
- c# - IContainerBuilder.AddService 在添加 EdmModel 中的 IRouteBuilder OData .Net Core 中不起作用
- java - 按特定顺序合并两个地图
- javascript - 开发过程中 vs 代码扩展中的contributors.configuration 属性
- database - 使用时间范围在多个日志文件中搜索时间戳,但我有大量数据。那么,如何快速提取日志?
- python - 这是使用 tkinter 进行绘图的代码,但在我的课堂上使用激光方法会产生意想不到的结果
- bash - 将带有参数的 bash 命令传递给函数
- javascript - 在reactjs中迭代数组
- autohotkey - AHK 如果按下键,请执行此操作