Коротко — через parse_mode: отправляйте сообщение с HTML или Markdown-разметкой и вставляйте ссылку как тег <a> или как [текст](URL). Примеры.
1) Пример через HTTP API (любой язык, через POST):
URL:
https://api.telegram.org/bot<ВАШ_TOKEN>/sendMessage
POST-данные:
- chat_id = <ID_чата>
- text = <a href="https://example.com">Нажмите сюда</a>
- parse_mode = HTML
Пример на Python (requests):
```
import requests
TOKEN = "ВАШ_TOKEN"
chat_id = "ID_чата"
text = '<a href="https://example.com">Нажмите сюда</a>'
requests.post(f'https://api.telegram.org/bot{TOKEN}/sendMessage',
data={'chat_id': chat_id, 'text': text, 'parse_mode': 'HTML'})
```
2) То же через MarkdownV2:
text = '[Нажмите сюда](https://example.com)'
parse_mode = 'MarkdownV2'
(в MarkdownV2 нужно экранировать спецсимволы, если они есть в тексте)
3) Кнопка с URL (если хотите кнопку, а не «голубой» текст в потоке):
reply_markup = {
"inline_keyboard": [[{"text": "Перейти на сайт", "url": "https://example.com"}]]
}
и отправка sendMessage с этим reply_markup (JSON).
Дополнения и замечания:
- Для HTML используйте <a href="...">текст</a>. URL должен быть http/https.
- Если не хотите, чтобы Telegram показывал превью сайта, добавьте disable_web_page_preview=true.
- Некоторые клиенты/вёрстки могут визуально отличаться, но обычно <a> делает слово «синим» и кликабельным.
- В популярных библиотеках (python-telegram-bot, aiogram, telegraf и т.д.) есть параметр parse_mode и примеры аналогичны приведённым.
Если скажете, на какой библиотеке/языке вы пишете — пришлю конкретный пример.