实现Discord机器人的消息删除与编辑日志功能
实现Discord机器人消息编辑日志功能
要实现消息编辑日志,你可以使用discord.py提供的on_message_edit事件监听器——这个事件会在任何消息被编辑时触发,并传递编辑前的消息对象和编辑后的消息对象。以下是和你现有删除日志风格一致的实现代码:
@commands.Cog.listener() async def on_message_edit(self, before: discord.Message, after: discord.Message): # 过滤内容未发生变化的编辑(比如仅修改嵌入、附件的情况) if before.content == after.content: return embed = discord.Embed(title="Edited Message Log", color=discord.Color.gold()) embed.add_field(name="Author", value=f"{before.author.mention}", inline=False) embed.add_field(name="Channel", value=f"{before.channel.mention}", inline=False) embed.add_field(name="Before Edit", value=before.content or "*无文本内容*", inline=False) embed.add_field(name="After Edit", value=after.content or "*无文本内容*", inline=False) log_channel = discord.utils.get(before.guild.channels, name="logging") if log_channel: await log_channel.send(embed=embed)
关键细节说明:
- 无效编辑过滤:加入
before.content == after.content判断,避免记录无文本变化的操作,减少冗余日志 - 空内容兼容:用
or "*无文本内容*"处理消息无文本的情况,防止Embed字段显示异常 - 视觉区分:用金色标记编辑日志,和删除日志的默认颜色形成差异,便于管理员快速识别
你可以把这段代码和已有的on_message_delete监听器放在同一个Cog类中,就能实现完整的消息删除+编辑日志功能。
内容的提问来源于stack exchange,提问作者PanKaJxD
相关产品推荐
相关产品推荐

