diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js
index 5994ff37..8a5ab177 100644
--- a/d2m/converters/message-to-event.js
+++ b/d2m/converters/message-to-event.js
@@ -52,11 +52,8 @@ function getDiscordParseCallbacks(message, guild, useHTML) {
emoji: node => {
if (useHTML) {
const mxc = select("emoji", "mxc_url", {emoji_id: node.id}).pluck().get()
- if (mxc) {
+ assert(mxc) // All emojis should have been added ahead of time in the messageToEvent function.
return ``
- } else { // We shouldn't get here since all emojis should have been added ahead of time in the messageToEvent function.
- return ``
- }
} else {
return `:${node.name}:`
}
@@ -64,7 +61,9 @@ function getDiscordParseCallbacks(message, guild, useHTML) {
role: node => {
const role = guild.roles.find(r => r.id === node.id)
if (!role) {
- return "@&" + node.id // fallback for if the cache breaks. if this happens, fix discord-packets.js to store the role info.
+ // This fallback should only trigger if somebody manually writes a silly message, or if the cache breaks (hasn't happened yet).
+ // If the cache breaks, fix discord-packets.js to store role info properly.
+ return "@&" + node.id
} else if (useHTML && role.color) {
return `@${role.name}`
} else if (useHTML) {
diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js
index 8f89a43c..d40dd723 100644
--- a/d2m/converters/message-to-event.test.js
+++ b/d2m/converters/message-to-event.test.js
@@ -85,6 +85,18 @@ test("message2event: simple role mentions", async t => {
}])
})
+test("message2event: manually constructed unknown roles should use fallback", async t => {
+ const events = await messageToEvent(data.message.unknown_role, data.guild.general, {})
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ "m.mentions": {},
+ msgtype: "m.text",
+ body: "I'm just @&4 testing a few role pings <@&B> don't mind me",
+ format: "org.matrix.custom.html",
+ formatted_body: "I'm just @&4 testing a few role pings <@&B> don't mind me"
+ }])
+})
+
test("message2event: simple message link", async t => {
const events = await messageToEvent(data.message.simple_message_link, data.guild.general, {})
t.deepEqual(events, [{