forked from cadence/out-of-your-element
Why did I make it this way??? #13
1 changed files with 36 additions and 0 deletions
36
scripts/remove-uncached-bridged-users.js
Normal file
36
scripts/remove-uncached-bridged-users.js
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
const HeatSync = require("heatsync")
|
||||||
|
const sync = new HeatSync({watchFS: false})
|
||||||
|
|
||||||
|
const sqlite = require("better-sqlite3")
|
||||||
|
const db = new sqlite("ooye.db", {fileMustExist: true})
|
||||||
|
|
||||||
|
const passthrough = require("../src/passthrough")
|
||||||
|
Object.assign(passthrough, {db, sync})
|
||||||
|
|
||||||
|
const api = require("../src/matrix/api")
|
||||||
|
const utils = require("../src/matrix/utils")
|
||||||
|
const {reg} = require("../src/matrix/read-registration")
|
||||||
|
|
||||||
|
const rooms = db.prepare("select room_id, name, nick from channel_room").all()
|
||||||
|
|
||||||
|
;(async () => {
|
||||||
|
// Search for members starting with @_ooye_ and kick them if they are not in sim_member cache
|
||||||
|
for (const room of rooms) {
|
||||||
|
try {
|
||||||
|
const members = await api.getJoinedMembers(room.room_id)
|
||||||
|
for (const mxid of Object.keys(members.joined)) {
|
||||||
|
if (!mxid.startsWith("@" + reg.sender_localpart) && utils.eventSenderIsFromDiscord(mxid) && !db.prepare("select mxid from sim_member where mxid = ? and room_id = ?").get(mxid, room.room_id)) {
|
||||||
|
await api.leaveRoom(room.room_id, mxid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (e.message.includes("Appservice not in room")) {
|
||||||
|
// ok
|
||||||
|
} else {
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue