From a22a4db7bddaf22e2d666535920559840a411250 Mon Sep 17 00:00:00 2001
From: Will Hunt <half-shot@molrams.com>
Date: Wed, 13 Sep 2017 09:09:08 +0100
Subject: [PATCH] Add support for disablingDiscordMentions

---
 config/config.sample.yaml | 1 +
 config/config.schema.yaml | 2 ++
 src/bot.ts                | 9 +++++++--
 src/config.ts             | 1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/config/config.sample.yaml b/config/config.sample.yaml
index f995e94..f5ae4d3 100644
--- a/config/config.sample.yaml
+++ b/config/config.sample.yaml
@@ -3,6 +3,7 @@ bridge:
   homeserverUrl: "http://localhost:8008"
   disablePresence: false
   disableTypingNotifications: false
+  disableDiscordMentions: false
 auth:
   clientID: "12345" # Get from discord
   secret: "blah"
diff --git a/config/config.schema.yaml b/config/config.schema.yaml
index f515f8b..4b4e1d9 100644
--- a/config/config.schema.yaml
+++ b/config/config.schema.yaml
@@ -14,6 +14,8 @@ properties:
             type: "boolean"
           disableTypingNotifications:
             type: "boolean"
+          disableDiscordMentions:
+            type: "boolean"
     auth:
         type: "object"
         required: ["botToken"]
diff --git a/src/bot.ts b/src/bot.ts
index 2b7622c..fbdf291 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -145,6 +145,11 @@ export class DiscordBot {
   }
 
   public MatrixEventToEmbed(event: any, profile: any, channel: Discord.TextChannel): Discord.RichEmbed {
+    const body = this.config.bridge.disableDiscordMentions ? event.content.body :
+                 this.msgProcessor.FindMentionsInPlainBody(
+                     event.content.body,
+                     channel.members.array(),
+                 );
     if (profile) {
       profile.displayname = profile.displayname || event.sender;
       if (profile.avatar_url) {
@@ -157,11 +162,11 @@ export class DiscordBot {
           icon_url: profile.avatar_url,
           url: `https://matrix.to/#/${event.sender}`,
         },
-        description: this.msgProcessor.FindMentionsInPlainBody(event.content.body, channel.members.array()),
+        description: body,
       });
     }
     return new Discord.RichEmbed({
-      description: this.msgProcessor.FindMentionsInPlainBody(event.content.body, channel.members.array()),
+      description: body,
     });
   }
 
diff --git a/src/config.ts b/src/config.ts
index 959f144..e0ec7a2 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -12,6 +12,7 @@ class DiscordBridgeConfigBridge {
   public homeserverUrl: string;
   public disablePresence: boolean;
   public disableTypingNotifications: boolean;
+  public disableDiscordMentions: boolean;
 }
 
 class DiscordBridgeConfigDatabase {
-- 
GitLab