电报机器人应该发送一个“测验”如何做?

问题描述 投票:0回答:1
@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"]
        bot.send_poll(call.message.chat.id, question, options)

目前为止,已经有这样的代码了。但现在,任何答案都是正确的。如何确保只有一个正确答案?

应该记住,我需要一个“测验”。也就是说,不应使用 InlineButtons。

python telegram-bot
1个回答
0
投票

要创建只有一个选项正确的投票,您可以使用带有

send_poll
is_anonymous=False
参数的
type='quiz'
方法,以及
correct_option_id
参数来指定哪个选项是正确的。由于“Paris”是正确答案,并且是选项列表中的第一个选项(索引为 0),因此您可以设置
correct_option_id=0
。这可确保您的民意调查被识别为测验,并且只有您指定为正确的选项才会被视为测验。

以下是修改代码以包含这些更改的方法:

@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"]
        # Setting correct_option_id to 0 since "Paris" is the first option and the correct answer.
        # Note: The is_anonymous parameter is optional for quizzes, as quizzes are not anonymous by default.
        bot.send_poll(
            chat_id=call.message.chat.id,
            question=question,
            options=options,
            is_anonymous=False,
            type='quiz',
            correct_option_id=0
        )

在此修改后的代码片段中:

  • is_anonymous=False
    确保投票不是匿名的。这是 测验是可选的,因为默认情况下测验投票不是匿名的。
  • type='quiz'
    指定民意调查是测验类型,允许 用于指定正确答案并自动计算分数 对于每个参与者。
  • correct_option_id=0
    表示第一个选项(“巴黎”)是 正确的一个。
    correct_option_id
    基于的索引 选项列表中的正确答案,从 0 开始。通过使这些 调整,您将确保您的民意调查表现为测验, 只有“巴黎”被认为是该问题的正确答案 法国首都。
© www.soinside.com 2019 - 2024. All rights reserved.