diff --git a/d2m/actions/register-user.test.js b/d2m/actions/register-user.test.js
index 0afce50..7e23450 100644
--- a/d2m/actions/register-user.test.js
+++ b/d2m/actions/register-user.test.js
@@ -4,21 +4,21 @@ const {test} = require("supertape")
const testData = require("../../test/data")
test("member2state: general", async t => {
- t.deepEqual(
- await _memberToStateContent(testData.member.sheep.user, testData.member.sheep, testData.guild.general.id),
- {
- avatar_url: "mxc://cadence.moe/rfemHmAtcprjLEiPiEuzPhpl",
- displayname: "The Expert's Submarine | aprilsong",
- membership: "join",
- "moe.cadence.ooye.member": {
- avatar: "/guilds/112760669178241024/users/134826546694193153/avatars/38dd359aa12bcd52dd3164126c587f8c.png?size=1024"
- },
- "uk.half-shot.discord.member": {
- bot: false,
- displayColor: null,
- id: "134826546694193153",
- username: "@aprilsong"
- }
- }
- )
+ t.deepEqual(
+ await _memberToStateContent(testData.member.sheep.user, testData.member.sheep, testData.guild.general.id),
+ {
+ avatar_url: "mxc://cadence.moe/rfemHmAtcprjLEiPiEuzPhpl",
+ displayname: "The Expert's Submarine | aprilsong",
+ membership: "join",
+ "moe.cadence.ooye.member": {
+ avatar: "/guilds/112760669178241024/users/134826546694193153/avatars/38dd359aa12bcd52dd3164126c587f8c.png?size=1024"
+ },
+ "uk.half-shot.discord.member": {
+ bot: false,
+ displayColor: null,
+ id: "134826546694193153",
+ username: "@aprilsong"
+ }
+ }
+ )
})
diff --git a/d2m/actions/send-message.js b/d2m/actions/send-message.js
index f5fe5ef..4f111b0 100644
--- a/d2m/actions/send-message.js
+++ b/d2m/actions/send-message.js
@@ -37,7 +37,7 @@ async function sendMessage(message, guild) {
delete eventWithoutType.$type
const eventID = await api.sendEvent(roomID, eventType, event, senderMxid)
- db.prepare("INSERT INTO event_message (event_id, message_id, channel_id, part, source) VALUES (?, ?, ?, ?, 1)").run(eventID, message.id, message.channel_id, eventPart) // source 1 = discord
+ db.prepare("INSERT INTO event_message (event_id, message_id, part, source) VALUES (?, ?, ?, 1)").run(eventID, message.id, eventPart) // source 1 = discord
eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting
eventIDs.push(eventID)
diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js
index fc76bf2..90023ee 100644
--- a/d2m/converters/message-to-event.js
+++ b/d2m/converters/message-to-event.js
@@ -45,22 +45,12 @@ async function messageToEvent(message, guild) {
// Text content appears first
if (message.content) {
- let content = message.content
- content = content.replace(/https:\/\/(?:ptb\.|canary\.|www\.)?discord(?:app)?\.com\/channels\/([0-9]+)\/([0-9]+)\/([0-9]+)/, (whole, guildID, channelID, messageID) => {
- const row = db.prepare("SELECT room_id, event_id FROM event_message INNER JOIN channel_room USING (channel_id) WHERE channel_id = ? AND message_id = ? AND part = 0").get(channelID, messageID)
- if (row) {
- return `https://matrix.to/#/${row.room_id}/${row.event_id}`
- } else {
- return `${whole} [event not found]`
- }
- })
-
- const html = markdown.toHTML(content, {
+ const html = markdown.toHTML(message.content, {
discordCallback: getDiscordParseCallbacks(message, true)
}, null, null)
- const body = markdown.toHTML(content, {
- discordCallback: getDiscordParseCallbacks(message, false),
+ const body = markdown.toHTML(message.content, {
+ discordCallback: getDiscordParseCallbacks(message, false), //TODO: library bug!!
discordOnly: true,
escapeHTML: false,
}, null, null)
diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js
index a456a94..1f3a844 100644
--- a/d2m/converters/message-to-event.test.js
+++ b/d2m/converters/message-to-event.test.js
@@ -3,90 +3,68 @@ const {messageToEvent} = require("./message-to-event")
const data = require("../../test/data")
test("message2event: simple plaintext", async t => {
- const events = await messageToEvent(data.message.simple_plaintext, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.text",
- body: "ayy lmao"
- }])
+ const events = await messageToEvent(data.message.simple_plaintext, data.guild.general)
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ msgtype: "m.text",
+ body: "ayy lmao"
+ }])
})
test("message2event: simple user mention", async t => {
- const events = await messageToEvent(data.message.simple_user_mention, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.text",
- body: "@crunch god: Tell me about Phil, renowned martial arts master and creator of the Chin Trick",
- format: "org.matrix.custom.html",
- formatted_body: '@crunch god Tell me about Phil, renowned martial arts master and creator of the Chin Trick'
- }])
-})
-
-test("message2event: simple room mention", async t => {
- const events = await messageToEvent(data.message.simple_room_mention, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.text",
- body: "@crunch god: Tell me about Phil, renowned martial arts master and creator of the Chin Trick",
- format: "org.matrix.custom.html",
- formatted_body: '@crunch god Tell me about Phil, renowned martial arts master and creator of the Chin Trick'
- }])
-})
-
-test("message2event: simple message link", async t => {
- const events = await messageToEvent(data.message.simple_message_link, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.text",
- body: "https://matrix.to/#/!kLRqKKUQXcibIMtOpl:cadence.moe/$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg",
- format: "org.matrix.custom.html",
- formatted_body: 'https://matrix.to/#/!kLRqKKUQXcibIMtOpl:cadence.moe/$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg'
- }])
+ const events = await messageToEvent(data.message.simple_user_mention, data.guild.general)
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ msgtype: "m.text",
+ body: "@crunch god: Tell me about Phil, renowned martial arts master and creator of the Chin Trick",
+ format: "org.matrix.custom.html",
+ formatted_body: '@crunch god Tell me about Phil, renowned martial arts master and creator of the Chin Trick'
+ }])
})
test("message2event: attachment with no content", async t => {
- const events = await messageToEvent(data.message.attachment_no_content, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.image",
- url: "mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM",
- body: "image.png",
- external_url: "https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png",
- info: {
- mimetype: "image/png",
- w: 466,
- h: 85,
- size: 12919,
- },
- }])
+ const events = await messageToEvent(data.message.attachment_no_content, data.guild.general)
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ msgtype: "m.image",
+ url: "mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM",
+ body: "image.png",
+ external_url: "https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png",
+ info: {
+ mimetype: "image/png",
+ w: 466,
+ h: 85,
+ size: 12919,
+ },
+ }])
})
test("message2event: stickers", async t => {
- const events = await messageToEvent(data.message.sticker, data.guild.general)
- t.deepEqual(events, [{
- $type: "m.room.message",
- msgtype: "m.text",
- body: "can have attachments too"
- }, {
- $type: "m.room.message",
- msgtype: "m.image",
- url: "mxc://cadence.moe/ZDCNYnkPszxGKgObUIFmvjus",
- body: "image.png",
- external_url: "https://cdn.discordapp.com/attachments/122155380120748034/1106366167486038016/image.png",
- info: {
- mimetype: "image/png",
- w: 333,
- h: 287,
- size: 127373,
- },
- }, {
- $type: "m.sticker",
- body: "pomu puff - damn that tiny lil bitch really chuffing. puffing that fat ass dart",
- info: {
- mimetype: "image/png"
- // thumbnail_url
- // thumbnail_info
- },
- url: "mxc://cadence.moe/UuUaLwXhkxFRwwWCXipDlBHn"
- }])
+ const events = await messageToEvent(data.message.sticker, data.guild.general)
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ msgtype: "m.text",
+ body: "can have attachments too"
+ }, {
+ $type: "m.room.message",
+ msgtype: "m.image",
+ url: "mxc://cadence.moe/ZDCNYnkPszxGKgObUIFmvjus",
+ body: "image.png",
+ external_url: "https://cdn.discordapp.com/attachments/122155380120748034/1106366167486038016/image.png",
+ info: {
+ mimetype: "image/png",
+ w: 333,
+ h: 287,
+ size: 127373,
+ },
+ }, {
+ $type: "m.sticker",
+ body: "pomu puff - damn that tiny lil bitch really chuffing. puffing that fat ass dart",
+ info: {
+ mimetype: "image/png"
+ // thumbnail_url
+ // thumbnail_info
+ },
+ url: "mxc://cadence.moe/UuUaLwXhkxFRwwWCXipDlBHn"
+ }])
})
diff --git a/db/ooye.db b/db/ooye.db
index b875720..7df165b 100644
Binary files a/db/ooye.db and b/db/ooye.db differ
diff --git a/m2d/actions/send-event.js b/m2d/actions/send-event.js
index c05f08c..56a660f 100644
--- a/m2d/actions/send-event.js
+++ b/m2d/actions/send-event.js
@@ -25,7 +25,7 @@ async function sendEvent(event) {
let eventPart = 0 // 0 is primary, 1 is supporting
for (const message of messages) {
const messageResponse = await channelWebhook.sendMessageWithWebhook(channelID, message)
- db.prepare("INSERT INTO event_message (event_id, message_id, channel_id, part, source) VALUES (?, ?, ?, ?, 0)").run(event.event_id, messageResponse.id, channelID, eventPart) // source 0 = matrix
+ db.prepare("INSERT INTO event_message (event_id, message_id, part, source) VALUES (?, ?, ?, 0)").run(event.event_id, messageResponse.id, eventPart) // source 0 = matrix
eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting?
messageResponses.push(messageResponse)
diff --git a/package-lock.json b/package-lock.json
index 7dcde49..4908aa6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"dependencies": {
"better-sqlite3": "^8.3.0",
"cloudstorm": "^0.8.0",
- "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#df495b152fdc48fb22284ecda9a988e6df61bf99",
+ "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#24508e701e91d5a00fa5e773ced874d9ee8c889b",
"heatsync": "^2.4.1",
"js-yaml": "^4.1.0",
"matrix-appservice": "^2.0.0",
@@ -685,11 +685,11 @@
}
},
"node_modules/cloudstorm": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/cloudstorm/-/cloudstorm-0.8.3.tgz",
- "integrity": "sha512-4c2rqFFvzM4P3pcnjnGUlYuyBjx/xnMew6imB0sFwmNLITLCTLYa3qGkrnhI1g/tM0fqg+Gr+EmDHiDZfEr9LQ==",
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/cloudstorm/-/cloudstorm-0.8.2.tgz",
+ "integrity": "sha512-G/P6/+LwXjiS6AmheRG+07DmmsrpHpt21JFMhe+rW8VagFOOKemC2Bcru+Qncl/5jdjZC2gzjKpjfdTjfUm+iw==",
"dependencies": {
- "snowtransfer": "^0.8.3"
+ "snowtransfer": "^0.8.2"
},
"engines": {
"node": ">=12.0.0"
@@ -929,7 +929,7 @@
},
"node_modules/discord-markdown": {
"version": "2.4.1",
- "resolved": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#df495b152fdc48fb22284ecda9a988e6df61bf99",
+ "resolved": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#24508e701e91d5a00fa5e773ced874d9ee8c889b",
"license": "MIT",
"dependencies": {
"simple-markdown": "^0.7.2"
@@ -2464,9 +2464,9 @@
}
},
"node_modules/snowtransfer": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/snowtransfer/-/snowtransfer-0.8.3.tgz",
- "integrity": "sha512-0X6NLFBUKppYT5VH/mVQNGX+ufv0AndunZC84MqGAR/3rfTIGQblgGJlHlDQbeCytlXdMpgRHIGQnBFlE094NQ==",
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snowtransfer/-/snowtransfer-0.8.2.tgz",
+ "integrity": "sha512-fAmaJSpFZqGwAvbrhT3XOWwhbiuHOgxN8pGeKnDDW0f8zdkPmSQT9aekXhFr1WukB94NIALYGcyIXe902p8S4A==",
"dependencies": {
"discord-api-types": "^0.37.47",
"form-data": "^4.0.0",
diff --git a/package.json b/package.json
index 7fb8cc6..b3e19eb 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"dependencies": {
"better-sqlite3": "^8.3.0",
"cloudstorm": "^0.8.0",
- "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#df495b152fdc48fb22284ecda9a988e6df61bf99",
+ "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#24508e701e91d5a00fa5e773ced874d9ee8c889b",
"heatsync": "^2.4.1",
"js-yaml": "^4.1.0",
"matrix-appservice": "^2.0.0",
diff --git a/test/data.js b/test/data.js
index 52b8770..f4326a6 100644
--- a/test/data.js
+++ b/test/data.js
@@ -216,119 +216,6 @@ module.exports = {
flags: 0,
components: []
},
- simple_message_link: {
- id: "1126788210308161626",
- type: 0,
- content: "https://ptb.discord.com/channels/112760669178241024/112760669178241024/1126786462646550579",
- channel_id: "112760669178241024",
- author: {
- id: "113340068197859328",
- username: "kumaccino",
- avatar: "b48302623a12bc7c59a71328f72ccb39",
- discriminator: "0",
- public_flags: 128,
- flags: 128,
- banner: null,
- accent_color: null,
- global_name: "kumaccino",
- avatar_decoration: null,
- display_name: "kumaccino",
- banner_color: null
- },
- attachments: [],
- embeds: [],
- mentions: [],
- mention_roles: [],
- pinned: false,
- mention_everyone: false,
- tts: false,
- timestamp: "2023-07-07T08:14:04.050000+00:00",
- edited_timestamp: null,
- flags: 0,
- components: []
- },
- simple_reply: {
- id: "1126604870762369124",
- type: 19,
- content: "",
- channel_id: "112760669178241024",
- author: {
- id: "116718249567059974",
- username: "rnl",
- avatar: "67e70f6424eead669e076b44474164c3",
- discriminator: "0",
- public_flags: 768,
- flags: 768,
- banner: null,
- accent_color: null,
- global_name: "▲",
- avatar_decoration: null,
- display_name: "▲",
- banner_color: null
- },
- attachments: [],
- embeds: [],
- mentions: [
- {
- id: "113340068197859328",
- username: "kumaccino",
- avatar: "b48302623a12bc7c59a71328f72ccb39",
- discriminator: "0",
- public_flags: 128,
- flags: 128,
- banner: null,
- accent_color: null,
- global_name: "kumaccino",
- avatar_decoration: null,
- display_name: "kumaccino",
- banner_color: null
- }
- ],
- mention_roles: [],
- pinned: false,
- mention_everyone: false,
- tts: false,
- timestamp: "2023-07-06T20:05:32.496000+00:00",
- edited_timestamp: null,
- flags: 0,
- components: [],
- message_reference: {
- channel_id: "112760669178241024",
- message_id: "1126577139723026564",
- guild_id: "112760669178241024"
- },
- referenced_message: {
- id: "1126577139723026564",
- type: 0,
- content: "this message was replied to",
- channel_id: "112760669178241024",
- author: {
- id: "113340068197859328",
- username: "kumaccino",
- avatar: "b48302623a12bc7c59a71328f72ccb39",
- discriminator: "0",
- public_flags: 128,
- flags: 128,
- banner: null,
- accent_color: null,
- global_name: "kumaccino",
- avatar_decoration: null,
- display_name: "kumaccino",
- banner_color: null
- },
- attachments: [],
- embeds: [],
- mentions: [],
- mention_roles: [],
- pinned: false,
- mention_everyone: false,
- tts: false,
- timestamp: "2023-07-06T18:15:20.901000+00:00",
- edited_timestamp: null,
- flags: 0,
- components: []
- }
- },
attachment_no_content: {
id: "1124628646670389348",
type: 0,