Discord.Py 为变量赋值

Discord.Py Assigning values to variables

@commands.command()
    async def reroll(self, ctx, channel: discord.TextChannel, id_ : int):

      try:
        new_gaw_msg = await ctx.channel.fetch_message(id_)
      except:
        await ctx.send("Failed to parse command. ID was incorrect.")
        return
        
      winners = int(winners.replace("W",""))
      users_mention = []
      for i in range(winners):
        users = await new_gaw_msg.reactions[0].users().flatten()
        users.pop(users.index(self.client.user))
        winner = random.choice(users)
        users_mention.append(winner.mention)
        users.remove(winner)
        
        displayed_winners = ",".join(users_mention)

      await ctx.send(f"Congragulations {displayed_winners}! You have won the **{prize}**.\n{gaw_msg.jump_url}")

赋值前引用变量 winners。我在使用它之前给了赢家价值,所以我知道为什么它不起作用。感谢任何帮助:D

您正试图在 winners 变量创建之前对其执行操作。

有一种东西叫做“命名空间”。基本上,全局创建的变量(没有缩进)和本地创建的变量(在函数或循环内)是不同的变量。

如果你想在函数内部专门使用一个全局变量,你应该首先在函数内部写global variable_name来声明该变量将是全局的。只有这样你才能用它执行操作。

全局变量的使用存在一定的隐患,建议you read more about python namespaces and global keyword自行决定