Skip to content

Commit f026b18

Browse files
author
kevin song
committed
fix: actually apply RTL mark to Telegram draft previews (fixes #32852)
1 parent cdcf506 commit f026b18

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/telegram/draft-stream.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { createFinalizableDraftLifecycle } from "../channels/draft-stream-contro
33
import { buildTelegramThreadParams, type TelegramThreadSpec } from "./bot/helpers.js";
44

55
const TELEGRAM_STREAM_MAX_CHARS = 4096;
6-
const RTL_MARK = "\u200F"; // Unicode Right-to-Left Mark
76
const DEFAULT_THROTTLE_MS = 1000;
87
const TELEGRAM_DRAFT_ID_MAX = 2_147_483_647;
98
const THREAD_NOT_FOUND_RE = /400:\s*Bad Request:\s*message thread not found/i;
@@ -117,6 +116,7 @@ export function createTelegramDraftStream(params: {
117116
? resolveSendMessageDraftApi(params.api)
118117
: undefined;
119118
const usesDraftTransport = Boolean(prefersDraftTransport && resolvedDraftApi);
119+
const isRTL = (text: string) => /[\u0590-\u08FF]/.test(text); // Hebrew, Arabic ranges
120120
if (prefersDraftTransport && !usesDraftTransport) {
121121
params.warn?.(
122122
"telegram stream preview: sendMessageDraft unavailable; falling back to sendMessage/editMessageText",
@@ -143,7 +143,8 @@ export function createTelegramDraftStream(params: {
143143
}: PreviewSendParams): Promise<boolean> => {
144144
if (typeof streamMessageId === "number") {
145145
if (renderedParseMode) {
146-
await params.api.editMessageText(chatId, streamMessageId, renderedText, {
146+
const textWithRTLM = isRTL(renderedText) ? "\u200F" + renderedText : renderedText;
147+
await params.api.editMessageText(chatId, streamMessageId, textWithRTLM, {
147148
parse_mode: renderedParseMode,
148149
});
149150
} else {

0 commit comments

Comments
 (0)