В чем причина остановки бота и невызова второй функции?
Бот останавливается после выполнения первой функции и не вызывает вторую.
В чем причина?
@dp.message_handler()
async def mess_data(message: types.Message):
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id, message.from_user.first_name)
@dp.message_handler()
async def mess_handler(message: types.Message):
text = message.text.lower()
if str(message.from_user.id) != cfg.ADMIN_ID:
for word in cfg.WORDS:
if word in text:
await message.delete()
Подумал, что это из-за идентичных декораторов, т.е. после обработки одного и того же события первой функцией. Но аналогично происходит при объединении функций под один декоратор:
@dp.message_handler()
async def mess_data(message: types.Message):
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id, message.from_user.first_name)
async def mess_handler(message: types.Message):
text = message.text.lower()
if str(message.from_user.id) != cfg.ADMIN_ID:
for word in cfg.WORDS:
if word in text:
await message.delete()
После добавления в код третьей функции, вторая игнорируется:
@dp.message_handler()
async def check_database(message: types.Message):
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id, message.from_user.first_name)
await check_bans(message)
await mess_handler(message)
async def check_bans(message: types.Message):
if db.user_bans(message.from_user.id):
await message.delete()
async def mess_handler(message: types.Message):
text = message.text.lower()
if str(message.from_user.id) != cfg.ADMIN_ID:
for word in cfg.WORDS:
if word in text:
await message.delete()
Источник: Stack Overflow на русском