如果有人使用 on_message_edit
事件将消息编辑为脏话消息,我希望我的机器人删除该消息,但我一直在尝试解决这个问题,但到目前为止没有任何效果。这是不起作用的代码。
with open("badwords.txt") as file:
blacklist = file.read().split('\n')
@client.event
async def on_message_edit(before, after, message):
for word in blacklist:
regex_match_true = re.compile(fr"[{symbols}]*".join(list(word)), re.IGNORECASE)
regex_match_none = re.compile(fr"([{letters}]+{word})|({word}[{letters}]+)", re.IGNORECASE)
if regex_match_true.search(message.content) and regex_match_none.search(message.content) is None:
#embed here
await message.delete()
break
答案 0 :(得分:0)
on_message_edit
事件没有 message
参数。有参数 before
和 after
,它们都是 discord.Message
对象。据我了解,在一条消息被编辑后,如果它包含一个黑名单词,你试图删除它。您可以使用 after.content
获取已编辑消息的内容。然后你可以检查它是否包含黑名单这个词。
blacklist = open('badwords.txt', 'r').read().split('\n')
@client.event
async def on_message_edit(before, after):
for word in blacklist:
if word in after.content:
await after.delete()
return
这是一个如何执行此操作的简单示例,但如果您想使用 regex
,也可以使用它。
答案 1 :(得分:0)
with open("badwords.txt") as file:
blacklist = [line.strip() for line in file.readlines()]
@client.event
async def on_message_edit(before, after):
for word in after.content.split():
if word.lower() in blacklist:
#embed here
return await message.delete()