Skip to content
Snippets Groups Projects

Resolve matrix room aliases to ids

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Niklas Schrötler
    aliasToId.js 1.10 KiB
    const fs = require("fs")
    
    async function main() {
    	const out = fs.openSync("output.txt", "w")
    	const content = fs.readFileSync('input.txt', 'utf-8');
    	const lines = content.split(/\r?\n/);
    
    	for (let line of lines) {
    		if(line.startsWith("!")) {
    			fs.writeSync(out, line + "\n");
    			continue;
    		}
    
    		if(line.trim() === "") {
    			continue;
    		}
    
    		const alias = line
    			.replace("https://matrix.to/#/", "")  // Remove links
    			.split(" ")[0]																			// Ignore comments
    			.trim();																										// Remove superfluous whitespace
    
    		console.log("Resolving: ", alias);
    
    		const id = await getIdForAlias(alias);
    		fs.writeSync(out, id + "\n");
    	}
    
    	fs.closeSync(out);
    }
    
    async function getIdForAlias(alias) {
    	const request = await fetch(`https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`);
    	if(!request.ok) {
    		console.log(request);
    		console.log("Fetching", `https://chat.upi.li/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`)
    		throw new Error("Could not get data for room", alias);
    	}
    	const data = await request.json();
    
    	return data.room_id;
    }
    
    main();
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment