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自行决定
@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自行决定