Telegram bot for getting answers on topics for 🇺🇦 Ukrainian refugees and volunteers. Relates to https://uahelp.wiki/ and https://www.youtube.com/UAhelp.
Сейчас все сообщения выдаются исключительно на русском и берутся из хард-кода.
Нужно перенести это в ресурсы.
С передачей параметров вроде ${bot.botName} $commandText
❓ А можно ли передавать именнованные, а не порядковые параметры? Возможно, нужно использовать не стандартные ResourceBundle, а некую стороннюю библиотеку.
Бот должен уметь в рантайме переключать язык специальной админской командой.
В идеале это надо делать початово, но тогда нужно сохранять состояние в персистентном хранилище, чтобы оно сохранялось при рестартах ботов.
❗Это в отдельную задачу, так как помимо сложности, это будет добавлять дополнительную стоимость в инфраструктуру.
Что нужно переводить:
Описания команд.
Результаты команд.
❓То, что сейчас в настраиваемых параметрах, и так уже является настраиваемым.
Завожу письменную задачу, потому что надо подумать на бумажке :)
Логика получения ответа
Сейчас логика получения такая и жёстко задана в коде:
Если сообщение не для бота, оно игнорируется
Если обнаружена специальная команда (начинающаяся со / + вызвал админ бота) — возвращается ответ на спецкоманду
С одной вкладки команд — если найдены ответы с вкладки команд — возвращается этот ответ.
Если найдено несколько ответов на одной и той же вкладке команд — возвращаются все ответы в одном списке.
С 3 захардкоженных вкладок чатов и страниц вики — собираются все ответы со всех вкладок в один ответ.
Захардкожены не названия вкладок, а само то, что это именно есть вкладки страниц, городских чатов, страновых чатов.
Что нужно оставить
Вкладки команд перегружают ответы — это даёт возможность перегружать, например, чаты, или страницы вики по тем же ключевым словам.
Можно сделать конфигурационным флагом, но неприоритетно.
Что хочется поменять
Сделать набор вкладок конфигурируемым для каждого бота.
Какие вкладки должен брать бот, а какие нет.
Это позволить исключать нежелаемые ответы поботно (вдруг кто-то не хочет выдавать страницы вики, например).
Получить возможность сделать "общую вкладку команд" для всех ботов.
Чтобы заводить общие ответы типа "Привет" итд.
❓ А как просто и понятно задавать приоритеты вкладок? Или просто оставить "вкл/выкл" вкладок?
Задаём имена командных вкладок в массиве, ищем по порядку в массиве.
Но оверрайд по-прежнему непонятен. Когда нашёлся ответ на более ранней вкладке, нужно ли искать на следующей или нет? И как это задавать.
Видимо, берём с первой найденной вкладки команд. Чтобы иметь возможность перегрузить дефолтный "привет" на кастомный поботный.
Хорошо бы сделать изменение командных вкладок (или вообще конфига вкладок) в рантайме.
Если это JSON, то админы должны уметь его редактировать.
Добавить админскую команду получения JSON-овского конфига,
Выдаётся конфиг только текущего бота.
Естественно, скрываются тайные поля (вроде доступа к гугло-щиту и токена бота).
В ReloadFromGoogleSheet в результате должны выдаваться все вкладки (или вообще весь JSON-конфиг по вкладкам). Сейчас выдаётся только одна командная вкладка.
Типы формата вкладок
Типы формата вкладок фактически делятся на:
Страницы вики — название страницы + урл страницы + ключевые слова
Чаты — город/страна + ключевые слова + много столбцов чатов
Формат чатов для городов Германии и стран/других городов совпадает.
Команды — ответ + ключевые слова
❓ Какой формат будет у вкладки с видео с UAHelp
Нужны ли там отдельные столбцы для того же видео на Ютьюбе и ТикТоке?