Closed daeeros closed 3 years ago
В первую очередь нужно понять, какой смысл в этом, зачем это необходимо. После этого уже можно будет обсуждать возможные способы выполнения вашей задачи. Пока звучит не очень выполнимо
Мне требуется реализовать систему блокировки пользователя, но проверять блокировку тогда когда стригерилась одна из команд во всех плагинах, нужно понять как это реализовать, был вариант сделать список один из всех команд и проверять оттуда, но не сильный костыль это?
Для системы блокировки можно просто проверять наличие префикса (он доступен в конфигурации приложения) в сообщении. Это легче реализовать и поддерживать.
Альтернативно можно попытаться достать из инициированного глобального роутера комманд. Там будет примерно такой код, чтобы получить обработчики для данного апдейта с контекстом self._handlers.get(self._get_keys(update, ctx))
. Этот вариант, как и ручную сборку всех команд, сложно поддерживать, поэтому я бы порекомендовал именно способ из первого абзаца.
Если он не подходит, есть ещё другой вариант - добавить декоратор, который будет выполнять необходимые проверки, и вручную добавить его на все обработчики в плагинах.
Возник такой вопрос, каким образом можно реализовать проверку - когда хотя бы один из декораторов
on_commands
во всех плагинах стригерился. Но, при этом проверять это в декораторе у которого приоритет выше всех и срабатывает он в первую очередь, в нашем случаеon_messages(priority=10)
. Подскажите правильный ход реализации данной конструкции. Спасибо :3