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!")
好吧,基本上当一个人做~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!")