@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。
要创建只有一个选项正确的投票,您可以使用带有
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 开始。通过使这些
调整,您将确保您的民意调查表现为测验,
只有“巴黎”被认为是该问题的正确答案
法国首都。