@@ -3,7 +3,6 @@ import { createFinalizableDraftLifecycle } from "../channels/draft-stream-contro
33import { buildTelegramThreadParams , type TelegramThreadSpec } from "./bot/helpers.js" ;
44
55const TELEGRAM_STREAM_MAX_CHARS = 4096 ;
6- const RTL_MARK = "\u200F" ; // Unicode Right-to-Left Mark
76const DEFAULT_THROTTLE_MS = 1000 ;
87const TELEGRAM_DRAFT_ID_MAX = 2_147_483_647 ;
98const THREAD_NOT_FOUND_RE = / 4 0 0 : \s * B a d R e q u e s t : \s * m e s s a g e t h r e a d n o t f o u n d / 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