auto-create bridged rooms if they don't exist #75

Merged
cadence merged 2 commits from beanie/out-of-your-element:feature/backfill-create-rooms into main 2026-03-09 00:22:41 +00:00
Showing only changes of commit add9bd250c - Show all commits

View file

@ -10,7 +10,6 @@ if (!channelID) {
process.exit(1)
}
const assert = require("assert/strict")
const sqlite = require("better-sqlite3")
const backfill = new sqlite("scripts/backfill.db")
backfill.prepare("CREATE TABLE IF NOT EXISTS backfill (channel_id TEXT NOT NULL, message_id INTEGER NOT NULL, PRIMARY KEY (channel_id, message_id))").run()
@ -56,18 +55,8 @@ async function event(event) {
if (!channel) return
const guild_id = event.d.id
let roomID = passthrough.select("channel_room", "room_id", {channel_id: channelID}).pluck().get()
if (!roomID) {
console.log(`Channel #${channel.name} is not bridged yet. Attempting to auto-create...`)
try {
roomID = await createRoom.syncRoom(channelID)
console.log(`Successfully bridged to new room: ${roomID}`)
} catch (e) {
console.error(`Failed to auto-create room: ${e.message}`)
process.exit(1)
}
}
await createRoom.syncRoom(channelID)
let last = backfill.prepare("SELECT cast(max(message_id) as TEXT) FROM backfill WHERE channel_id = ?").pluck().get(channelID) || "0"
console.log(`OK, processing messages for #${channel.name}, continuing from ${last}`)
@ -87,4 +76,8 @@ async function event(event) {
}
process.exit()
} catch (e) {
console.error(e)
process.exit(1) // won't exit automatically on thrown error due to living discord connection, so manual exit is necessary
}
}