For the complete documentation index, see llms.txt. This page is also available as Markdown.

Guide to designing a broadcast message in the bot

In graspil, when creating a broadcast, you see a regular text field. But that doesn't mean your messages can't look great! You can make text bold, italic, insert links, strike through text, and more.

To do this, you need to choose a formatting mode (the parse_mode field) and use special characters.

There are two main modes in total:

  1. HTML (Recommended for beginners โ€” simpler and more reliable)

  2. MarkdownV2 (Faster to write, but requires more attention to punctuation marks)

Sending a broadcast in multiple languages

If your broadcast's recipients have different Telegram languages, you don't need a separate broadcast per language. There's a language switcher above the text field (or the photo/video caption field):

  1. Click "+" next to the "Default" tab and pick a language โ€” the list is built automatically from the languages your bot's users actually have.

  2. On that language's tab, write your own text โ€” it's a separate variant, not a copy of the default one.

  3. You can add as many languages as you like. The rest of the settings (buttons, media, file) stay shared across all languages โ€” only the text/caption switches.

When the broadcast sends, each recipient gets the variant matching their Telegram language; if there's no variant for their language, they get the "Default" text. If you don't use the language switcher at all, the broadcast behaves exactly as before and everyone gets the same text.

Method 1: HTML (The simplest)

If you select HTML in the parse_mode field, your text works like a building kit. You "wrap" the words you need with special tags.

The main rule: If you open a tag (for example, <b>), you must close it (</b>).

HTML cheat sheet

What you want to do
How to write it in the field
How the client sees it

Bold text

<b>Important text</b>

Important text

Italic

<i>Slanted text</i>

Slanted text

~~Strikethrough~~

<s>Old price</s>

Old price

Link on a word

<a href="https://graspil.com">Click here</a>

Spoiler (hidden text)

<tg-spoiler>Secret</tg-spoiler>

(Hidden noise)

Example ready-made message to paste in:

Full list of supported HTML tags

What you want to do
How to write it in the field

Underline

<u>Underlined</u>

Spoiler

<span class="tg-spoiler">spoiler</span> or

<tg-spoiler>spoiler</tg-spoiler>

Custom emoji

<tg-emoji emoji-id="5368324170671202286">๐Ÿ‘</tg-emoji>

Code

<code>Code</code>

Preformatted text

<pre>Formatting</pre>

Quote

<blockquote>Quote</blockquote>

Collapsible quote

<blockquote expandable>Collapsible quote</blockquote>

The diagram below shows how each tag is displayed

Emoji and custom emoji

You can simply copy and paste regular emoji directly into the text, but if you want to use custom emoji, you need to use this tag:

Use the @AdsMarkdownBot bot to get the emoji ID. Just launch the bot and send it your emoji, and in response you'll get a code containing the ID

Testing

Be sure to test your message before sending it. Use the "send to myself" feature. If there's an error in the message, Telegram will report it โ€” just read the error, translate it, consult an AI, or contact support โ€” we'll always help you sort out the problem.

Method 2: MarkdownV2 (For those who love symbols)

If you select MarkdownV2, formatting is done using special characters (asterisks, underscores, and tildes). It's faster, but there's a very important caveat (more on that below).

MarkdownV2 cheat sheet

What you want to do
How to write it in the field
How the client sees it

Bold text

*Bold text*

Bold text

Italic

_Slanted text_

Slanted text

~~Strikethrough~~

~Old price~

Old price

Link on a word

[Click here](https://ัะฐะนั‚.ั€ัƒ)

โ›” IMPORTANT: The exclamation mark problem (Bad Request error)

In MarkdownV2 mode, many punctuation marks are treated as "reserved". Telegram thinks they're part of the markup. If you simply write:

โŒ Hi! or Discount up to 50%.

The message WON'T send, and you'll get an error:

Bad Request: can't parse entities: Character '!' is reserved...

What do you do? You need to put a "shield" in front of punctuation marks. This shield is the backslash: \ . This is called "escaping".

โœ… Write it like this: Hi\! Discount up to 50%\. We've opened\.

List of characters that MUST be preceded by \:

  1. Period .

  2. Exclamation mark !

  3. Minus (hyphen) -

  4. Brackets ( ) [ ] { }

  5. Plus +

  6. Equals =

  7. Hash #

  8. Pipe |

Example of a correctly written MarkdownV2 message:

(Note: there's a backslash before the exclamation marks, periods, and minus sign).

Full list of MarkdownV2 commands

Name
How to write it (Syntax)

Bold

*Bold text*

Italic

_Italic_

~~Strikethrough~~

~Strikethrough~

<u>Underline</u>

__Underline__

Spoiler (Hidden)

`

Link

[Link text](http://ัะฐะนั‚.ั€ัƒ)

Code (inline)

`Code`

Code block (multiline)

text

Quote

>Quote text

Collapsible quote

`>Quote text

Custom emoji

![๐Ÿ‘](tg://emoji?id=123456)

Emoji and custom emoji

You can simply copy and paste regular emoji directly into the text, but if you want to use custom emoji, you need to use this tag:

Use the @AdsMarkdownBot bot to get the emoji ID. Just launch the bot and send it your emoji, and in response you'll get a code containing the ID

Testing

Be sure to test your message before sending it. Use the "send to myself" feature. If there's an error in the message, Telegram will report it โ€” just read the error, translate it, consult an AI, or contact support โ€” we'll always help you sort out the problem.

Last updated