Создать декоратор для телеграмм бота, который остановит оборачиваемую функцию

Нужно написать декоратор cancel_proc, который остановит оборачиваемую функцию по команде '/exit' Приведенный ниже способ не работает.

def cancel_proc(message):
    def cancel(f):
        def wrapped(*args, **kwargs):
            if message.text == '/exit':
                bot.send_message(message.from_user.id, 'Текущее действие остановлено.')
            else:
                return f(*args, **kwargs)
        return wrapped

    return cancel


@cancel_proc(message)
@bot.message_handler(commands=['command'])
def get_name_city(message: Optional[telebot.types.Message]) -> None:

    while True:
        bot.send_message(message.from_user.id, 'Происходит какое-то действие')

Ответы (1 шт):

Автор решения: Георгий Фролов

Получилось решить проблему следующим образом:

def stop(func: Callable) -> Callable:
    """
    Wrapper for func to stop current action with command "/stop"
    """
    def wrapped_func(*args, **kwargs):
        message = args[0]
        if message.text == '/stop':
            bot.send_message(message.from_user.id, 'Текущее действие остановлено.')
        else:
            return func(*args, **kwargs)

    return wrapped_func

@cancel_proc
@bot.message_handler(commands=['command'])
def get_name_city(message: Optional[telebot.types.Message]) -> None:

    while True:
        bot.send_message(message.from_user.id, 'Происходит какое-то действие')
→ Ссылка