Получить аргумент для декоратора функциии
Я пишу телеграм юзер-бота, у меня есть обработчик ошибок handle_exception:
def handle_exception(func):
global debug
async def wrapper(*args, **kwargs):
try:
return await func(*args, **kwargs)
except FloodWait as e:
await slp(e.value)
except Exception as e:
match debug:
case 1:
print(Fore.RED + 'Something was wrong...')
case 2:
print(Fore.RED + f'Debug: {e}')
case 3:
print(Fore.RED + f'Debug: {e}')
with open("debug.txt", "a") as f:
time = datetime.now()
f.write(f'{time.hour}:{time.minute}:{time.second} error: {e}\n')
case 4:
print(Fore.RED + f"Debug: {e}")
notification.notify(
title="DEBUG",
message=f"{e}",
timeout=5
)
допустим есть функция:
@app.on_message(filters.command('calc', prefixes='.') & filters.me)
@handle_exception
async def calc(_, msg):
ex = " ".join(msg.text.split()[1:])
await msg.edit(f"Подсчитал: {str(ex)} = {str(eval(ex))}")
если пользователь не ввел математическое выражение, то получается ошибка IndexError, которая улавливается декоратором handle_exception. Я хочу из декоратора handle_exception изменить сообщение, при обработке кода которого, произошла ошибка, объясню немного понятнее: мне нужно получить аргумент, который передан в функцию calc(_, вот он:msg)
в декоратор handle_exception для дальнейшего применения (await msg.edit("Вы не ввели мат. выражение")
)