@PabloEsccobar

Как написать фильтр юзеров для телеграмм бота на aiogram?

в боте надо реализовать проверку на наличие telegram_id в базе данных SQLite и соответственно предоставить доступ к телеграм боту юзерам если присутствует telegram_id в БД и запретить всем остальным. Задал данный вопрос очень известному искусственному интеллекту и вот такой код он мне предоставил. Далее вопрос почему этот код не работает. Ошибку прикреплю в конце кода.
connect = sql.connect('prostoy.db')
cursor = connect.cursor()


class CheckUserFilter(BoundFilter):
    key = 'check_user'

    def __init__(self, check_user):
        self.check_user = check_user

    async def check(self, message: types.Message):
        telegram_id = message.from_user.id
        cursor.execute("SELECT telegram_id FROM users WHERE telegram_id=?", (telegram_id,))
        result = cursor.fetchone()
        if result:
            return True
        else:
            await message.answer("Здравствуйте, к сожалению вашего Telegram ID нет в базе данных.\n"
                                 "Обратитесь к администратору.\n")
            return False


class Dialog1(StatesGroup):
    addNumPH = State()
    addNumProg = State()
    accept = State()

# Команда /start
@dp.message_handler(Command("start"), check_user=CheckUserFilter(True))
async def state_welcome(message: types.Message, state: FSMContext):
    await state.update_data(telegram_id=message.text)
    # Выводим приветственное сообщение и предлагаем выбрать действие
    await message.reply("Здравствуйте коллеги для продолжения работы выберите соответствующую команду: \n"
                        "Для добавления программы введите команду /add\n"
                        "Для поиска номера программы введите команду /find\n"
                        "Для добавления простоя введите команду /prostoy\n")
    await state.finish()


raise NameError("Invalid filter name(s): '" + "', ".join(full_config.keys()) + "'")
NameError: Invalid filter name(s): 'check_user'
  • Вопрос задан
  • 346 просмотров
Пригласить эксперта
Ответы на вопрос 1
work_jabir
@work_jabir
if message.from_user.id in list_of_allowed_id:
    await bot.message_reply('Этот ИИ вам голову морочит, достаточно одной строчки кода')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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