#python #discord
#python #Discord
Вопрос:
У меня есть 3 команды. !отключаемые плагины, !enablepugs и !join. !disablepugs присваивает переменной значение False, а !enablepugs присваивает переменной значение true. Однако переменная изменяется просто отлично. Но, когда я проверяю, равна ли переменная True в !команда join по-прежнему не обнаруживает изменения. Код:
#Set default to True, shouldn't matter too much
pugs_enabled = True
@client.command()
async def disablepugs(ctx):
user = ctx.message.author.name
if user == "*My Name Here*":
pugs_enabled = False
await ctx.send("``Pugs are temporarily disabled.``")
print(f"Set to {pugs_enabled}")
@client.command()
async def enablepugs(ctx):
user = ctx.message.author.name
if user == "*My Name Here*":
pugs_enabled = True
await ctx.send("``Pugs are now enabled.``")
print(f"Set to {pugs_enabled}")
@client.command()
async def join(ctx):
if helper.is_setup(ctx):
print(f"The pug variable is set to {pugs_enabled}")
if pugs_enabled is True:
#Not detecting bool change. Still thinks it's false
Есть идеи относительно того, почему? Я в тупике…
Комментарии:
1. Может быть, заменить
if pugs_enabled is True:
наif pugs_enabled:
?2. Попробовал это, все тот же результат. Я понятия не имею, почему…
3. Поскольку вы не показали, как
pugs_enabled
передается из одной функции в другую, трудно сказать.4. Оппс, я только что обновил вопрос. Я не уверен, нужно ли его передавать, оно находится в верхней части файла
Ответ №1:
pugs_enabled
является глобальной переменной. Вы можете получить доступ к глобальным переменным из любой области, но всякий раз, когда вы пытаетесь изменить их значение, вы вместо этого создаете локальную переменную с тем же именем и изменяете только эту локальную переменную. Вы должны явно «подключить» глобальную переменную к вашей области видимости, чтобы изменить глобальное значение.
pugs_enabled = True
@client.command()
async def disablepugs(ctx):
user = ctx.message.author.name
if user == "*My Name Here*":
global pugs_enabled
pugs_enabled = False
await ctx.send("``Pugs are temporarily disabled.``")
print(f"Set to {pugs_enabled}")
@client.command()
async def enablepugs(ctx):
user = ctx.message.author.name
if user == "*My Name Here*":
global pugs_enabled
pugs_enabled = True
await ctx.send("``Pugs are now enabled.``")
print(f"Set to {pugs_enabled}")
@client.command()
async def join(ctx):
if helper.is_setup(ctx):
print(f"The pug variable is set to {pugs_enabled}")
if pugs_enabled is True:
#Not detecting bool change. Still thinks it's false