40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.0 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
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	})
 | |
| })()
 | 
