From 69988d7ba512f3177d767b89960a85579c1c4415 Mon Sep 17 00:00:00 2001 From: Miikka <2606411+Dragory@users.noreply.github.com> Date: Tue, 30 Apr 2019 10:50:38 +0300 Subject: [PATCH] Ignore video embed descriptions in word filter The description field is present in the embed details, but is not actually shown on the embed itself --- src/plugins/Censor.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/Censor.ts b/src/plugins/Censor.ts index ca839f4b..310cff86 100644 --- a/src/plugins/Censor.ts +++ b/src/plugins/Censor.ts @@ -1,5 +1,5 @@ import { IPluginOptions } from "knub"; -import { Invite } from "eris"; +import { Invite, Embed } from "eris"; import escapeStringRegexp from "escape-string-regexp"; import { GuildLogs } from "../data/GuildLogs"; import { LogType } from "../data/LogType"; @@ -14,6 +14,7 @@ import { ZalgoRegex } from "../data/Zalgo"; import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { SavedMessage } from "../data/entities/SavedMessage"; import { ZeppelinPlugin } from "./ZeppelinPlugin"; +import cloneDeep from "lodash.clonedeep"; interface ICensorPluginConfig { filter_zalgo: boolean; @@ -122,7 +123,17 @@ export class CensorPlugin extends ZeppelinPlugin { let messageContent = savedMessage.data.content || ""; if (savedMessage.data.attachments) messageContent += " " + JSON.stringify(savedMessage.data.attachments); - if (savedMessage.data.embeds) messageContent += " " + JSON.stringify(savedMessage.data.embeds); + if (savedMessage.data.embeds) { + const embeds = (savedMessage.data.embeds as Embed[]).map(e => cloneDeep(e)); + for (const embed of embeds) { + if (embed.type === "video") { + // Ignore video descriptions as they're not actually shown on the embed + delete embed.description; + } + } + + messageContent += " " + JSON.stringify(embeds); + } // Filter zalgo const filterZalgo = config.filter_zalgo;