不和谐.py如何检查输入是否有分贝

2024-06-16 11:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了这个命令,它将清除你说的信息量ie>;purge 10它将删除10条信息我不知道如何检查输入是否是十进制的,你能帮忙吗 代码:

@client.command(pass_context=True)
async def purge(ctx, amount=300):
    if ctx.message.author.server_permissions.manage_messages:
        channel = ctx.message.channel
        messages = []
        async for message in client.logs_from(channel, limit=int(amount) + 1):
            messages.append(message)
        await client.delete_messages(messages)
        await client.say('Purged {} message(s)!'.format(len(messages)-1)) 
    else:
        embed = discord.Embed(
            title = ':x: Insufficient Permissions',
            description = 'You need to have the Manage Messages premission to execute this command.',
            colour = 0xff0000
        )
        await client.say(embed=embed)

Tags: to命令clientmessageasyncchannelembedawait
2条回答

您可以使用类型注释来向您的协同例程提供converter(注意,这是文档,但这也适用于异步分支)。然后,您可以指定另一个错误处理程序来实现处理错误输入的逻辑。你知道吗

@client.command(pass_context=True)
async def purge(ctx, amount: int=300):
    ...

@purge.error
async def purge_error(error, ctx):
    if isinstance(error, commands.BadArgument):
        await client.send_message(ctx.message.channel, "Cannot convert input to integer")

您还可以查看^{}。我没看过你所有的合作计划,但看起来你在重新设计方向盘。你知道吗

您可以移除amount的默认值,并捕获当用户写入错误内容时抛出的ValueError

@client.command(pass_context=True)
async def purge(ctx, amount):
  try:
    if ctx.message.author.server_permissions.manage_messages:
        channel = ctx.message.channel
        messages = []
        async for message in client.logs_from(channel, limit=int(amount) + 1):
            messages.append(message)
        try:
          await client.delete_messages(messages)
          await client.say('Purged {} message(s)!'.format(len(messages)-1))
        except Exception as inst:
          await client.say("One or more messages older than 14 days\n{}".format(inst))
    else:
        embed = discord.Embed(
            title = ':x: Insufficient Permissions',
            description = 'You need to have the Manage Messages premission to execute this command.',
            colour = 0xff0000
        )
        await client.say(embed=embed)
  except ValueError as va:
    await client.say(va)

我还添加了try/except,当至少有一条消息已经存在14天,因此无法删除时

相关问题 更多 >