Сложные «танцы» дилетанта вокруг телеграмм-бота викторины на java

Написав в 2023 году своего второго бота – картинную галерею (функционал которого был достаточно прост – выдавать пользователю по запросу примеры картин художников, экспонирующиеся в крупных российских музеях), во мне зародилась мысль трансформировать его в викторину, где пользователь должен угадать художника той или иной картины.

Функционал викторины классический:

— телеграмм-бот в случайном порядке должен присылать пользователю картины известных художников, которые сохранены в его базе,

— под картиной предлагаются кнопки с вариантами ответа,

— при выборе правильного ответа – присылается сообщение с результатом, названием картины и новая картина с вариантами ответов,

— если ответ неверный, пользователя об этом оповещают и предлагают либо выбрать другой вариант, либо нажать на соответствующую кнопку для получения нового вопроса-картины,

— если какая-то картина высылается повторно – варианты ответов должны выдаваться в иной последовательности, чем предлагались ранее,

— ведется статистика правильных ответов с возможностью ее обнуления,

— в перспективе – расширение тематики викторин.

Возникшие трудности.

Первая трудность, которая возникла еще на стадии самотестирования бота, было то, что рандомный метод выбора вопроса из коллекции вопросов работал странно: из 400 объектов его словно замыкало на 10-20 и он навязчиво высылал картины в этом диапазоне, а порой выдавал одну картину 2 и более раз подряд.

Вторая трудность уже проявилась, когда я развернула бот на хостинге и предоставила его для использования широкой аудитории – бот работал со всеми пользователями как с одним. То есть, значения полей (правильный ответ, описание и пр.) были актуальными всегда для вопроса, который бот выслал последим независимо от того, что это за пользователь. Иными словами, получаю, например, я очередной вопрос от бота. Если до того, как я на него отвечу, какому-то другому пользователю бот тоже вышлет вопрос, то что бы я не отвечала – любой мой ответ уже будет неверным, т.к. в памяти бота правильный ответ привязан к тому вопросу, который он в принципе отправил последним, а не последним именно мне.

Читать далее

Щелкните ниже, чтобы поставить оценку!
Всего: 0 В среднем: 0

Написать комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *