store the channel_id on event_message
This commit is contained in:
		
							parent
							
								
									1d6e833b22
								
							
						
					
					
						commit
						0f4f404160
					
				
					 5 changed files with 150 additions and 5 deletions
				
			
		| 
						 | 
					@ -37,7 +37,7 @@ async function sendMessage(message, guild) {
 | 
				
			||||||
		delete eventWithoutType.$type
 | 
							delete eventWithoutType.$type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const eventID = await api.sendEvent(roomID, eventType, event, senderMxid)
 | 
							const eventID = await api.sendEvent(roomID, eventType, event, senderMxid)
 | 
				
			||||||
		db.prepare("INSERT INTO event_message (event_id, message_id, part, source) VALUES (?, ?, ?, 1)").run(eventID, message.id, eventPart) // source 1 = discord
 | 
							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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting
 | 
							eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting
 | 
				
			||||||
		eventIDs.push(eventID)
 | 
							eventIDs.push(eventID)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,12 +45,22 @@ async function messageToEvent(message, guild) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Text content appears first
 | 
						// Text content appears first
 | 
				
			||||||
	if (message.content) {
 | 
						if (message.content) {
 | 
				
			||||||
		const html = markdown.toHTML(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, {
 | 
				
			||||||
			discordCallback: getDiscordParseCallbacks(message, true)
 | 
								discordCallback: getDiscordParseCallbacks(message, true)
 | 
				
			||||||
		}, null, null)
 | 
							}, null, null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const body = markdown.toHTML(message.content, {
 | 
							const body = markdown.toHTML(content, {
 | 
				
			||||||
			discordCallback: getDiscordParseCallbacks(message, false), //TODO: library bug!!
 | 
								discordCallback: getDiscordParseCallbacks(message, false),
 | 
				
			||||||
			discordOnly: true,
 | 
								discordOnly: true,
 | 
				
			||||||
			escapeHTML: false,
 | 
								escapeHTML: false,
 | 
				
			||||||
		}, null, null)
 | 
							}, null, null)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,28 @@ test("message2event: simple user mention", async t => {
 | 
				
			||||||
	}])
 | 
						}])
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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: '<a href="https://matrix.to/#/@_ooye_crunch_god:cadence.moe">@crunch god</a> 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: '<a href="https://matrix.to/#/!kLRqKKUQXcibIMtOpl:cadence.moe/$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg">https://matrix.to/#/!kLRqKKUQXcibIMtOpl:cadence.moe/$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg</a>'
 | 
				
			||||||
 | 
						}])
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test("message2event: attachment with no content", async t => {
 | 
					test("message2event: attachment with no content", async t => {
 | 
				
			||||||
	const events = await messageToEvent(data.message.attachment_no_content, data.guild.general)
 | 
						const events = await messageToEvent(data.message.attachment_no_content, data.guild.general)
 | 
				
			||||||
	t.deepEqual(events, [{
 | 
						t.deepEqual(events, [{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ async function sendEvent(event) {
 | 
				
			||||||
	let eventPart = 0 // 0 is primary, 1 is supporting
 | 
						let eventPart = 0 // 0 is primary, 1 is supporting
 | 
				
			||||||
	for (const message of messages) {
 | 
						for (const message of messages) {
 | 
				
			||||||
      const messageResponse = await channelWebhook.sendMessageWithWebhook(channelID, message)
 | 
					      const messageResponse = await channelWebhook.sendMessageWithWebhook(channelID, message)
 | 
				
			||||||
		db.prepare("INSERT INTO event_message (event_id, message_id, part, source) VALUES (?, ?, ?, 0)").run(event.event_id, messageResponse.id, eventPart) // source 0 = matrix
 | 
							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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting?
 | 
							eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting?
 | 
				
			||||||
		messageResponses.push(messageResponse)
 | 
							messageResponses.push(messageResponse)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										113
									
								
								test/data.js
									
										
									
									
									
								
							
							
						
						
									
										113
									
								
								test/data.js
									
										
									
									
									
								
							| 
						 | 
					@ -216,6 +216,119 @@ module.exports = {
 | 
				
			||||||
			flags: 0,
 | 
								flags: 0,
 | 
				
			||||||
			components: []
 | 
								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: "<redacted for privacy>",
 | 
				
			||||||
 | 
								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: {
 | 
							attachment_no_content: {
 | 
				
			||||||
			id: "1124628646670389348",
 | 
								id: "1124628646670389348",
 | 
				
			||||||
			type: 0,
 | 
								type: 0,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue