Discord.py |取消固定命令

时间:2020-10-03 23:45:33

标签: python discord.py discord.py-rewrite

基本上我想做的是发出一条如下所示的命令:

用户:>取消固定10

自动取消固定上述金额并返回:#channel中的固定金额

到目前为止,我要做的只是:

@Bot.command()
async def unpin(ctx, amount = 0):
    await ctx.message.delete()
    channel = ctx.channel
    x = 0
    amount = int(amount)
    if amount == 0:
        await ctx.send("How many messages do you want to unpin, max is 50.")
    if amount > 50:
        await ctx.send("Maximum amount is 50")
    else:
        pins = await channel.pins()
        while x <= amount:
            for message in pins:
                await message.unpin()
            x+=1
        await ctx.send(f"Unpinned {x} messages from #{channel}")

这里的问题是,僵尸程序取消固定每条消息而不是给定数量的消息。我该如何更改才能取消固定的金额?

1 个答案:

答案 0 :(得分:0)

使其更具pythonic风格。代替使用while x <= amount: ... x += 1,使用for循环。另外,不要双重循环。第二个循环遍历所有引脚,并取消固定所有引脚。更好的系统示例如下:

...
    else:
        for i in range(amount):
            pins = await channel.pins()
            await pins[-1].unpin()
        await ctx.send(f"Unpinned {x} messages from #{channel}")