@@ -11,6 +11,7 @@ import { SocialAbstract } from '@gitroom/nestjs-libraries/integrations/social.ab
1111import mime from 'mime' ;
1212import TelegramBot from 'node-telegram-bot-api' ;
1313import { Integration } from '@prisma/client' ;
14+ import striptags from 'striptags' ;
1415
1516const telegramBot = new TelegramBot ( process . env . TELEGRAM_TOKEN ! ) ;
1617// Added to support local storage posting
@@ -23,7 +24,7 @@ export class TelegramProvider extends SocialAbstract implements SocialProvider {
2324 isBetweenSteps = false ;
2425 isWeb3 = true ;
2526 scopes = [ ] as string [ ] ;
26- editor = 'markdown ' as const ;
27+ editor = 'html ' as const ;
2728
2829 async refreshToken ( refresh_token : string ) : Promise < AuthTokenDetails > {
2930 return {
@@ -145,7 +146,14 @@ export class TelegramProvider extends SocialAbstract implements SocialProvider {
145146 for ( const message of postDetails ) {
146147 let messageId : number | null = null ;
147148 const mediaFiles = message . media || [ ] ;
148- const text = message . message || '' ;
149+ const text = striptags ( message . message || '' , [
150+ 'u' ,
151+ 'strong' ,
152+ 'p' ,
153+ ] )
154+ . replace ( / < s t r o n g > / g, '<b>' )
155+ . replace ( / < \/ s t r o n g > / g, '</b>' )
156+ . replace ( / < p > ( .* ?) < \/ p > / g, '$1\n' )
149157 // check if media is local to modify url
150158 const processedMedia = mediaFiles . map ( ( media ) => {
151159 let mediaUrl = media . path ;
@@ -176,7 +184,9 @@ export class TelegramProvider extends SocialAbstract implements SocialProvider {
176184 } ) ;
177185 // if there's no media, bot sends a text message only
178186 if ( processedMedia . length === 0 ) {
179- const response = await telegramBot . sendMessage ( accessToken , text ) ;
187+ const response = await telegramBot . sendMessage ( accessToken , text , {
188+ parse_mode : 'HTML' ,
189+ } ) ;
180190 messageId = response . message_id ;
181191 }
182192 // if there's only one media, bot sends the media with the text message as caption
@@ -187,20 +197,20 @@ export class TelegramProvider extends SocialAbstract implements SocialProvider {
187197 ? await telegramBot . sendVideo (
188198 accessToken ,
189199 media . media ,
190- { caption : text , parse_mode : 'Markdown ' } ,
200+ { caption : text , parse_mode : 'HTML ' } ,
191201 media . fileOptions
192202 )
193203 : media . type === 'photo'
194204 ? await telegramBot . sendPhoto (
195205 accessToken ,
196206 media . media ,
197- { caption : text , parse_mode : 'Markdown ' } ,
207+ { caption : text , parse_mode : 'HTML ' } ,
198208 media . fileOptions
199209 )
200210 : await telegramBot . sendDocument (
201211 accessToken ,
202212 media . media ,
203- { caption : text , parse_mode : 'Markdown ' } ,
213+ { caption : text , parse_mode : 'HTML ' } ,
204214 media . fileOptions
205215 ) ;
206216 messageId = response . message_id ;
@@ -213,7 +223,7 @@ export class TelegramProvider extends SocialAbstract implements SocialProvider {
213223 type : m . type === 'document' ? 'document' : m . type , // Documents are not allowed in media groups
214224 media : m . media ,
215225 caption : i === 0 && index === 0 ? text : undefined ,
216- parse_mode : 'Markdown'
226+ parse_mode : 'HTML' ,
217227 } ) ) ;
218228
219229 const response = await telegramBot . sendMediaGroup (
0 commit comments