bridge both ways and prevent reflections
This commit is contained in:
parent
3578ca28b5
commit
39cdba9f90
15 changed files with 67 additions and 51 deletions
|
@ -1,6 +1,5 @@
|
|||
// @ts-check
|
||||
|
||||
const assert = require("assert").strict
|
||||
const DiscordTypes = require("discord-api-types/v10")
|
||||
const markdown = require("discord-markdown")
|
||||
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
// @ts-check
|
||||
|
||||
const {test} = require("supertape")
|
||||
const assert = require("assert")
|
||||
const {eventToMessage} = require("./event-to-message")
|
||||
const data = require("../../test/data")
|
||||
|
||||
test("event2message: janky test", t => {
|
||||
t.deepEqual(
|
||||
eventToMessage({
|
||||
age: 405299,
|
||||
content: {
|
||||
body: "test",
|
||||
msgtype: "m.text"
|
||||
|
@ -20,8 +18,7 @@ test("event2message: janky test", t => {
|
|||
type: "m.room.message",
|
||||
unsigned: {
|
||||
age: 405299
|
||||
},
|
||||
user_id: "@cadence:cadence.moe"
|
||||
}
|
||||
}),
|
||||
[{
|
||||
username: "cadence:cadence.moe",
|
||||
|
|
21
m2d/converters/utils.js
Normal file
21
m2d/converters/utils.js
Normal file
|
@ -0,0 +1,21 @@
|
|||
// @ts-check
|
||||
|
||||
const reg = require("../../matrix/read-registration")
|
||||
const userRegex = reg.namespaces.users.map(u => new RegExp(u.regex))
|
||||
/**
|
||||
* Determine whether an event is the bridged representation of a discord message.
|
||||
* Such messages shouldn't be bridged again.
|
||||
* @param {string} sender
|
||||
*/
|
||||
function eventSenderIsFromDiscord(sender) {
|
||||
// If it's from a user in the bridge's namespace, then it originated from discord
|
||||
// This includes messages sent by the appservice's bot user, because that is what's used for webhooks
|
||||
// TODO: It would be nice if bridge system messages wouldn't trigger this check and could be bridged from matrix to discord, while webhook reflections would remain ignored...
|
||||
if (userRegex.some(x => sender.match(x))) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
module.exports.eventSenderIsFromDiscord = eventSenderIsFromDiscord
|
16
m2d/converters/utils.test.js
Normal file
16
m2d/converters/utils.test.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
// @ts-check
|
||||
|
||||
const {test} = require("supertape")
|
||||
const {eventSenderIsFromDiscord} = require("./utils")
|
||||
|
||||
test("sender type: matrix user", t => {
|
||||
t.notOk(eventSenderIsFromDiscord("@cadence:cadence.moe"))
|
||||
})
|
||||
|
||||
test("sender type: ooye bot", t => {
|
||||
t.ok(eventSenderIsFromDiscord("@_ooye_bot:cadence.moe"))
|
||||
})
|
||||
|
||||
test("sender type: ooye puppet", t => {
|
||||
t.ok(eventSenderIsFromDiscord("@_ooye_sheep:cadence.moe"))
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue