Telegram message transformer
npm install telegram-transformer
shellscript
$ npm install telegram-transformer
`
or
`shellscript
$ yarn add telegram-transformer
`
$3
`js
import formatText, { htmlFormatters } from 'telegram-transformer';
import { MessageEntity } from 'typegram';
const text =
'Hello @username #awesome_hashtag $USD /start@jobs_bot https://telegram.org do-not-reply@telegram.org +1-212-555-0123 bold text italic text underlined text strikethrough text spoiler message monowidth string monowidth block text_link custom_emoji text_mention';
const entities: MessageEntity[] = [
{ offset: 6, length: 9, type: 'mention' },
{ offset: 16, length: 16, type: 'hashtag' },
{ offset: 25, length: 7, type: 'bold' },
{ offset: 33, length: 4, type: 'cashtag' },
{ offset: 38, length: 15, type: 'bot_command' },
{ offset: 54, length: 20, type: 'url' },
{ offset: 75, length: 25, type: 'email' },
{ offset: 101, length: 15, type: 'phone_number' },
{ offset: 117, length: 9, type: 'bold' },
{ offset: 127, length: 11, type: 'italic' },
{ offset: 139, length: 5, type: 'underline' },
{ offset: 144, length: 10, type: 'underline' },
{ offset: 144, length: 5, type: 'bold' },
{ offset: 155, length: 18, type: 'strikethrough' },
{ offset: 174, length: 15, type: 'spoiler' },
{
offset: 223,
length: 9,
type: 'text_link',
url: 'https://telegram.org/',
},
{
offset: 233,
length: 12,
type: 'custom_emoji',
custom_emoji_id: '12345',
},
{
offset: 246,
length: 12,
type: 'text_mention',
user: {
id: 9876543210,
is_bot: false,
first_name: 'First Name',
},
},
];
const formatted = formatText(text, entities, { formatters: htmlFormatters });
console.log(formatted);
/*
{
text: "Hello @username #awesome_hashtag $USD /start@jobs_bot https://telegram.org do-not-reply@telegram.org +1-212-555-0123 bold text italic text underlined text strikethrough text spoiler message monowidth string monowidth block text_link custom_emoji | EMOJI ID:12345 text_mention: First Name | ID:9876543210",
entities: [
{ offset: 6, length: 45, type: 'mention' },
{ offset: 52, length: 64, type: 'hashtag' },
{ offset: 88, length: 24, type: 'bold' },
{ offset: 117, length: 4, type: 'cashtag' },
{ offset: 122, length: 15, type: 'bot_command' },
{ offset: 138, length: 55, type: 'url' },
{ offset: 194, length: 72, type: 'email' },
{ offset: 267, length: 49, type: 'phone_number' },
{ offset: 317, length: 26, type: 'bold' },
{ offset: 344, length: 18, type: 'italic' },
{ offset: 363, length: 12, type: 'underline' },
{ offset: 375, length: 34, type: 'underline' },
{ offset: 378, length: 22, type: 'bold' },
{ offset: 410, length: 35, type: 'strikethrough' },
{ offset: 446, length: 50, type: 'spoiler' },
{
offset: 530,
length: 45,
type: 'text_link',
url: 'https://telegram.org/',
},
{
offset: 576,
length: 49,
type: 'custom_emoji',
custom_emoji_id: '12345',
},
{
offset: 626,
length: 60,
type: 'text_mention',
user: {
id: 9876543210,
is_bot: false,
first_name: 'First Name',
},
},
]
}
*/
`
$3
`js
import formatText, { htmlFormatters } from 'telegram-transformer';
import { MessageEntity } from 'typegram';
const text = 'Hello @username #awesome_hashtag';
const entities: MessageEntity[] = [
{ offset: 6, length: 9, type: 'mention' },
{ offset: 16, length: 16, type: 'hashtag' },
];
const formatters = {
mention: (entityText: string, entity: MessageEntity, text: string) => ({
before: '',
after: ' ',
text: entityText,
}),
hashtag: (entityText: string, entity: MessageEntity, text: string) => ({
before: '',
after: '',
text: entityText,
}),
};
const formatted = formatText(text, entities, { formatters });
console.log(formatted);
/*
{
text: 'Hello @username #awesome_hashtag',
entities: [
{ offset: 6, length: 44, type: 'mention' },
{ offset: 51, length: 45, type: 'hashtag' }
]
}
*/
``