Почему он говорит, что USER_SETUP является неиспользуемой переменной, когда это не так? DISCORD.PY

#python #discord.py

#python #discord.py

Вопрос:

Здравствуйте, я пытаюсь создать бот для роли реакции, но столкнулся с этой ошибкой. Он говорит, что моя переменная с именем USER_SETUP не используется, но это не так. Я пробовал большинство вещей, но, похоже, не могу понять это правильно. Вот мой код:

 USER_DOING_SETUP = False
USER_SETUP = 0

@client.command(aliases=['rr', 'reactionroles'])
async def reactionrole(ctx, user, arg):
    if arg == "setup":
        if USER_DOING_SETUP == False:
            userId = user.id
            USER_SETUP = userId
            USER_DOING_SETUP = True
            await ctx.send(f"TEST REACTION ROLES TYPE {BOT_PREFIX}!rr cancel TO CANCEL")
        else:
            await ctx.send("Setup is used by another user")
    elif arg == "cancel":
        USER_DOING_SETUP = True
        USER_SETUP = 0
        await ctx.send("setup was cancled :)")

@client.event
async def on_message(message):
    if message.author != client.user:
        if USER_DOING_SETUP == False:
            await message.channel.send("false")
        elif USER_DOING_SETUP == True:
            if USER_SETUP == message.author.id:
                await message.channel.send("true")
            else:
                await message.channel.send("false")

  

Ошибка:
Unused variable 'USER_SETUP'

Комментарии:

1. Потому что это локальная переменная, которую вы устанавливаете и никогда не используете? Вы имели в виду иметь global USER_SETUP ?

2. У @ThierryLathuille все еще есть то же предупреждение о неиспользуемой переменной, а затем я также получаю сообщение об ошибке, если USER_SETUP == message.author.id : произнесение неопределенной переменной

3. Вы объявили его глобальным в нужном месте (= в начале функции)?

4. @ThierryLathuille спасибо

Ответ №1:

Вы должны объявить, что используете каждый глобальный параметр в начале каждой функции, в которой вы их используете (или, по крайней мере, перед чтением / назначением им):

 USER_DOING_SETUP = False
USER_SETUP = 0

@client.command(aliases=['rr', 'reactionroles'])
async def reactionrole(ctx, user, arg):
    global USER_DOING_SETUP
    global USER_SETUP
    if arg == "setup":
        if USER_DOING_SETUP == False:
            userId = user.id
            USER_SETUP = userId
            USER_DOING_SETUP = True
            await ctx.send(f"TEST REACTION ROLES TYPE {BOT_PREFIX}!rr cancel TO CANCEL")
        else:
            await ctx.send("Setup is used by another user")
    elif arg == "cancel":
        USER_DOING_SETUP = True
        USER_SETUP = 0
        await ctx.send("setup was cancled :)")

@client.event
async def on_message(message):
    global USER_DOING_SETUP
    global USER_SETUP
    if message.author != client.user:
        if USER_DOING_SETUP == False:
            await message.channel.send("false")
        elif USER_DOING_SETUP == True:
            if USER_SETUP == message.author.id:
                await message.channel.send("true")
            else:
                await message.channel.send("false")