Я пытаюсь создать простой бог разного рода, используя discord.py для удовольствия от него. Я изо всех сил пытаюсь понять, как работает асинчио, и у меня проблема с переписыванием/переназначением переменных.переназначение переменных с помощью async/wait?
log_channel = "8765327525217520521501"
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!logchannel'):
if message.content == "!logchannel":
await client.send_message(message.channel, "```\n logchannel:
\r - Changes the channel this bot logs to.
\r - Takes the numerical channel ID as an argument
\r - E.g. !logchannel 123456789 ```")
else:
nc = message.content.split()[1]
try:
await client.send_message(client.get_channel(nc), "Testing new channel to be used for logs...")
except discord.NotFound:
await client.send_message(message.channel, "No channel was found with that ID.")
except discord.Forbidden:
await client.send_message(message.channel, "I Don't have permissions to use that channel!")
except discord.HTTPException:
await client.send_message(message.channel, "There was an error communciating with the server, please try again.")
except InvalidArgument:
await client.send_message(message.channel, "No channel was found with that ID.")
else:
await client.send_message(client.get_channel(log_channel), "Logging Channel Updated.")
await client.send_message(message.channel, "Logging Channel Updated.")
lmsg = 'Logging channel was updated to {} on {}'
log.write(lmsg.format(message.channel,logtime))
log_channel = nc
Попытка перезаписать переменную log_channel вызывает исключение «ссылки перед назначением». Если я не пытаюсь перезаписать, тогда он может получить значение переменной в порядке.
Я предполагаю, что это связано с тем, как работает async, однако я не совсем понимаю это, я использую примеры в качестве руководства.