首页 > 解决方案 > Discord.py 如何让命令忽略参数

问题描述

所以我想做一个可以回复 .invites 或 .invites @user 的命令

当我将这个命令作为 .invites 运行时,我的错误处理程序会启动并说我需要一个 @user。

我尝试删除我的错误处理程序,但该命令什么也不做。

我怎样才能使这个命令双向工作?

@commands.command()
    async def invites(self, ctx, user: discord.Member):
        global last1
        global invites1
        try:
            userinvitecount = 0
            gld = self.bot.get_guild(int(guild_id))
            while True:
                invs = await gld.invites()
                tmp = []
                for i in invs:
                    if user.id == i.inviter.id:
                        top = i.uses
                        userinvitecount += int(top)

                    tmp.append(tuple((i.inviter.id, i.code, i.uses)))
                invites1 = tmp
                break
            usr = gld.get_member(int(user.id))
            eme = discord.Embed(description=f"{usr.mention} has {userinvitecount} invite's", color=0x03d692, title=" ")
            await ctx.send(embed=eme)
        except commands.MissingRequiredArgument:
            user = ctx.message.author.id
            userinvitecount = 0
            gld = self.bot.get_guild(int(guild_id))
            while True:
                invs = await gld.invites()
                tmp = []
                for i in invs:
                    if user.id == i.inviter.id:
                        top = i.uses
                        userinvitecount += int(top)

                    tmp.append(tuple((i.inviter.id, i.code, i.uses)))
                invites1 = tmp
                break
            usr = gld.get_member(int(user.id))
            eme = discord.Embed(description=f"{usr.mention} has {userinvitecount} invite's", color=0x03d692, title=" ")
            await ctx.send(embed=eme)
if isinstance(error, commands.MissingRequiredArgument):
        # generic error handler for commands entered wrong
        embed = discord.Embed(
            title="Failed",
            description="Failed to use command properly \n Please try again.",
            colour=discord.Colour.blurple(),
        )
        await ctx.send(embed=embed)

标签: pythonargumentsdiscordbots

解决方案


您可以使用默认值来执行此操作。
然后,在您的命令中,您可以简单地检查用户是否为无

可以使用默认值,例如通过将用户设置为None如下所示。

@commands.command()
async def invites(self, ctx, user: discord.Member = None):

推荐阅读