mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-10 12:25:02 +00:00
Migrate Logs to new Plugin structure, also dont ignore it
This commit is contained in:
parent
140ba84544
commit
aea019181c
16 changed files with 764 additions and 1 deletions
58
backend/src/plugins/Logs/util/onMessageUpdate.ts
Normal file
58
backend/src/plugins/Logs/util/onMessageUpdate.ts
Normal file
|
@ -0,0 +1,58 @@
|
|||
import { PluginData } from "knub";
|
||||
import { LogsPluginType } from "../types";
|
||||
import { SavedMessage } from "src/data/entities/SavedMessage";
|
||||
import { Embed } from "eris";
|
||||
import { LogType } from "src/data/LogType";
|
||||
import { stripObjectToScalars, resolveUser } from "src/utils";
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
|
||||
export async function onMessageUpdate(
|
||||
pluginData: PluginData<LogsPluginType>,
|
||||
savedMessage: SavedMessage,
|
||||
oldSavedMessage: SavedMessage,
|
||||
) {
|
||||
// To log a message update, either the message content or a rich embed has to change
|
||||
let logUpdate = false;
|
||||
|
||||
const oldEmbedsToCompare = ((oldSavedMessage.data.embeds || []) as Embed[])
|
||||
.map(e => cloneDeep(e))
|
||||
.filter(e => (e as Embed).type === "rich");
|
||||
|
||||
const newEmbedsToCompare = ((savedMessage.data.embeds || []) as Embed[])
|
||||
.map(e => cloneDeep(e))
|
||||
.filter(e => (e as Embed).type === "rich");
|
||||
|
||||
for (const embed of [...oldEmbedsToCompare, ...newEmbedsToCompare]) {
|
||||
if (embed.thumbnail) {
|
||||
delete embed.thumbnail.width;
|
||||
delete embed.thumbnail.height;
|
||||
}
|
||||
|
||||
if (embed.image) {
|
||||
delete embed.image.width;
|
||||
delete embed.image.height;
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
oldSavedMessage.data.content !== savedMessage.data.content ||
|
||||
oldEmbedsToCompare.length !== newEmbedsToCompare.length ||
|
||||
JSON.stringify(oldEmbedsToCompare) !== JSON.stringify(newEmbedsToCompare)
|
||||
) {
|
||||
logUpdate = true;
|
||||
}
|
||||
|
||||
if (!logUpdate) {
|
||||
return;
|
||||
}
|
||||
|
||||
const user = await resolveUser(pluginData.client, savedMessage.user_id);
|
||||
const channel = pluginData.guild.channels.get(savedMessage.channel_id);
|
||||
|
||||
pluginData.state.guildLogs.log(LogType.MESSAGE_EDIT, {
|
||||
user: stripObjectToScalars(user),
|
||||
channel: stripObjectToScalars(channel),
|
||||
before: oldSavedMessage,
|
||||
after: savedMessage,
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue