Это также внутри функции без объектов разногласий и в основном касается данных.
Так, как я был это было сделано путем вызова CommandError
Код: Выделить всё
raise CommandError(message, logger)
Код: Выделить всё
async def on_command_error(self, ctx, error):
...
if isinstance(error, commands.CommandError):
# Internal error called to kill a command call due to error
try:
message, logger = error.args
except (TypeError, ValueError):
message = error
logger = self.logger
else:
logger = logger or self.logger
logger.warning(message)
await ctx.send(f"{message}")
return
Тогда возникает вопрос: что с этим делать?
Вы можете передать переменную контекста в каждую функцию/метод, которая в ней нуждается. Это нормально для методов/классов более высокого уровня, но для вещей, которые в основном манипулируют данными, это не обязательно, а просто вызывает ошибку. Выглядит неуклюже.
Временное сохранение контекстной переменной где-то не работает в ситуациях с несколькими пользователями/гильдиями.
Раньше я обходил эту проблему, создавая гильдейскую конкретный канал ошибки, но это также не работает, поскольку я открываю бота для большего количества пользователей в большем количестве каналов.
Есть ли лучший способ?
Подробнее здесь: https://stackoverflow.com/questions/791 ... lower-leve