Сложные «танцы» дилетанта вокруг телеграмм-бота викторины на java
Написав в 2023 году своего второго бота – картинную галерею (функционал которого был достаточно прост – выдавать пользователю по запросу примеры картин художников, экспонирующиеся в крупных российских музеях), во мне зародилась мысль трансформировать его в викторину, где пользователь должен угадать художника той или иной картины. Функционал викторины классический: - телеграмм-бот в случайном порядке должен присылать пользователю картины известных художников, которые сохранены в его базе, - под картиной предлагаются кнопки с вариантами ответа, - при выборе правильного ответа – присылается сообщение с результатом, названием картины и новая картина с вариантами ответов, - если ответ неверный, пользователя об этом оповещают и предлагают либо выбрать другой вариант, либо нажать на соответствующую кнопку для получения нового вопроса-картины, - если какая-то картина высылается повторно – варианты ответов должны выдаваться в иной последовательности, чем предлагались ранее, - ведется статистика правильных ответов с возможностью ее обнуления, - в перспективе – расширение тематики викторин. Возникшие трудности. Первая трудность, которая возникла еще на стадии самотестирования бота, было то, что рандомный метод выбора вопроса из коллекции вопросов работал странно: из 400 объектов его словно замыкало на 10-20 и он навязчиво высылал картины в этом диапазоне, а порой выдавал одну картину 2 и более раз подряд. Вторая трудность уже проявилась, когда я развернула бот на хостинге и предоставила его для использования широкой аудитории – бот работал со всеми пользователями как с одним. То есть, значения полей (правильный ответ, описание и пр.) были актуальными всегда для вопроса, который бот выслал последим независимо от того, что это за пользователь. Иными словами, получаю, например, я очередной вопрос от бота. Если до того, как я на него отвечу, какому-то другому пользователю бот тоже вышлет вопрос, то что бы я не отвечала – любой мой ответ уже будет неверным, т.к. в памяти бота правильный ответ привязан к тому вопросу, который он в принципе отправил последним, а не последним именно мне.
https://habr.com/ru/articles/881332/
#telegram #telegram_bot #telegrambot #bot #telegrambot