如何修改Telegram Bot代码实现带唯一正确答案的Quiz?
修改方案:将Telegram Bot普通Poll转为Quiz形式
直接修改send_poll方法的参数即可实现Quiz功能,无需使用InlineButtons,以下是完整修改后的代码:
@bot.callback_query_handler(func=lambda call: True) def callback_handler(call): if call.data == 'start': question = "Which city is the capital of France?" options = ["Paris", "Berlin", "Madrid", "London"] # 正确选项在options列表中的索引(从0开始计数) correct_option_index = 0 bot.send_poll( chat_id=call.message.chat.id, question=question, options=options, type='quiz', # 指定消息类型为Quiz correct_option_id=correct_option_index, # 设置正确选项的索引 is_anonymous=False, # 可选:关闭匿名,显示答题者身份(默认True) explanation="Paris is the capital and most populous city of France.", # 可选:答题后显示的解释 explanation_parse_mode='MarkdownV2' # 可选:支持Markdown格式美化解释 )
关键参数说明
type='quiz':核心参数,将普通投票切换为Quiz模式,Telegram会自动处理答案的对错判定逻辑。correct_option_id:必填参数,对应options列表中正确选项的索引(从0开始),这里"Paris"是第一个选项,所以填0。is_anonymous:可选参数,默认匿名答题,若需要展示答题者的身份信息,可设置为False。explanation:可选参数,用户提交答案后会展示的补充说明,帮助用户理解正确答案的依据。explanation_parse_mode:可选参数,支持MarkdownV2或HTML格式,用于给解释内容添加样式(比如加粗、斜体)。
修改完成后,用户提交答案时,Telegram会自动验证答案正确性,只有选择正确选项才会被标记为答对,完全满足Quiz的需求。
内容的提问来源于stack exchange,提问作者MRUT
相关产品推荐
相关产品推荐

