如果消息被编辑,反发誓系统不起作用
- 作者: 茵茵酱
- 来源: 51数据库
- 2023-02-01
问题描述
基本上,如果您说的不是脏话,然后将消息编辑成脏话,机器人将不会检测到它.我该如何解决?这是我的代码:
Basically if you say something that's not a swear word but then edit the message into a swear word, the bot will not detect it. How do I fix this? Here's my code:
@client.event async def on_message(message): if message.author.bot: return for badword in file: if badword in message.content.lower(): await message.delete() warnMessage = f"Hey {message.author.mention}! Don't say that!" await message.channel.send(warnMessage, delete_after=5.0) print(f"{message.author.name} tried saying: {badword}") channel = client.get_channel(836232733126426666) embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D) embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False) embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False) embed.add_field(name="Channel they tried to swear in:", value=f"<#{message.channel.id}>", inline=False) await channel.send(embed=embed) return await client.process_commands(message) if message.content.startswith('Jason derulo'): await message.channel.send('Wiggle wiggle wiggle') if message.content.startswith('fast'): await message.channel.send('She a runner she a track star') await client.process_commands(message)
推荐答案
您可以为此使用 on_message_edit 事件,并使用您在 on_message 事件(只要记住使用 after 参数而不是 message)
You can use the on_message_edit event for that and use the same logic you're using in the on_message event (just remember to use the after arg instead of message)
@client.event async def on_message_edit(before, after): for badword in file: if badword in after.content.lower(): await after.delete() warnMessage = f"Hey {after.author.mention}! Don't say that!" await after.channel.send(warnMessage, delete_after=5.0) print(f"{message.author.name} tried saying: {badword}") channel = client.get_channel(836232733126426666) embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D) embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False) embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False) embed.add_field(name="Channel they tried to swear in:", value=f"<#{message.channel.id}>", inline=False) return await channel.send(embed=embed)
参考:
- on_message_edit
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0