@zenondd

Как использовать 2 равных декоратора с равными аргументами?

Пишу бота на библиотеке aiogram. Пытаюсь прикрутить к нему некое подобие админ панели, код которой решил написать в отдельном файле. Как правильно прописать хендлеры для обработки нажатий стандартной клавиатуры в двух файлах: в клиентском и в админском. Ведь при использовании двух идентичных декораторов выходит ожидаемый баг.

На данный момент пишу следующим образом:

/main_bot.py

@dp.message_handler(commands=['start'])
async def start_menu(msg: types.Message):
    #start menu activation

@dp.message_handler(content_types=['text'])
async def main_func(msg: types.Message):
    if msg.text == 'text1':
        #action1
    elif msg.text == 'text2'
        #action2


/admin.py

@dp.message_handler(commands=['admin'])
async def main_admin(msg: types.Message):
    #admin menu activation

@dp.message_handler(content_types=['text'])
async def main_commands(msg: types.Message):
    if msg.text == 'text3':
        #action3
    elif msg.text == 'text4':
        #action4


При подобном написании игнорируется либо команда /start, либо /admin в зависимости от того, где в main_bot.py импортировать admin.py

В итоге никак не могу сообразить, как мне все команды, связанные с админ панелью, прописывались бы в отдельном файле. Догадываюсь, что должно быть простое решение, но никак не могу его найти.
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
lxstvayne
@lxstvayne
Люблю Python
Неправильно хендлеры для текста пишешь, ты должен не просто контент тайп проверять, но и текст:
@dp.message_handler(text="blablabla", content_types=['text'])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы