登录
首页 >  文章 >  python教程

如何使用 Telegram Bot 创建单选测验(Quiz)并指定唯一正确答案

时间:2026-05-24 14:20:32 468浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《如何使用 Telegram Bot 创建单选测验(Quiz)并指定唯一正确答案 》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

如何使用 Telegram Bot 创建单选测验(Quiz)并指定唯一正确答案

本文详解如何通过 send_poll 方法创建 Telegram 测验型投票,设置 type='quiz' 和 correct_option_id 参数,确保仅一个选项被识别为正确答案,且无需 InlineKeyboard,完全符合官方 Quiz 交互规范。

本文详解如何通过 `send_poll` 方法创建 Telegram 测验型投票,设置 `type='quiz'` 和 `correct_option_id` 参数,确保仅一个选项被识别为正确答案,且无需 InlineKeyboard,完全符合官方 Quiz 交互规范。

在 Telegram Bot 中实现真正的“测验(Quiz)”功能,关键在于使用 send_poll 的测验模式(type='quiz'),而非普通匿名投票。与常规投票不同,Quiz 类型支持指定唯一正确答案、自动高亮反馈(✅/❌)、实时计分,并禁用多选——这正是你所需的核心行为。

以下是你原有代码的正确升级版,已添加必要参数并优化可维护性:

@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"]

        # ✅ 关键参数:启用 Quiz 模式 + 指定正确选项索引(0-based)
        bot.send_poll(
            chat_id=call.message.chat.id,
            question=question,
            options=options,
            type='quiz',                 # 必须设为 'quiz'
            correct_option_id=0,         # "Paris" 在 options 中索引为 0
            is_anonymous=False,          # 可选,但 Quiz 默认非匿名,显式声明更清晰
            allows_multiple_answers=False # Quiz 强制单选,此参数实际被忽略,但语义明确
        )

? 重要说明与注意事项:

  • correct_option_id 是必填项(对于 type='quiz'),且必须为整数,取值范围为 0 到 len(options)-1;传入错误索引将导致 API 报错。
  • Telegram 官方规定:Quiz 投票自动禁用匿名性,因此 is_anonymous=True 会被忽略,甚至可能引发警告;建议统一设为 False 或直接省略。
  • 用户提交答案后,Telegram 客户端会立即显示绿色对勾(✅)或红色叉号(❌),并标注“Correct!” / “Incorrect.”,无需 Bot 主动发送反馈。
  • 若需后续处理用户答题结果,可通过监听 poll_answer 事件(需启用 polling 并注册 @bot.poll_answer_handler),但注意该事件仅包含用户 ID 和所选选项 ID,不包含题目内容或是否答对(正确性由 Telegram 客户端本地判定并展示)。

? 进阶提示:
为提升代码健壮性,建议将题目与答案逻辑解耦,例如用字典管理题库:

QUIZ_BANK = {
    "france_capital": {
        "question": "Which city is the capital of France?",
        "options": ["Paris", "Berlin", "Madrid", "London"],
        "answer_index": 0
    },
    "germany_capital": {
        "question": "What is the capital of Germany?",
        "options": ["Berlin", "Munich", "Hamburg", "Cologne"],
        "answer_index": 0
    }
}

# 使用时:
if call.data in QUIZ_BANK:
    q = QUIZ_BANK[call.data]
    bot.send_poll(
        chat_id=call.message.chat.id,
        question=q["question"],
        options=q["options"],
        type='quiz',
        correct_option_id=q["answer_index"]
    )

至此,你的 Bot 即可稳定发送符合 Telegram 原生 Quiz 规范的单选测验,体验专业、反馈即时、开发简洁。

本篇关于《如何使用 Telegram Bot 创建单选测验(Quiz)并指定唯一正确答案 》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>