Skip to main content

Викторины

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).