如何使用Telethon发送支持多选的投票?如何获取用户选择的选项?
解决方案
1. 发送多选投票
你只需在Poll构造参数中添加allows_multiple_answers=True即可开启多选支持,修改后的代码如下:
await bot.send_message(event.chat.id, file=InputMediaPoll( poll=Poll( id=event.chat.id, question="This is a test poll", answers=[PollAnswer('Option 1', b'1'), PollAnswer('Option 2', b'2')], allows_multiple_answers=True # 新增该参数开启多选 )))
注意:如果需要后续获取具体投票用户的身份与选择内容,需要额外添加
is_anonymous=False关闭匿名属性,匿名投票无法获取用户的相关投票信息。
2. 获取用户选择的投票选项
你需要监听PollAnswer类型的更新事件,该事件会在用户提交投票、修改投票选项时触发,事件对象包含以下核心信息:
- 投票ID,用于匹配你之前发送的对应投票
- 投票用户ID(仅非匿名投票可获取)
- 用户选中的所有选项索引列表
option_ids,索引从0开始计数,和你创建投票时传入的answers列表顺序一一对应
示例监听代码(以aiogram 3.x为例):
@dp.poll_answer() async def handle_poll_answer(poll_answer: PollAnswer): # 对应投票的ID poll_id = poll_answer.poll_id # 投票用户的ID user_id = poll_answer.user.id # 用户选中的所有选项的索引列表,如同时选了第一、第二个选项则返回[0,1] selected_options = poll_answer.option_ids # 此处添加你的业务处理逻辑 print(f"用户{user_id}在投票{poll_id}中选择了选项索引:{selected_options}")
内容的提问来源于stack exchange,提问作者user14023488
相关产品推荐
相关产品推荐

