Python 如何使我的Discord Bot删除频道中的所有邮件?

Python 如何使我的Discord Bot删除频道中的所有邮件?,python,discord,discord.py,Python,Discord,Discord.py,当用户要求bot删除所有消息时,我试图让bot一次删除所有消息,但我的代码不起作用 导入操作系统 进口不和 client=discord.client() client=commands.Bot(命令前缀='+') @client.command(name='effacer') 异步def清除(ctx): 客户端.logs\u中消息的异步(ctx.message.channel): 等待客户端。删除消息(msg) 等待ctx.send(“我是谁?这是什么地方?消息到底去了哪里?”) client

当用户要求bot删除所有消息时,我试图让bot一次删除所有消息,但我的代码不起作用

导入操作系统
进口不和
client=discord.client()
client=commands.Bot(命令前缀='+')
@client.command(name='effacer')
异步def清除(ctx):
客户端.logs\u中消息的异步(ctx.message.channel):
等待客户端。删除消息(msg)
等待ctx.send(“我是谁?这是什么地方?消息到底去了哪里?”)
client.run(令牌)

如何修复我的代码,以便我的bot可以删除所有邮件?我认为我最大的问题是等待客户端。删除消息(msg),因为Python不断地说客户端没有属性来删除消息,删除每条消息会限制bot的速率,产生性能问题,这也会减慢bot的速度。相反,如果机器人只是删除了该频道,并在完全相同的位置克隆了该频道,则效率会更高

这是命令中包含的清除

@client.command(name='effacer')
异步def清除(ctx):
等待ctx.channel.delete()
新建\u channel=wait ctx.channel.clone(原因=“通道已清除”)
等待新频道编辑(位置=ctx.channel.position)
等待新通道发送(“通道已清除”)

因此,您要做的是清除,而不是删除邮件。这将删除频道中的所有消息,并保持频道id不变,这意味着您只需要
manage\u messages
权限即可运行此命令。它的工作方式是统计通道中的所有消息,然后清除该数量的消息

导入操作系统
进口不和
client=discord.client()
client=commands.Bot(命令前缀='+')
@client.command(name='effacer')
异步def清除(ctx):
极限=0
ctx.channel.history中msg的异步(limit=None):
极限+=1
等待ctx.channel.purge(限制=限制)
client.run(令牌)

最后!感谢您提供了很棒的解决方案。不过,我想知道是否有一种方法可以立即将用户重定向到克隆的空频道。对不起,没有,您的代码没有这样做的方法。不和谐就是这样做的。如果有人在你在其中的时候删除了一个频道,它会将你带到公会的第一个频道,并且不会担心是否有同名的频道好的。你能告诉我删除每条信息的方法吗?在我目前开发bot的阶段,效率是微不足道的。你到底想删除多少条消息?因为记住,机器人不能删除太旧的邮件,所以Discord会阻止这一点,不幸的是,同样的错误Bot'object has no attribute'记录了来自'u'的日志,我弄混了一些东西,现在应该可以工作了