discord.py-rewrite - 如何使我的命令位于触发器的末尾?
问题描述
我希望我的命令“提升 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)
我不确定如何更改展示位置。
解决方案
一种方法是在函数末尾添加“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''')
通过这样做,您的论点可以包含空格。
推荐阅读
- r - 在 DictionaryLearner 中找不到键为“surv.xgboost”的元素
- android - 为什么我的android studio 4.0 项目结构不同?
- swift - 来自字符串的 Swift URL,其中包含 `caffè`
- amazon-web-services - 在 aws cli 中为 powershell 获取 AllocationID
- html - 无法在 testcafe 中选择下拉列表
- flutter - Flutter:如何创建简单的自定义条形图/滑块
- c++ - 为什么在 sfml 中加载字体时出错
- reactjs - 从 useCallback 访问状态变量时,值不会更新
- json - 无法找到用于网络抓取的网站 API - 未找到 json 响应
- docker - 简单的Docker容器集群部署系统