discord py 提升命令

discord py promote command

好吧,基本上当一个人做~promote @user 时,它会将他们提升为主教练。当他们再次执行命令时,它 应该 将他们提升为总经理,但它什么也没做,并说“提升为总教练!”再次。这是我的代码,有什么帮助吗?

GM = discord.utils.get(guild.roles, name="General Manager")
HC = discord.utils.get(guild.roles, name="Head Coach")
Nor = discord.utils.get(guild.roles, name="Houston Texans")

if (Nor in user.roles) and (not HC) or (GM):
    await user.add_roles(HC)
    await ctx.send("Promoted to Head Coach!")

elif HC in user.roles:
    await user.add_roles(GM)
    await user.remove_roles(HC)
    await ctx.send("Promoted to General Manager!")

elif GM in user.roles:
    await ctx.send("Cannot go any higher than General Manager!")`

我尝试了很多东西,但似乎没有用。我四处询问,得到的每一个答案仍然不起作用,并且做同样的事情。

你的第一个条件有问题。你测试用户是否有角色 Nor,如果 HC 不存在,那么 GM 是否存在。

Python 是这样解释的:

if ((Nor in user.roles) and (not HC)) or (GM)

这总是正确的(如果角色存在于服务器中),因为您之前声明了这个变量。 您应该像下面这样重写它:

GM = discord.utils.get(guild.roles, name="General Manager")
HC = discord.utils.get(guild.roles, name="Head Coach")

if HC in user.roles:  # promote from HC to GM
    await user.add_roles(GM)
    await user.remove_roles(HC)
    await ctx.send("Promoted to General Manager!")

elif GM in user.roles:  # already GM, can't go higher
    await ctx.send("Cannot go any higher than General Manager!")

else:  # promote from base role to HC
    await user.add_roles(HC)
    await ctx.send("Promoted to Head Coach!")