forked from cadence/out-of-your-element
d->m: Support permissioned @everyone -> @room
This only works if #9 is fixed in the future.
This commit is contained in:
parent
e2d0ea41d5
commit
2fb68900c7
3 changed files with 220 additions and 1 deletions
|
@ -249,6 +249,8 @@ async function messageToEvent(message, guild, options = {}, di) {
|
|||
let repliedToEventRow = null
|
||||
let repliedToEventSenderMxid = null
|
||||
|
||||
if (message.mention_everyone) mentions.room = true
|
||||
|
||||
function addMention(mxid) {
|
||||
if (!mentions.user_ids) mentions.user_ids = []
|
||||
if (!mentions.user_ids.includes(mxid)) mentions.user_ids.push(mxid)
|
||||
|
@ -480,7 +482,7 @@ async function messageToEvent(message, guild, options = {}, di) {
|
|||
|
||||
// Mentions scenario 3: scan the message content for written @mentions of matrix users. Allows for up to one space between @ and mention.
|
||||
const matches = [...message.content.matchAll(/@ ?([a-z0-9._]+)\b/gi)]
|
||||
if (matches.length && matches.some(m => m[1].match(/[a-z]/i))) {
|
||||
if (matches.length && matches.some(m => m[1].match(/[a-z]/i) && m[1] !== "everyone" && m[1] !== "here")) {
|
||||
const writtenMentionsText = matches.map(m => m[1].toLowerCase())
|
||||
const roomID = select("channel_room", "room_id", {channel_id: message.channel_id}).pluck().get()
|
||||
assert(roomID)
|
||||
|
|
|
@ -789,3 +789,63 @@ test("message2event: crossposted announcements say where they are crossposted fr
|
|||
formatted_body: "🔀 <strong>Chewey Bot Official Server #announcements</strong><br>All text based commands are now inactive on Chewey Bot<br>To continue using commands you'll need to use them as slash commands"
|
||||
}])
|
||||
})
|
||||
|
||||
test("message2event: @everyone", async t => {
|
||||
const events = await messageToEvent(data.message_mention_everyone.at_everyone)
|
||||
t.deepEqual(events, [{
|
||||
$type: "m.room.message",
|
||||
msgtype: "m.text",
|
||||
body: "@room",
|
||||
"m.mentions": {
|
||||
room: true
|
||||
}
|
||||
}])
|
||||
})
|
||||
|
||||
test("message2event: @here", async t => {
|
||||
const events = await messageToEvent(data.message_mention_everyone.at_here)
|
||||
t.deepEqual(events, [{
|
||||
$type: "m.room.message",
|
||||
msgtype: "m.text",
|
||||
body: "@room",
|
||||
"m.mentions": {
|
||||
room: true
|
||||
}
|
||||
}])
|
||||
})
|
||||
|
||||
test("message2event: @everyone without permission", async t => {
|
||||
const events = await messageToEvent(data.message_mention_everyone.at_everyone_without_permission)
|
||||
t.deepEqual(events, [{
|
||||
$type: "m.room.message",
|
||||
msgtype: "m.text",
|
||||
body: "@everyone <-- this is testing that it DOESN'T mention. if this mentions everyone then my apologies.",
|
||||
format: "org.matrix.custom.html",
|
||||
formatted_body: "@everyone <-- this is testing that it DOESN'T mention. if this mentions everyone then my apologies.",
|
||||
"m.mentions": {}
|
||||
}])
|
||||
})
|
||||
|
||||
test("message2event: @here without permission", async t => {
|
||||
const events = await messageToEvent(data.message_mention_everyone.at_here_without_permission)
|
||||
t.deepEqual(events, [{
|
||||
$type: "m.room.message",
|
||||
msgtype: "m.text",
|
||||
body: "@here <-- this is testing that it DOESN'T mention. if this mentions people then my apologies.",
|
||||
format: "org.matrix.custom.html",
|
||||
formatted_body: "@here <-- this is testing that it DOESN'T mention. if this mentions people then my apologies.",
|
||||
"m.mentions": {}
|
||||
}])
|
||||
})
|
||||
|
||||
test("message2event: @everyone within a link", async t => {
|
||||
const events = await messageToEvent(data.message_mention_everyone.at_everyone_within_link)
|
||||
t.deepEqual(events, [{
|
||||
$type: "m.room.message",
|
||||
msgtype: "m.text",
|
||||
body: "https://github.com/@everyone",
|
||||
format: "org.matrix.custom.html",
|
||||
formatted_body: `<a href="https://github.com/@everyone">https://github.com/@everyone</a>`,
|
||||
"m.mentions": {}
|
||||
}])
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue