【问题标题】:Writing a function for custom subcommands discord.py为自定义子命令 discord.py 编写函数
【发布时间】:2021-03-09 04:41:23
【问题描述】:

所以,我想为我的 python 机器人的所有子命令编写一个函数,但我不确定它们在 discord.py 中是如何工作的。例如,我这里有这个静音代码。

@bot.command()
async def mute(ctx,member : discord.Member, *, reason=None):

    with open("role.json", "r") as f:
        roles = json.load(f)

    muted_role = discord.utils.get(ctx.guild.roles, id=roles[f"{ctx.guild.id}"]["role_id"])
  
    embed = discord.Embed(color=discord.Color(0xFF0000), title=f"{member} has been muted.")
            #sent to DM
    embedC=discord.Embed(title=f"{member} has been muted.",color=discord.Color(0xff0000))
    embedC.add_field(name=f"Member",value=f"{member}",inline=False)
    embedC.add_field(name=f"Moderator",value=f"{ctx.author}",inline=False)
    embedC.add_field(name=f"Reason",value=f"{reason}",inline=False)
    embedC.set_footer(text=f"Mute was successfully invoked. Expiration is indefinite.")
    await member.add_roles(muted_role)
    await ctx.send(embed=embed)
    await member.send(embed=embedC)

在上面的代码中是我的mute 命令。我知道这与我的问题有点无关,但我想为 bot 创建一个自定义子命令。您可以通过执行 bot bot.remove_command("help") 删除内置命令 help 但如何删除自定义帮助子命令?现在这引出了问题的第二部分,这也是主要问题。如何为自定义子命令编写函数,这样我就不必为每个子命令编写和重复相同的过程? 我尝试做def subcommand(command, error),其中命令是帮助所需的命令,错误是我要输入的错误消息。因此,如果我的静音命令失败,它将要求用户使用我的子命令,而我的子命令将为他们提供有关此命令如何工作的信息。谢谢!

【问题讨论】:

    标签: python command bots discord.py


    【解决方案1】:

    有一个内置的子命令支持:

    @bot.group()
    async def cmd(ctx):
        if ctx.invoked_subcommand is None:
            await ctx.send("Command can't be invoked without a subcommand")
    
    
    @cmd.command()
    async def subcommand1(ctx, *args):
        #...
    
    
    @cmd.command()
    async def subcommand2(ctx, *args):
        #...
    

    调用:

    {prefix}cmd subcommand1 arg1 arg2
    

    Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多