@Masvy

По какой причине может не срабатывать фильтр?

У меня есть бот, который должен показывать разное меню для людей с разным статусом пользователя.
Эти статусы можно разделить на две группы. Для каждой группы я выделил 2 модуля, чтобы не писать кучу кода в одном.

Для реализации задумки, написал фильтр:
from aiogram.filters import BaseFilter
from aiogram.types import Message

from db.users import read_status_member


class IsStatus(BaseFilter):
    def __init__(self, status_member_list: list[str]) -> None:
        self.status_member_list = status_member_list

    async def __call__(self, message: Message) -> bool:
        status = read_status_member(message.from_user.id)
        return status in self.status_member_list


Вот фрагмент кода из модуля для новых пользователей:
@router.callback_query(Text(text='okay_but_pressed'))
async def show_menu(callback: CallbackQuery):
    name_user = await read_name(callback.from_user.id)
    await callback.message.answer_photo(photo=file_id[0],
                                        caption=f"Привет, {name_user[0]}"
                                        f"\n\n{USER_LEXICON['greetings']}",
                                        reply_markup=menu_kb)


Далее код(скину весь, так как в этом модуле только начал работать, ещё мало чего успел написать) из модуля, предназначенного для пользователей, у которых более высокий статус:
from aiogram import Router
from aiogram.types import CallbackQuery
from aiogram.filters import Text

from filters.member_filters import IsStatus
from db.users import read_name
from lexicon.user_lexicon import USER_LEXICON
from keyboards.reply_user import menu_kb_1

router: Router = Router()

status_member_list: list[str] = ['Лайт', 'Стандарт', 'Макс']


@router.callback_query(Text(text='okay_but_pressed'), IsStatus(status_member_list))
async def show_menu_2(callback: CallbackQuery):
    name_user = await read_name(callback.from_user.id)
    await callback.message.answer(text=f"Привет, {name_user[0]}"
                                  f"\n\n{USER_LEXICON['greetings']}",
                                  reply_markup=menu_kb_1)


Моя проблема в том, что в обоих случаях срабатывает хэндлер из модуля для обычных пользователей. По какой причине может не срабатывать второй хэндлер?
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы