в боте надо реализовать проверку на наличие 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'