我正在使用 on_message_delete
记录已删除的 Discord 消息像这样的事件:
@commands.Cog.listener()
async def on_message_delete(self, message):
if not message.author.bot:
channel = db.field("SELECT LogID FROM guilds WHERE GuildID = ?", message.guild.id)
if channel != 0: #If this guild wants to log deleted messages
embed = discord.Embed(title="Message Deleted",
color=discord.Color.red(),
timestamp=getTime())
embed.add_field(name="Member: ", value=message.author.mention, inline=False)
embed.add_field(name="Deleter: ", value="What do I put here", inline=False)
embed.set_footer(text=f"User ID: {message.author.id}")
embed.set_thumbnail(url=message.author.avatar_url)
fields = [("Message:", message.content, True),
("Channel:", message.channel.mention, False)]
for name, value, inline in fields:
embed.add_field(name=name, value=value, inline=inline)
await self.bot.get_channel(channel).send(embed=embed)
有没有办法获取删除消息的人的 id,这样即使 mod 删除了其他人的消息,您仍然可以获得他们的 id?(我也查看了其他来源,例如 Reddit page 和 API 消息,但都没有给出任何见解)
最佳答案
鉴于@yotam rec 关于使用 的评论,我终于能够记录它们Discord Audit Logs .
我是这样做的:
on_message_delete
听众@commands.Cog.listener()
async def on_message_delete(self, message):
if not message.author.bot:
modDeleted = False
async for entry in message.guild.audit_logs(limit=1, action=discord.AuditLogAction.message_delete):
if entry.created_at.now(timezone("US/Eastern")) == getTime(): #Custom time function
modDeleted = True
embed = discord.Embed(title="Message Deleted By Mod")
embed.add_field(name="Member: ", value = message.author.mention, inline=True)
embed.add_field(name = "Mod: ", value = entry.user.mention, inline=True)
embed.add_field(name = "Message: ", value = message.content, inline=False)
embed.add_field(name = "Channel: ", value = message.channel.mention, inline=False)
await self.bot.get_channel(channel).send(embed=embed)
if modDeleted == False:
embed = discord.Embed(title="Message Deleted")
embed.add_field(name="Member: ", value=message.author.mention, inline=False)
embed.add_field(name="Message: ", value=message.content, inline=True)
embed.add_field(name="Channel: ", value=message.channel.mention, inline=False)
await self.bot.get_channel(channel).send(embed=embed)
希望这也能帮助其他遇到此问题的人!
关于python - 在 Discord.py bot 中记录删除消息的人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68786644/