discord.py问题,如果不是arg(清除命令) [英] discord.py problems with if not arg (clear command)
本文介绍了discord.py问题,如果不是arg(清除命令)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果不是arg,我对有问题
(我直接跳过了它),并且我知道将 arg:
整数为我带来了问题。
您知道解决方案吗?我尝试了很多方法,但我不能
I have a problem with if not arg
(I skip it directly) and I understand that putting arg:
int creates problems for me.
Do you know a solution? I tried with many methods but I can't
代码:
@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)
推荐答案
如果在调用命令时未指定必需的参数,则会导致 MissingRequiredArgument
错误,它将无法执行您的功能。您只需要在 clear_error
函数中添加此错误,如下所示:
If you don't specify a required argument while invoking a command, it will cause a MissingRequiredArgument
error and it won't execute your function. You just have to add this error in your clear_error
function like so:
@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)
此外,您不会需要您的如果不是arg
了
Also, you won't need your if not arg
anymore
这篇关于discord.py问题,如果不是arg(清除命令)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文