Что делать, если два декоратора не работают вместе?

Делаю бота на VkBottle, написал свой декоратор для удобного подключения к функции, но пр использовании этого декоратора со встроенным декоратором от вкботтле вызывает ошибку.
То есть декоратор от vkbottle передает два аргумента: message и cmd, но когда я использую свой декоратор, то аргумент cmd до меня не доходит.

Код моего декоратора:
def db_active(func):
	async def _wrapper(*args, **kwargs):
		db = UserDB()
		await db.connect()
		try:
			return await func(*args, **kwargs, db=db)
		finally:
			await db.close()
	return _wrapper


Код самой функции
@db_active
@bp.on.message(text='/eval <cmd>')
async def eval_cmd(message: Message, cmd: str, db: UserDB) -> None:
	if message.from_id == admin_id:
		try:
			result = eval(cmd)
			await message.answer(str(result))
		except Exception as ex:
			await message.answer(f'Error!\n\n>> {ex}')
	else:
		await message.reply('Доступ закрыт.')


Вызывает ошибку в зависимости от того, какой декоратор я постаивл первым:
Если первым стоит декоратор от vkbottle:
TypeError: eval_cmd() missing 1 required positional argument: 'cmd'

Если первым стоит декоратор от меня:
TypeError: eval_cmd() missing 1 required positional argument: 'db'
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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