如何在检查 returns false 时停止减少 channel.purge 的限制?
How to stop limit of channel.purge decreasing when check returns false?
我有一个命令,用于遍历并删除机器人在频道中发送的最后 x 条消息。但是,该命令会删除最后 x 条消息中来自机器人的所有消息,而不是删除来自机器人的最后 x 条消息。有没有一种方法可以检查是否有 x 条消息(来自机器人)没有被删除,然后增加 x 的值,或者有没有办法让它一开始就不减少?
@client.command(aliases=['bc'])
async def BotClean(ctx, count=5):
botCheck = (lambda message : message.author.bot)
await ctx.channel.purge(limit = count+1, check=botCheck)
你想要完成的事情很难做到。您将无法使用 purge()
命令实现此目的,因为它会限制将要检查的消息。
您应该在 BotClean
函数中检查消息历史记录并遍历检索到的消息以查看作者是否是 bot,如果是 bot,则将其删除。
此设计出现的问题是您要检索的历史消息的数量限制,因为每次检索所有这些消息在内存方面是非常愚蠢的。
代码示例应该是这样的:
@client.command(aliases=['bc'])
async def BotClean(self, ctx, number: int):
messages = await channel.history(limit=200).flatten()
count = 0
for message in messages:
if message.author == client.user and count < number
count += 1
await message.delete()
我有一个命令,用于遍历并删除机器人在频道中发送的最后 x 条消息。但是,该命令会删除最后 x 条消息中来自机器人的所有消息,而不是删除来自机器人的最后 x 条消息。有没有一种方法可以检查是否有 x 条消息(来自机器人)没有被删除,然后增加 x 的值,或者有没有办法让它一开始就不减少?
@client.command(aliases=['bc'])
async def BotClean(ctx, count=5):
botCheck = (lambda message : message.author.bot)
await ctx.channel.purge(limit = count+1, check=botCheck)
你想要完成的事情很难做到。您将无法使用 purge()
命令实现此目的,因为它会限制将要检查的消息。
您应该在 BotClean
函数中检查消息历史记录并遍历检索到的消息以查看作者是否是 bot,如果是 bot,则将其删除。
此设计出现的问题是您要检索的历史消息的数量限制,因为每次检索所有这些消息在内存方面是非常愚蠢的。
代码示例应该是这样的:
@client.command(aliases=['bc'])
async def BotClean(self, ctx, number: int):
messages = await channel.history(limit=200).flatten()
count = 0
for message in messages:
if message.author == client.user and count < number
count += 1
await message.delete()