python - 如何使用不和谐 python 库在不和谐的文本通道中删除整个消息
问题描述
我使用了堆栈溢出问题中的代码,但其中使用的函数似乎已更改。
代码 :
from discord.ext.commands import Bot
.
.
@client.command(pass_context = True)
async def clear(ctx, number):
mgs = [] #Empty list to put all the messages in the log
number = int(number) #Converting the amount of messages to delete to an integer
async for x in client(ctx.message.channel, limit = number):
mgs.append(x)
await client.delete_messages(mgs)
错误:
客户端中的 x 异步(ctx.message.channel,limit = number):TypeError:'Bot' 对象不可调用
和
discord.ext.commands.errors.CommandInvokeError:命令引发异常:TypeError:'Bot'对象不可调用
解决方案
在新版本的 discord.py 中执行此操作的一个非常简单的方法可能如下所示:
@client.event
async def on_message(message):
if '-clear all' in message.content and message.author.permissions_in(message.channel).manage_messages:
deleted = await message.channel.purge(limit=10000, check=is_not_pinned)
await message.channel.send('All messages deleted.'.format(deleted))
await client.process_commands(message)
您也可以为此使用常规命令,这样您就不需要await client.process_commands(message)
了,但您所追求的功能仍然是await message.channel.purge(limit=amount, check=is_not_pinned)
这样,只有具有管理消息权限的人才能使用此命令,并且不会删除固定的消息。
您可以将数量设置为一个令人难以置信的高数字,因此它只会删除接近(如果不是全部)。我只试了大约 300 次,效果很好(不过可能需要一些时间)。
推荐阅读
- powerbi - 如何在 Power BI DataConnector 中存储凭据?
- jquery - 如何使用 ajax 更新表单提交时的 Plotly Plot?
- filter - DAX 查询(使用 FIlter 和 MAX 函数),计算最近运行 30 天的总销售额
- java - Java中的透明,不可点击和不可聚焦的窗口
- bixby - Bixby:想在我的胶囊中实现秒表
- cuda - anaconda 在哪里安装 cudatoolkit 和 cudnn?
- c - 即使包含 string.h,也会显示对 memset 的未定义引用
- git - 在 EnvInject 插件构建之前注入参数?
- terraform - 将配置从外部文件加载到 terraform
- java - UML 类图 说明 我想确定是否满足所需的规则