diff --git a/src/commands/gemini-chat.ts b/src/commands/gemini-chat.ts index d38785c..9a0b53f 100644 --- a/src/commands/gemini-chat.ts +++ b/src/commands/gemini-chat.ts @@ -9,7 +9,7 @@ import { collectReplyChainText, escapeMarkdownV2Text, logError, - oldReplyToMessage, + oldReplyToMessage, replyToMessage, startIntervalEditor } from "../util/utils"; import {ChatCommand} from "../base/chat-command"; @@ -108,7 +108,7 @@ export class GeminiChat extends ChatCommand { chat_id: chatId, message_id: waitMessage.message_id, text: escapeMarkdownV2Text(text), - parse_mode: "Markdown" + parse_mode: "MarkdownV2" } ).catch(logError); @@ -167,7 +167,10 @@ export class GeminiChat extends ChatCommand { waitMessage.reply_to_message = msg; waitMessage.text = currentText; await MessageStore.put(waitMessage); - await oldReplyToMessage(waitMessage, `⏱️ ${diff}s`); + + if (Environment.SEND_TIME_TOOK) { + await replyToMessage({message: waitMessage, text: `⏱️ ${diff}s`}); + } } } catch (error) { logError(error); diff --git a/src/commands/ollama-chat.ts b/src/commands/ollama-chat.ts index 8338b87..8f0962d 100644 --- a/src/commands/ollama-chat.ts +++ b/src/commands/ollama-chat.ts @@ -143,7 +143,7 @@ export class OllamaChat extends ChatCommand { chat_id: chatId, message_id: waitMessage.message_id, text: escapeMarkdownV2Text(text), - parse_mode: "Markdown", + parse_mode: "MarkdownV2", reply_markup: cancelMarkup }).catch(logError); @@ -220,7 +220,10 @@ export class OllamaChat extends ChatCommand { waitMessage.reply_to_message = msg; waitMessage.text = currentText; await MessageStore.put(waitMessage); - await oldReplyToMessage(waitMessage, `⏱️ ${diff}s`); + + if (Environment.SEND_TIME_TOOK) { + await replyToMessage({message: waitMessage, text: `⏱️ ${diff}s`}); + } break; } } diff --git a/src/commands/openai-chat.ts b/src/commands/openai-chat.ts index c269680..17b2ae9 100644 --- a/src/commands/openai-chat.ts +++ b/src/commands/openai-chat.ts @@ -100,7 +100,7 @@ export class OpenAIChat extends ChatCommand { chat_id: chatId, message_id: waitMessage.message_id, text: escapeMarkdownV2Text(text), - parse_mode: "Markdown" + parse_mode: "MarkdownV2" } ).catch(logError); @@ -151,7 +151,10 @@ export class OpenAIChat extends ChatCommand { waitMessage.reply_to_message = msg; waitMessage.text = currentText; await MessageStore.put(waitMessage); - await replyToMessage({message: waitMessage, text: `⏱️ ${diff}s`}); + + if (Environment.SEND_TIME_TOOK) { + await replyToMessage({message: waitMessage, text: `⏱️ ${diff}s`}); + } } } catch (error) { logError(error); diff --git a/src/common/environment.ts b/src/common/environment.ts index 3e66e63..452cb15 100644 --- a/src/common/environment.ts +++ b/src/common/environment.ts @@ -37,6 +37,7 @@ export class Environment { static IMAGE_HANDLE_FALLBACK_POLICY: ImageHandleFallbackPolicy; static SYSTEM_PROMPT?: string; + static SEND_TIME_TOOK: boolean; static OLLAMA_ADDRESS?: string; static OLLAMA_MODEL?: string; @@ -112,6 +113,8 @@ export class Environment { Environment.IMAGE_HANDLE_FALLBACK_POLICY = ImageHandleFallbackPolicy.NOTIFY_USER; } + Environment.SEND_TIME_TOOK = ifTrue(process.env.SEND_TOOK_TIME || false); + Environment.OLLAMA_ADDRESS = process.env.OLLAMA_ADDRESS; Environment.OLLAMA_MODEL = process.env.OLLAMA_MODEL || "gemma3:4b"; Environment.OLLAMA_IMAGE_MODEL = process.env.OLLAMA_IMAGE_MODEL || Environment.OLLAMA_MODEL; diff --git a/src/util/utils.ts b/src/util/utils.ts index d479ee0..b12167e 100644 --- a/src/util/utils.ts +++ b/src/util/utils.ts @@ -312,6 +312,8 @@ export async function sendMessage(options: SendOptions): Promise { reply_markup: options.reply_markup, }); + await MessageStore.put(response); + return Promise.resolve(response); } @@ -338,6 +340,8 @@ export async function replyToMessage(options: SendOptions): Promise { link_preview_options: options.link_preview_options }); + await MessageStore.put(response); + return Promise.resolve(response); } @@ -563,7 +567,14 @@ function escapeMarkdownV2PreservingAllowedFormatting(s: string): string { } function unescapeAccidentalMarkdownV2(s: string): string { - return s.replace(/\\([_*\[\]()~`>#+\-=|{}.!\\])/g, "$1"); + let prev: string; + + do { + prev = s; + s = s.replace(/\\([_*\[\]()~`>#+\-=|{}.!\\])/g, "$1"); + } while (s !== prev); + + return s; } function escapeTelegramQuoteLine(line: string): string { @@ -726,6 +737,8 @@ export function cutPrefixes(msg: Message | StoredMessage | string): string { }); const text = extractTextMessage(msg); + if (!text || !text.length) return ""; + let newText = text; for (const prefix of prefixes) {