d->m: Make PK members appear real

This commit is contained in:
Cadence Ember 2024-01-21 00:54:18 +13:00
commit 11864f80cf
9 changed files with 215 additions and 23 deletions

View file

@ -10,6 +10,8 @@ const messageToEvent = sync.require("../converters/message-to-event")
const api = sync.require("../../matrix/api")
/** @type {import("./register-user")} */
const registerUser = sync.require("./register-user")
/** @type {import("./register-pk-user")} */
const registerPkUser = sync.require("./register-pk-user")
/** @type {import("../actions/create-room")} */
const createRoom = sync.require("../actions/create-room")
/** @type {import("../../discord/utils")} */
@ -18,8 +20,9 @@ const dUtils = sync.require("../../discord/utils")
/**
* @param {import("discord-api-types/v10").GatewayMessageCreateDispatchData} message
* @param {import("discord-api-types/v10").APIGuild} guild
* @param {{speedbump_id: string, speedbump_webhook_id: string} | null} row data about the webhook which is proxying messages in this channel
*/
async function sendMessage(message, guild) {
async function sendMessage(message, guild, row) {
const roomID = await createRoom.ensureRoom(message.channel_id)
let senderMxid = null
@ -29,6 +32,13 @@ async function sendMessage(message, guild) {
} else { // well, good enough...
senderMxid = await registerUser.ensureSimJoined(message.author, roomID)
}
} else if (row && row.speedbump_webhook_id === message.webhook_id) {
// Handle the PluralKit public instance
if (row.speedbump_id === "466378653216014359") {
const root = await registerPkUser.fetchMessage(message.id)
assert(root.member) // Member is null if member was deleted. We just got this message, so member surely exists.
senderMxid = await registerPkUser.syncUser(root.member, roomID)
}
}
const events = await messageToEvent.messageToEvent(message, guild, {}, {api})