40 lines
1 KiB
JavaScript
40 lines
1 KiB
JavaScript
|
// @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
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
})()
|