Получить доступ к переменной контекста, не передавая ее из команды в функции более низкого уровня в боте Discord?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Получить доступ к переменной контекста, не передавая ее из команды в функции более низкого уровня в боте Discord?

Сообщение Anonymous »

Я хотел отправить сообщение об ошибке пользователю без доступа к контексту из команды. Отправленное сообщение об ошибке должно отвечать на команду сообщением о разногласиях.
Это также внутри функции без объектов разногласий и в основном касается данных.
Так, как я был это было сделано путем вызова CommandError

Код: Выделить всё

raise CommandError(message, logger)
и обрабатываем это с помощью on_command_error

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»