首页 > 解决方案 > 如何使我的命令位于触发器的末尾?

问题描述

我希望我的命令“提升 GM”位于触发器的末尾。例如:!promote {user} GM。但是,我不确定如何执行此操作。我到目前为止工作的命令,但不是在那个布局中。

@bot.command(aliases=["promote GM", "promote General Manager"])
@commands.has_any_role("Franchise Owner")
async def q(ctx, member:discord.Member):
  guild = bot.get_guild(766292887914151949)
  role_name = discord.utilis.get(guild.roles, name="General Manager")
  embed = discord.Embed()
  embed.add_field(name="<:Green:786300903065518090> Success", value=f"{member.mention} has been promoted to General Manager.")
  await ctx.send(embed=embed)
  await member.add_roles(role_name)

我不确定如何更改展示位置。

标签: discord.py-rewrite

解决方案


一种方法是在函数末尾添加“gm”语句。像这样,您可以将您的功能定义为:

@bot.command(aliases=["promote"]) # Don't add "gm" here
@commands.has_any_role("Franchise Owner")
async def q(ctx, member:discord.Member, *, gm=None): # Default value for gm: None
    # Check if user precised "GM" or "General Manager" as last statement:
    if gm != 'GM' or "General Manager":
    
    
        guild = bot.get_guild(766292887914151949)
        role_name = discord.utilis.get(guild.roles, name="General Manager")

        embed = discord.Embed()
        embed.add_field(name="<:Green:786300903065518090> Success", value=f'{member.mention} has been promoted to General Manager.")
    
        await ctx.send(embed=embed)
        await member.add_roles(role_name)
    
    else: # if user did not enter "GM" or "General Manager" as last statement:
        await ctx.send('''Please enter "GM" or "General Manager" at the end of the command.
Use the command like: `!promote {member} GM''')

通过这样做,您的论点可以包含空格。


推荐阅读