Python 发送后删除消息的Discord bot
我的discord bot上有一个过滤器,可以删除所有人的邮件,包括“discord.gg、@everybody、@here”,除非他们具有管理员角色。我的过滤器检查发送的每封邮件,它首先检查该用户是否具有管理员角色,然后检查内容。如果有人在担任管理员角色时发送消息(包含这3个黑名单单词中的一个或全部),则bot将允许发送消息。 不知怎的,过滤器停止工作了,我不知道。bot是用discord.py编写的。 问题是过滤器会阻止bot发送任何类型的消息。我已经缩小到第2行(从这段代码)Python 发送后删除消息的Discord bot,python,discord,discord.py,Python,Discord,Discord.py,我的discord bot上有一个过滤器,可以删除所有人的邮件,包括“discord.gg、@everybody、@here”,除非他们具有管理员角色。我的过滤器检查发送的每封邮件,它首先检查该用户是否具有管理员角色,然后检查内容。如果有人在担任管理员角色时发送消息(包含这3个黑名单单词中的一个或全部),则bot将允许发送消息。 不知怎的,过滤器停止工作了,我不知道。bot是用discord.py编写的。 问题是过滤器会阻止bot发送任何类型的消息。我已经缩小到第2行(从这段代码) @clien
@client.event
异步def on_消息(消息):
如果“735893522032623646”不在str中(message.author.roles):
如果message.content中的“discord.gg”:
等待消息.channel.purge(限制=1)
打印('had inv link')
如果message.content中的“@everyone”:
等待消息.channel.purge(限制=1)
打印(‘每个人都有’)
如果message.content中有“@here”:
等待消息.channel.purge(限制=1)
打印('had here')
'735893522032623646',而str(message.author.roles)是一个包含角色
对象的列表,而不是角色ID
,因此您需要检查它是否在角色ID列表中
还要执行message.delete()
而不是purge()
要删除消息,有时purge
也可以删除其他消息
@client.event
异步def on_消息(消息):
如果735893522032623646不在[message.author.roles中的i.id]中:
如果message.content中的“discord.gg”:
等待消息。删除()
打印('had inv link')
message.content中的elif“@everyone”:
等待消息。删除()
打印(‘每个人都有’)
message.content中的elif“@here”:
等待消息。删除()
打印('had here')
等待客户端处理命令(消息)