Resolve matrix room aliases to ids
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();
Please register or sign in to comment