diff --git a/.gitignore b/.gitignore index a462935..e533dce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,16 @@ -node_modules +# Secrets config.js registration.yaml -coverage ooye.db* +events.db* + +# Automatically generated +node_modules +coverage test/res/* !test/res/lottie* +icon.svg +*~ +.#* +\#*# +launch.json diff --git a/scripts/remove-old-bridged-users.js b/scripts/remove-old-bridged-users.js new file mode 100644 index 0000000..d8910bd --- /dev/null +++ b/scripts/remove-old-bridged-users.js @@ -0,0 +1,39 @@ +// @ts-check + +const HeatSync = require("heatsync") +const sync = new HeatSync({watchFS: false}) + +const sqlite = require("better-sqlite3") +const db = new sqlite("db/ooye.db") + +const passthrough = require("../src/passthrough") +Object.assign(passthrough, {db, sync}) + +const api = require("../src/matrix/api") +const mreq = require("../src/matrix/mreq") + +const rooms = db.prepare("select room_id from channel_room").pluck().all() + +;(async () => { + // Step 5: Kick users starting with @_discord_ + await mreq.withAccessToken("baby", async () => { + for (const roomID of rooms) { + try { + const members = await api.getJoinedMembers(roomID) + for (const mxid of Object.keys(members.joined)) { + if (mxid.startsWith("@_discord_") && !mxid.startsWith("@_discord_bot")) { + await api.leaveRoom(roomID, mxid) + } + } + await api.setUserPower(roomID, "@_discord_bot:cadence.moe", 0) + await api.leaveRoom(roomID) + } catch (e) { + if (e.message.includes("Appservice not in room")) { + // ok + } else { + throw e + } + } + } + }) +})()