import { MatrixAuth, MatrixClient, SimpleFsStorageProvider, AutojoinRoomsMixin, } from "matrix-bot-sdk"; const homeserverUrl = "https://chat.ryanpandya.com"; const auth = new MatrixAuth(homeserverUrl); const loginClient = await auth.passwordLogin("blogbot", "pleasework"); const blogbotToken = loginClient.accessToken; console.log(blogbotToken); const storage = new SimpleFsStorageProvider("blog-bot.json"); const client = new MatrixClient(homeserverUrl, blogbotToken, storage); AutojoinRoomsMixin.setupOnClient(client); // Before we start the bot, register our command handler client.on("room.message", handleCommand); // Now that everything is set up, start the bot. This will start the sync loop and run until killed. client.start().then(() => console.log("Bot started!")); // This is the command handler we registered a few lines up async function handleCommand(roomId: string, event: any) { console.log(roomId); console.log(event); // Don't handle unhelpful events (ones that aren't text messages, are redacted, or sent by us) if (event['content']?.['msgtype'] !== 'm.text') return; if (event['sender'] === await client.getUserId()) return; // Check to ensure that the `!hello` command is being run const body = event['content']['body']; if (!body?.startsWith("!hello")) return; // Now that we've passed all the checks, we can actually act upon the command await client.replyNotice(roomId, event, "Hello world!"); }