Discord.py 不一致清除限制解决方法:self.bot.delete_messages()错误

Discord.py 不一致清除限制解决方法:self.bot.delete_messages()错误,discord.py,Discord.py,因此,我一直试图通过将清除分为几组100来绕过discord 100 message discord.py清除限制,但我遇到了一个问题,当我使用此命令时,我发现了一个错误。我已经测试过了,它正在将消息保存到列表中 错误 代码 @commands.command(pass\u context=True,no\u pm=True) 异步def清除(自身,ctx,数量=无,通道:discord.channel=无): mgs1=[] mgs2=[] mgs3=[] mgs4=[] mgs5=[] 如果

因此,我一直试图通过将清除分为几组100来绕过discord 100 message discord.py清除限制,但我遇到了一个问题,当我使用此命令时,我发现了一个错误。我已经测试过了,它正在将消息保存到列表中

错误 代码
@commands.command(pass\u context=True,no\u pm=True)
异步def清除(自身,ctx,数量=无,通道:discord.channel=无):
mgs1=[]
mgs2=[]
mgs3=[]
mgs4=[]
mgs5=[]
如果通道==无:
通道=ctx.message.channel
金额=整数(金额)
如果金额>1:
self.bot.logs_from((通道),limit=int(数量+1))中x的异步:
而len(mgs1)<100:
mgs1.append(x)
当len(mgs1)=100且len(mgs2)<100时:
mgs2.append(x)
当len(mgs2)=100且len(mgs3)<100时:
mgs3.append(x)
当len(mgs3)=100且len(mgs4)<100时:
mgs4.附加(x)
当len(mgs4)=100且len(mgs5)<100时:
mgs5.附加(x)
打印(mgs1、mgs2、mgs3、mgs4、mgs5)
等待self.bot.delete_消息(mgs1)
等待self.bot.delete_消息(mgs2)
等待self.bot.delete_消息(mgs3)
等待self.bot.delete_消息(mgs4)
等待self.bot.delete_消息(mgs5)

而不是不断地硬编码变量来处理溢出。我建议你简单地把每次清洗的次数减少

@commands.command(pass_context=True, no_pm=True)
async def purge(self, ctx, amount, channel: discord.Channel=None):
    channel = channel or ctx.message.channel
    try:
        amount = int(amount)
        await self.bot.delete_message(ctx.message)
        for amount in range(amount, 0, -100):
            await self.bot.purge_from(channel, limit=amount)
    except ValueError:
        return await self.bot.say('You have to enter a full number!')
在这里,无论用户输入什么,命令都将在for循环中清除,每次迭代减少100

        @commands.command(pass_context=True, no_pm=True)
        async def purge(self, ctx, amount = None, channel:discord.Channel = None):
            mgs1 = []
            mgs2 = []
            mgs3 = []
            mgs4 = []
            mgs5 = []
            if channel == None:
                channel = ctx.message.channel
            amount = int(amount)
            if amount > 1:
                async for x in self.bot.logs_from((channel), limit = int(amount+1)):
                    while len(mgs1) < 100:
                        mgs1.append(x)
                    while len(mgs1) == 100 and len(mgs2) < 100:
                        mgs2.append(x)
                    while len(mgs2) == 100 and len(mgs3) < 100:
                        mgs3.append(x)
                    while len(mgs3) == 100 and len(mgs4) < 100:
                        mgs4.append(x)
                    while len(mgs4) == 100 and len(mgs5) < 100:
                        mgs5.append(x)
                    print(mgs1, mgs2, mgs3, mgs4, mgs5)
                    await self.bot.delete_messages(mgs1)
                    await self.bot.delete_messages(mgs2)
                    await self.bot.delete_messages(mgs3)
                    await self.bot.delete_messages(mgs4)
                    await self.bot.delete_messages(mgs5)
@commands.command(pass_context=True, no_pm=True)
async def purge(self, ctx, amount, channel: discord.Channel=None):
    channel = channel or ctx.message.channel
    try:
        amount = int(amount)
        await self.bot.delete_message(ctx.message)
        for amount in range(amount, 0, -100):
            await self.bot.purge_from(channel, limit=amount)
    except ValueError:
        return await self.bot.say('You have to enter a full number!')