From 3af7b88825b197e12fd927df2b5523853466826f Mon Sep 17 00:00:00 2001 From: Max Kammler Date: Tue, 7 Feb 2023 10:05:32 +0100 Subject: [PATCH 1/4] ignore non-text messages --- src/handlers.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/handlers.ts b/src/handlers.ts index 7ba66aa..9407654 100644 --- a/src/handlers.ts +++ b/src/handlers.ts @@ -35,6 +35,7 @@ export default class CommandHandler { if (MATRIX_WHITELIST && !MATRIX_WHITELIST.split(" ").find(w => event.sender.endsWith(w))) return true; // Ignore if not on whitelist if set if (Date.now() - event.origin_server_ts > 10000) return true; // Ignore old messages if (event.content["m.relates_to"]?.["rel_type"] === "m.replace") return true; // Ignore edits + if (event.content.msgtype !== "m.text") return true; // Ignore everything which is not text return false; } From d72b0ba7724f4389af64f06f4cd7fde66e00d180 Mon Sep 17 00:00:00 2001 From: Max Kammler Date: Tue, 7 Feb 2023 10:34:43 +0100 Subject: [PATCH 2/4] add CHATGPT_IGNORE_MEDIA --- .env.example | 2 ++ src/env.ts | 2 ++ src/handlers.ts | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index f39099c..ca91d53 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,8 @@ CHATGPT_CONTEXT=thread #CHATGPT_MODEL=text-chat-davinci-002-20221122 # (Optional) Explicitly set the prefix sent to model at the beginning of a conversation #CHATGPT_PROMPT_PREFIX=Instructions:\nYou are ChatGPT, a large language model trained by OpenAI. +# (Optional) Set to true if ChatGPT should ignore any attachments which are not text +#CHATGPT_IGNORE_MEDIA=false # Set data store settings KEYV_BACKEND=file diff --git a/src/env.ts b/src/env.ts index ae07dce..da36de8 100644 --- a/src/env.ts +++ b/src/env.ts @@ -31,6 +31,7 @@ export const { CHATGPT_TIMEOUT, CHATGPT_MODEL, CHATGPT_PROMPT_PREFIX, + CHATGPT_IGNORE_MEDIA, } = parseEnv(process.env, { DATA_PATH: { schema: z.string().default("./storage"), description: "Set to /storage/ if using docker, ./storage if running without" }, KEYV_BACKEND: { schema: z.enum(["file", "other"]).default("file"),description: "Set the Keyv backend to 'file' or 'other' if other set KEYV_URL" }, @@ -59,4 +60,5 @@ export const { CHATGPT_CONTEXT: { schema: z.enum(["thread", "room", "both"]).default("thread"), description: "Set the ChatGPT conversation context to 'thread', 'room' or 'both'" }, CHATGPT_MODEL: { schema: z.string().default("text-chat-davinci-002-20221122"), description: "The model for the ChatGPT-API to use" }, CHATGPT_PROMPT_PREFIX: { schema: z.string().default('Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.'), description: "Instructions to feed to ChatGPT on startup"}, + CHATGPT_IGNORE_MEDIA: { schema: z.boolean().default(false), description: "Wether or not the bot should react to non-text messages"}, }); diff --git a/src/handlers.ts b/src/handlers.ts index 9407654..ac2bb60 100644 --- a/src/handlers.ts +++ b/src/handlers.ts @@ -1,6 +1,6 @@ import ChatGPTClient from '@waylaidwanderer/chatgpt-api'; import { LogService, MatrixClient, UserID } from "matrix-bot-sdk"; -import { CHATGPT_CONTEXT, CHATGPT_TIMEOUT, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX, MATRIX_BLACKLIST, MATRIX_WHITELIST, MATRIX_RICH_TEXT, MATRIX_PREFIX_DM, MATRIX_THREADS } from "./env.js"; +import { CHATGPT_CONTEXT, CHATGPT_TIMEOUT, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX, MATRIX_BLACKLIST, MATRIX_WHITELIST, MATRIX_RICH_TEXT, MATRIX_PREFIX_DM, MATRIX_THREADS, CHATGPT_IGNORE_MEDIA } from "./env.js"; import { RelatesTo, MessageEvent, StoredConversation, StoredConversationConfig } from "./interfaces.js"; import { sendChatGPTMessage, sendError, sendReply } from "./utils.js"; @@ -35,7 +35,7 @@ export default class CommandHandler { if (MATRIX_WHITELIST && !MATRIX_WHITELIST.split(" ").find(w => event.sender.endsWith(w))) return true; // Ignore if not on whitelist if set if (Date.now() - event.origin_server_ts > 10000) return true; // Ignore old messages if (event.content["m.relates_to"]?.["rel_type"] === "m.replace") return true; // Ignore edits - if (event.content.msgtype !== "m.text") return true; // Ignore everything which is not text + if (CHATGPT_IGNORE_MEDIA && event.content.msgtype !== "m.text") return true; // Ignore everything which is not text return false; } From 58ec2f7f10986692e88fe4cb057d6699e9e53bef Mon Sep 17 00:00:00 2001 From: Max Kammler Date: Tue, 7 Feb 2023 10:36:08 +0100 Subject: [PATCH 3/4] fix typo --- .env.example | 2 +- src/handlers.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index ca91d53..a691438 100644 --- a/.env.example +++ b/.env.example @@ -8,7 +8,7 @@ CHATGPT_CONTEXT=thread #CHATGPT_MODEL=text-chat-davinci-002-20221122 # (Optional) Explicitly set the prefix sent to model at the beginning of a conversation #CHATGPT_PROMPT_PREFIX=Instructions:\nYou are ChatGPT, a large language model trained by OpenAI. -# (Optional) Set to true if ChatGPT should ignore any attachments which are not text +# (Optional) Set to true if ChatGPT should ignore any messages which are not text #CHATGPT_IGNORE_MEDIA=false # Set data store settings diff --git a/src/handlers.ts b/src/handlers.ts index ac2bb60..c6854f4 100644 --- a/src/handlers.ts +++ b/src/handlers.ts @@ -35,7 +35,7 @@ export default class CommandHandler { if (MATRIX_WHITELIST && !MATRIX_WHITELIST.split(" ").find(w => event.sender.endsWith(w))) return true; // Ignore if not on whitelist if set if (Date.now() - event.origin_server_ts > 10000) return true; // Ignore old messages if (event.content["m.relates_to"]?.["rel_type"] === "m.replace") return true; // Ignore edits - if (CHATGPT_IGNORE_MEDIA && event.content.msgtype !== "m.text") return true; // Ignore everything which is not text + if (CHATGPT_IGNORE_MEDIA && event.content.msgtype !== "m.text") return true; // Ignore everything which is not text if set return false; } From 904660929f577d2458b7058094356a867d017cdc Mon Sep 17 00:00:00 2001 From: Max Kammler Date: Tue, 7 Feb 2023 10:53:55 +0100 Subject: [PATCH 4/4] reorder env import --- src/handlers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/handlers.ts b/src/handlers.ts index c6854f4..6a1fa16 100644 --- a/src/handlers.ts +++ b/src/handlers.ts @@ -1,6 +1,6 @@ import ChatGPTClient from '@waylaidwanderer/chatgpt-api'; import { LogService, MatrixClient, UserID } from "matrix-bot-sdk"; -import { CHATGPT_CONTEXT, CHATGPT_TIMEOUT, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX, MATRIX_BLACKLIST, MATRIX_WHITELIST, MATRIX_RICH_TEXT, MATRIX_PREFIX_DM, MATRIX_THREADS, CHATGPT_IGNORE_MEDIA } from "./env.js"; +import { CHATGPT_CONTEXT, CHATGPT_TIMEOUT, CHATGPT_IGNORE_MEDIA, MATRIX_DEFAULT_PREFIX_REPLY, MATRIX_DEFAULT_PREFIX, MATRIX_BLACKLIST, MATRIX_WHITELIST, MATRIX_RICH_TEXT, MATRIX_PREFIX_DM, MATRIX_THREADS } from "./env.js"; import { RelatesTo, MessageEvent, StoredConversation, StoredConversationConfig } from "./interfaces.js"; import { sendChatGPTMessage, sendError, sendReply } from "./utils.js";