【问题标题】:discord.py problems with if not arg (clear command)if not arg 的 discord.py 问题(清除命令)
【发布时间】:2020-07-12 18:54:26
【问题描述】:

我对@9​​87654321@ 有疑问(我直接跳过它),并且我知道设置arg: int 会给我带来问题。 你知道解决办法吗?我尝试了很多方法,但我不能

代码:

@client.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def clear(ctx, arg: int):
    if not arg:
        embed = discord.Embed(
            color=discord.Colour.red()
        )
        embed.set_author(
            name="Specifica quante messaggi vuoi cancellare!",
            icon_url="https://cdn.discordapp.com/attachments/640563710104043530/730639329453670420/DuscePeppe_FRIULI.png"
        )
        await ctx.send(embed=embed, delete_after=10.0)
        return
    embed = discord.Embed(
        color=discord.Colour.green()
    )
    embed.set_author(
        name=f'Ho cancellato ufficialmente {arg} messaggi!',
        icon_url=f'{ctx.author.avatar_url}'
    )
    await ctx.channel.purge(limit=arg+1)
    await ctx.send(embed=embed, delete_after=10.0)
    embed = discord.Embed(
        color=discord.Colour.dark_gold()
    )
    embed.set_author(
        name=f'{ctx.author._user} ha cancellato {arg}',
        icon_url=f'{ctx.author.avatar_url}'
    )
    embed.add_field(
        name='Messaggi cancellati da:',
        value=f'{ctx.author._user}',
        inline=True
    )
    embed.add_field(
        name='Quantità:',
        value=f'{arg}',
        inline=True
    )
    channel = client.get_channel(729553772547932190)
    await channel.send(embed=embed)
@clear.error
async def clear_error(ctx, error):
    if isinstance(error, commands.CheckFailure):
        embed = discord.Embed(
            color=discord.Colour.red()
        )
        embed.set_author(
            name="Non ti è permesso cancellare i messaggi!",
            icon_url='https://cdn.discordapp.com/attachments/640563710104043530/730639329453670420/DuscePeppe_FRIULI.png'
        )
        await ctx.send(embed=embed, delete_after=10.0)

【问题讨论】:

  • 你需要指定一个默认参数来检查它是否存在arg: int=-1然后if arg != -1:

标签: python python-asyncio discord.py


【解决方案1】:

如果您在调用命令时未指定必需的参数,则会导致MissingRequiredArgument 错误并且不会执行您的函数。您只需在 clear_error 函数中添加此错误,如下所示:

@clear.error
async def clear_error(ctx, error):
    embed = discord.Embed(color=0xe74c3c)
    if isinstance(error, commands.CheckFailure):
        embed.set_author(
            name="You're not authorized to delete messages!",
            icon_url='your image'
        )  
    elif isinstance(error, commands.MissingRequiredArgument):
        embed.set_author(
            name="You need to specify how many messages you want to delete!",
            icon_url='your image'
        )
    await ctx.send(embed=embed, delete_after=10.0)

另外,您将不再需要您的if not arg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多