Викторины
Quiz — особый тип опроса с правильным ответом. После голосования юзер видит правильный/неправильный.
Создание
POST /sendPoll
{
"chat_id": 12345,
"question": "Сколько байт в килобайте?",
"options": ["1000", "1024", "100", "512"],
"type": "quiz",
"correct_option_id": 1,
"is_anonymous": false,
"explanation": "В двоичной системе 1 КБ = 1024 байт",
"explanation_parse_mode": "HTML",
"open_period": 30
}
Параметры специфичные для quiz:
correct_option_id— индекс правильного варианта (от 0)explanation— текст пояснения после ответа (до 200 символов)explanation_entities— форматирование поясненияopen_period— сколько секунд опрос открыт (5-600)
Особенности
- Quiz не может быть анонимным (
is_anonymous: falseобязательно). - Поддерживает только один ответ (multiple-answers недоступно).
explanationпоказывается всем после голосования.- После
open_periodопрос автоматически закрывается, или используйтеclose_date.
Серия викторин
Простая логика для серии вопросов:
questions = [
{'q': 'Столица Франции?', 'opts': ['Лондон', 'Париж', 'Берлин'], 'correct': 1},
{'q': '2 + 2 = ?', 'opts': ['3', '4', '5'], 'correct': 1},
]
for i, q in enumerate(questions):
bot.send_poll(
chat_id, q['q'], q['opts'],
type='quiz', correct_option_id=q['correct'],
is_anonymous=False, open_period=30
)
await asyncio.sleep(35) # ждём пока опрос закроется
Для подсчёта итогового счёта используйте события poll_answer (см. poll events).