#python #python-3.x #discord.py
Вопрос:
Я продолжаю получать эту ошибку и задавался вопросом, как ее исправить:
@bot.event
async def on_message(message):
if isinstance(message.channel, discord.channel.DMChannel) and message.author != bot.user:
async with message.channel.typing():
responses = ["word", "car"]
await asyncio.sleep(1)
await message.channel.send(f'{random.choice(responses)}')
ошибка, которую я получаю, заключается в следующем:
Игнорирование исключения в on_message
Traceback (most recent call last):
File "C:Python38libsite-packagesdiscordclient.py", line 343, in _run_event
await coro(*args, **kwargs)
File "C:UsersendleDocumentsMyDiscordBotbot.py", line 112, in on_message
await message.channel.send(f'{random.choice(responses)}')
UnboundLocalError: local variable 'responses' referenced before assignment
Кто-нибудь может помочь?
Комментарии:
1. Что
responses
будет, еслиif isinstance(message.channel, discord.channel.DMChannel) . . .
чек окажется ложным?2. ответы-это переменная, которую я использую для случайного выбора строки и ее отправки
3.
responses
существует только как переменная, когда первоеif
утверждение истинно. Если значение false, переменная не создается, и вы получаете сообщение об ошибке.4. Джон Гордон, Где я могу сделать свое утверждение «если» правдивым, Извините, я не лучший в python
Ответ №1:
Тебе нужна else
. Без этого вы на самом деле не responses
будете каждый раз определять переменную, поэтому, когда она переходит к последней строке вашего кода, вы выбираете случайный элемент из списка, которого не существует.
Вероятно, вам следует получить представление об элементарном Python, прежде чем задавать вопросы о переполнении стека. Некоторые люди могут быть не самыми дружелюбными!
Вот это discord.py документация от Rapptz.
Ответ №2:
Добавьте оператор else:, чтобы ответы всегда определялись.
быстрый пример реализации этого, так как вы сказали, что не очень хорошо знакомы с python:
if isinstance(message.channel, discord.channel.DMChannel) and message.author != bot.user:
async with message.channel.typing():
responses = ["word", "car"]
elif message.author != bot.user:
responses = ["insert thing here"]
else:
responses = None
Комментарии:
1. Мой бот продолжает отвечать сам себе на это, если бы вы могли это исправить, это было бы неплохо. Извините
2. Это снова приводит к несвязанной локальной ошибке
3. Я глупый, одну секунду, вам придется проверить, нет ли ответов или нет, прежде чем пытаться вызвать его, но если вы это сделаете, это должно исправить это