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<ICensorPluginConfig> {
 
     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;