Fix unlinking left rooms
This commit is contained in:
		
							parent
							
								
									ae57fa2801
								
							
						
					
					
						commit
						17ea92a8c2
					
				
					 1 changed files with 17 additions and 2 deletions
				
			
		|  | @ -11,6 +11,8 @@ const {discord, sync, db, select, from} = passthrough | |||
| const file = sync.require("../../matrix/file") | ||||
| /** @type {import("../../matrix/api")} */ | ||||
| const api = sync.require("../../matrix/api") | ||||
| /** @type {import("../../matrix/mreq")} */ | ||||
| const mreq = sync.require("../../matrix/mreq") | ||||
| /** @type {import("../../matrix/kstate")} */ | ||||
| const ks = sync.require("../../matrix/kstate") | ||||
| /** @type {import("../../discord/utils")} */ | ||||
|  | @ -412,9 +414,20 @@ async function unbridgeDeletedChannel(channel, guildID) { | |||
| 	const row = from("guild_space").join("guild_active", "guild_id").select("space_id", "autocreate").get() | ||||
| 	assert.ok(row) | ||||
| 
 | ||||
| 	let botInRoom = true | ||||
| 
 | ||||
| 	// remove declaration that the room is bridged
 | ||||
| 	await api.sendState(roomID, "uk.half-shot.bridge", `moe.cadence.ooye://discord/${guildID}/${channel.id}`, {}) | ||||
| 	if ("topic" in channel) { | ||||
| 	try { | ||||
| 		await api.sendState(roomID, "uk.half-shot.bridge", `moe.cadence.ooye://discord/${guildID}/${channel.id}`, {}) | ||||
| 	} catch (e) { | ||||
| 		if (String(e).includes("not in room")) { | ||||
| 			botInRoom = false | ||||
| 		} else { | ||||
| 			throw e | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (botInRoom && "topic" in channel) { | ||||
| 		// previously the Matrix topic would say the channel ID. we should remove that
 | ||||
| 		await api.sendState(roomID, "m.room.topic", "", {topic: channel.topic || ""}) | ||||
| 	} | ||||
|  | @ -430,6 +443,8 @@ async function unbridgeDeletedChannel(channel, guildID) { | |||
| 	db.prepare("DELETE FROM member_cache WHERE room_id = ?").run(roomID) | ||||
| 	db.prepare("DELETE FROM channel_room WHERE room_id = ? AND channel_id = ?").run(roomID, channel.id) // cascades to most other tables, like messages
 | ||||
| 
 | ||||
| 	if (!botInRoom) return | ||||
| 
 | ||||
| 	// demote admins in room
 | ||||
| 	/** @type {Ty.Event.M_Power_Levels} */ | ||||
| 	const powerLevelContent = await api.getStateEvent(roomID, "m.room.power_levels", "") | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue