Show embed edits properly in logs; show bot self-edits in logs
This commit is contained in:
parent
97e78e37ca
commit
2824c6a991
1 changed files with 28 additions and 10 deletions
|
@ -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)),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue