3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-16 14:11:50 +00:00

Show embed edits properly in logs; show bot self-edits in logs

This commit is contained in:
Dragory 2019-04-30 05:34:29 +03:00
parent 97e78e37ca
commit 2824c6a991

View file

@ -1,7 +1,7 @@
import { decorators as d, IPluginOptions, logger } from "knub"; import { decorators as d, IPluginOptions, logger } from "knub";
import { GuildLogs } from "../data/GuildLogs"; import { GuildLogs } from "../data/GuildLogs";
import { LogType } from "../data/LogType"; import { LogType } from "../data/LogType";
import { Channel, Constants as ErisConstants, Member, TextChannel, User } from "eris"; import { Channel, Constants as ErisConstants, Embed, Member, TextChannel, User } from "eris";
import { import {
createChunkedMessage, createChunkedMessage,
deactivateMentions, deactivateMentions,
@ -410,24 +410,42 @@ export class LogsPlugin extends ZeppelinPlugin<ILogsPluginConfig> {
// Uses events from savesMessages // Uses events from savesMessages
onMessageUpdate(savedMessage: SavedMessage, oldSavedMessage: SavedMessage) { onMessageUpdate(savedMessage: SavedMessage, oldSavedMessage: SavedMessage) {
// Don't log edits from the bot user // To log a message update, either the message content or a rich embed has to change
if (savedMessage.user_id === this.bot.user.id) return; let logUpdate = false;
const oldRichEmbed = (oldSavedMessage.data.embeds || []).find(e => (e as Embed).type === "rich");
const newRichEmbed = (savedMessage.data.embeds || []).find(e => (e as Embed).type === "rich");
if (oldSavedMessage && JSON.stringify(savedMessage.data) === JSON.stringify(oldSavedMessage.data)) return; if (
oldSavedMessage.data.content !== savedMessage.data.content ||
((oldRichEmbed && !newRichEmbed) ||
(!oldRichEmbed && newRichEmbed) ||
JSON.stringify(oldRichEmbed) !== JSON.stringify(newRichEmbed))
) {
logUpdate = true;
}
if (!logUpdate) {
return;
}
const member = this.guild.members.get(savedMessage.user_id); const member = this.guild.members.get(savedMessage.user_id);
const channel = this.guild.channels.get(savedMessage.channel_id); const channel = this.guild.channels.get(savedMessage.channel_id);
const before = oldSavedMessage let oldMessageContent = oldSavedMessage.data.content || "<no text content>";
? disableCodeBlocks(deactivateMentions(oldSavedMessage.data.content || "")) if (oldRichEmbed) {
: "Unknown pre-edit content"; oldMessageContent += "\n\nEmbed:\n\n" + JSON.stringify(oldRichEmbed);
const after = disableCodeBlocks(deactivateMentions(savedMessage.data.content || "")); }
let newMessageContent = savedMessage.data.content || "<no text content>";
if (newRichEmbed) {
newMessageContent += "\n\nEmbed:\n\n" + JSON.stringify(newRichEmbed);
}
this.guildLogs.log(LogType.MESSAGE_EDIT, { this.guildLogs.log(LogType.MESSAGE_EDIT, {
member: stripObjectToScalars(member, ["user"]), member: stripObjectToScalars(member, ["user"]),
channel: stripObjectToScalars(channel), channel: stripObjectToScalars(channel),
before, before: disableCodeBlocks(deactivateMentions(oldMessageContent)),
after, after: disableCodeBlocks(deactivateMentions(newMessageContent)),
}); });
} }