diff --git a/config/config.sample.yaml b/config/config.sample.yaml index 07c3539ac470b29d9d4c6f92e1052bfbf794f48c..43d5913ed6bd0399342f547a7eda40569272fd9c 100644 --- a/config/config.sample.yaml +++ b/config/config.sample.yaml @@ -23,6 +23,9 @@ bridge: disableTypingNotifications: false # Disable deleting messages on Discord if a message is redacted on Matrix. disableDeletionForwarding: false + # Disable portal bridging, where Matrix users can search for unbridged Discord + # rooms on their Matrix server. + disablePortalBridging: false # Enable users to bridge rooms using !discord commands. See # https://t2bot.io/discord for instructions. enableSelfServiceBridging: false diff --git a/config/config.schema.yaml b/config/config.schema.yaml index 560508e582cad9f167a0a27fd3cba30fa71023e9..1a2381c30555576f136a816866adc3135a4888ae 100644 --- a/config/config.schema.yaml +++ b/config/config.schema.yaml @@ -20,6 +20,8 @@ properties: type: "boolean" disableDeletionForwarding: type: "boolean" + disablePortalBridging: + type: "boolean" enableSelfServiceBridging: type: "boolean" disableReadReceipts: diff --git a/src/config.ts b/src/config.ts index 51b6c2ae4c8ba12ed4c5d760044620768d2d73c3..3747e66e2958926e905e41ae98985e157f124413 100644 --- a/src/config.ts +++ b/src/config.ts @@ -89,6 +89,7 @@ class DiscordBridgeConfigBridge { public disableDiscordMentions: boolean; public disableDeletionForwarding: boolean; public enableSelfServiceBridging: boolean; + public disablePortalBridging: boolean; public disableReadReceipts: boolean; public disableEveryoneMention: boolean = false; public disableHereMention: boolean = false; diff --git a/src/discordas.ts b/src/discordas.ts index d56bc1fe892c91bc8ab4a6f775d779e55e938956..44200705294b7517467e332ff9f812684ad0c41f 100644 --- a/src/discordas.ts +++ b/src/discordas.ts @@ -186,16 +186,18 @@ async function run() { res.status(200).send(""); }); - // tslint:disable-next-line:no-any - appservice.on("query.room", async (roomAlias: string, createRoom: (opts: any) => Promise<void>) => { - try { - const createRoomOpts = await roomhandler.OnAliasQuery(roomAlias); - await createRoom(createRoomOpts); - await roomhandler.OnAliasQueried(roomAlias, createRoomOpts.__roomId); - } catch (err) { - log.error("Exception thrown while handling \"query.room\" event", err); - } - }); + if (config.bridge.disablePortalBridging !== true) { + // tslint:disable-next-line:no-any + appservice.on("query.room", async (roomAlias: string, createRoom: (opts: any) => Promise<void>) => { + try { + const createRoomOpts = await roomhandler.OnAliasQuery(roomAlias); + await createRoom(createRoomOpts); + await roomhandler.OnAliasQueried(roomAlias, createRoomOpts.__roomId); + } catch (err) { + log.error("Exception thrown while handling \"query.room\" event", err); + } + }); + } appservice.on("room.event", async (roomId: string, event: IMatrixEvent) => { try {