(неважно на каком языке)? Там же куча колбеков на разные команды, текущие статусы пользователя и тд. У меня пока получается лапша из кучи if elif else. Хочу сделать поаккуратнее.
использовать библиотеку для апи они предоставляют хендлеры
Это я знаю. Вопрос, как организовать код, когда хэндлеров становится слишком много.
просто разбивать по файлам а вообще в хендлерах не должно быть if elif else для проверки ввода
https://github.com/Tishka17/tgbot_template
Ну смотри. Я пишу сложное взаимодействие. Пользователь может инициировать процесс, может поучаствовать, может вклиниться в середине. Это значит, что надо хранить разные статусы, понимать, что он имел в виду. Сложная логика. И я хочу иметь возможность через полгода разобраться в этой логике. Поэтому спрашиваю best practices. А не как апи телеги использовать :)
Снова этот чел с половинчатым лицом
https://github.com/Latand/aiogram-bot-template @Tishka17 не бань
Отлично, спасибо
А че ему банить то?)))
У него же свой похожий проект есть
этих шаблонов куча
А есть лучше чем у Latand?
они все по своему хороши
У меня есть базовые обработчики запроса, состояний и callback функций. Запрос попадает на контроллер, дальше кладется в очередь. После из очереди он попадает в "маршрутизатор". Там на основе данных я определяю, состояние это или просто кнопка. И дальше уже функция обработчика этой кнопки. Все разбито по папкам, например mainMenu, Settings. В каждой папке есть файлы с обработчики кнопок, которые принадлежат этому меню.
Маршрутизатор - одна функция, или чтото более сложное?
Три. Одна получает весь список кнопок, которые есть и перебирает на соответствие. Формат такой 'settings.setTimeZone' => 'Указать таймзону'. Соответственно, если прилетело сообщение с этим текстом, то бот отдает ключ. Вторая на основе этого собирает путь до класса обработчика в формате Chat/Football/Settings/MessageHandler. И в нем дёргается команда, которая после точки, то есть setTimeZone. Это вспомогательные функции. Основная проверяет, есть ли такой пользователь (исключение команда старта), что вообще прилетело в бота. Есть ли там callback или только сообщение. Есть ли активное состояние у пользователя (если он нажимает на кнопку, то я отдаю сообщение, тип введите таймзону и перевожу в состояние ввода и бот ожидает, что придет верная таймзона). А дальше по сути передает данные в нужный обработчик. Если что то пошло не по плану, то отправляется сообщение о том, что либо введена неверная команда или данное меню ещё не создано/не работает.
Обсуждают сегодня