From 49d0ae0d6097281a7d3b6deee3e4fea530d5c895 Mon Sep 17 00:00:00 2001 From: bertybuttface <110790513+bertybuttface@users.noreply.github.com> Date: Sat, 7 Jan 2023 00:30:09 +0000 Subject: [PATCH] Hotfix last PR We still need that util function for now, can remove later. Also we don't need MATRIX_BOT_USERNAME any more if we have MATRIX_ACCESS_TOKEN set. --- src/env.ts | 6 +++--- src/handlers.ts | 6 +++--- src/index.ts | 2 +- src/utils.ts | 4 ++++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/env.ts b/src/env.ts index b634009..7e24af7 100644 --- a/src/env.ts +++ b/src/env.ts @@ -29,9 +29,9 @@ export const { DATA_PATH: {schema: z.string().default("./storage"), description: "Set to /storage/ if using docker, ./storage if running without"}, /** Matrix Bot Settings */ MATRIX_HOMESERVER_URL: {schema: z.string().default("https://matrix.org")}, - MATRIX_ACCESS_TOKEN: {schema: z.string().optional(), description: "Set MATRIX_BOT_USERNAME & MATRIX_BOT_PASSWORD to print ACCESS_TOKEN or follow https://webapps.stackexchange.com/questions/131056/how-to-get-an-access-token-for-element-riot-matrix"}, - MATRIX_BOT_USERNAME: {schema: z.string().min(3), description: "Set full username: eg @bot:server.com"}, - MATRIX_BOT_PASSWORD: {schema: z.string().optional(), description: "Set AccessToken which supersedes MATRIX_BOT_PASSWORD"}, + MATRIX_ACCESS_TOKEN: {schema: z.string().optional(), description: "Set MATRIX_BOT_USERNAME & MATRIX_BOT_PASSWORD to print MATRIX_ACCESS_TOKEN or follow https://webapps.stackexchange.com/questions/131056/how-to-get-an-access-token-for-element-riot-matrix"}, + MATRIX_BOT_USERNAME: {schema: z.string().optional(), description: "Set full username: eg @bot:server.com (superseded by MATRIX_ACCESS_TOKEN if set)"}, + MATRIX_BOT_PASSWORD: {schema: z.string().optional(), description: "Set password (superseded by MATRIX_ACCESS_TOKEN if set)"}, /** Matrix Bot Features */ MATRIX_AUTOJOIN: {schema: z.boolean().default(true)}, MATRIX_ENCRYPTION: {schema: z.boolean().default(true)}, diff --git a/src/handlers.ts b/src/handlers.ts index 40cbe97..358004c 100644 --- a/src/handlers.ts +++ b/src/handlers.ts @@ -1,6 +1,6 @@ import { ChatGPTAPIBrowser, ChatResponse } from "chatgpt"; import { LogService, MatrixClient, UserID } from "matrix-bot-sdk"; -import { CHATGPT_TIMEOUT, MATRIX_BOT_USERNAME, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX} from "./env.js"; +import { CHATGPT_TIMEOUT, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX} from "./env.js"; import { RelatesTo, StoredConversation, StoredConversationConfig } from "./interfaces.js"; import { sendError, sendThreadReply } from "./utils.js"; @@ -31,12 +31,12 @@ export default class CommandHandler { } /** - * Run when *any* room message is received. The bot only sends a message if needed. + * Run when `message` room event is received. The bot only sends a message if needed. * @returns Room event handler, which itself returnings nothing */ private async onMessage(roomId: string, event: any) { try { - if (event.sender === MATRIX_BOT_USERNAME) return; // Ignore ourself + if (event.sender === this.userId) return; // Ignore ourselves if (Date.now() - event.origin_server_ts > 10000) return; // Ignore old messages const relatesTo: RelatesTo | undefined = event.content["m.relates_to"]; if ((relatesTo !== undefined) && (relatesTo["rel_type"] === "m.replace")) return; // Ignore edits diff --git a/src/index.ts b/src/index.ts index 4f46a10..a70c505 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,8 +31,8 @@ if (MATRIX_ENCRYPTION) { } async function main() { - const botUsernameWithoutDomain = parseMatrixUsernamePretty(MATRIX_BOT_USERNAME); if (!MATRIX_ACCESS_TOKEN){ + const botUsernameWithoutDomain = parseMatrixUsernamePretty(MATRIX_BOT_USERNAME); const authedClient = await (new MatrixAuth(MATRIX_HOMESERVER_URL)).passwordLogin(botUsernameWithoutDomain, MATRIX_BOT_PASSWORD); console.log(authedClient.homeserverUrl + " token: \n" + authedClient.accessToken) console.log("Set MATRIX_ACCESS_TOKEN to above token, MATRIX_BOT_PASSWORD can now be blank") diff --git a/src/utils.ts b/src/utils.ts index bdc7be1..046c06b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -9,6 +9,10 @@ export function parseMatrixUsernamePretty(matrix_username: string): string { return withoutUrl.split('@')[1] } +export function isEventAMessage(event: any): event is MessageEvent { + return event.type === 'm.room.message' +} + export async function sendError(client: MatrixClient, text: string, roomId: string, eventId: string): Promise { Promise.all([client.setTyping(roomId, false, 500), client.sendText(roomId, text), client.sendReadReceipt(roomId, eventId)]); }