Код бота не вызывает функцию
Бот управляет двумя таблицами: users и bans. При получении комментария в чате, бот записывает id комментатора в таблицу users и проверяет наличие id комментатора в таблице bans. Если id есть в таблице bans, то бот должен удалить любой комментарий забаненного. Но не удаляет и не могу понять почему. Как исправить ошибку?
@dp.message_handler()
async def check_database(message: types.Message):
if not db.user_exists(message.from_user.id):
print(message.from_user.id, 1) #выводит id комментатора
db.add_user(message.from_user.id, message.from_user.first_name)
await check_bans(message)
print(message.from_user.id, 2) #выводит id комментатора
await mess_handler(message)
print(message.from_user.id, 3) #выводит id комментатора
async def check_bans(message: types.Message):
print(message.from_user.id, 4) #выводит id комментатора
if db.user_bans(message.from_user.id):
print(message.from_user.id, 5) #ничего не выводит
await message.delete()
print(message.from_user.id, 6) #ничего не выводит
async def mess_handler(message: types.Message):
text = message.text.lower()
print(message.from_user.id, 7) #выводит id комментатора
if str(message.from_user.id) != cfg.ADMIN_ID:
for word in cfg.WORDS:
if word in text:
await message.delete()
Очередность принтов в консоли: 1 4 2 7 3
Код файла db:
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def user_exists(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT * FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()
return bool(len(result))
def user_bans(self, user_id):
with self.connection:
result1 = self.cursor.execute("SELECT * FROM 'bans' WHERE 'user_id' = ?", (user_id,)).fetchall()
return bool(len(result1))
Источник: Stack Overflow на русском