Получите токен у BotFather, найдите chat_id и отправьте сообщение в Telegram за пару строк кода: одна команда curl или пять строк requests в Python. Это самый простой способ начать работу с Bot API.
400 000+ органических переходов за 3 месяца. Со-основатель GoBanana (231K пользователей, 12+ млн ₽ без рекламы) и NeuroScribe (65K пользователей). SEO/GEO-стратегии для AI-поисковиков, 1 700+ единиц контента, 17+ реализованных стратегий.
Об авторе →Claude Code: новый CLI-агент от Anthropic
Anthropic выпустила Claude Code — терминальный AI-агент для разработчиков. Инструмент работает прямо в командной строке и умеет писать, редактировать и запускать код.
Zcode AI: Полный гид по визуальному интерфейсу для Claude Code и AI-агентов
Узнайте, как использовать Zcode для управления Claude Code, Gemini и Codex в едином GUI. Настройка провайдеров, MCP-серверов и визуальный вайбкодинг.
YouTube-канал с монетизацией из любой точки мира: Пошаговый гайд 2026
Инструкция по созданию YouTube-канала: обход блокировок SMS, настройка расширенных функций через виртуальные номера и правила безопасности для монетизации.
Windsurf Code Maps: Как глубоко понимать архитектуру проекта перед написанием кода
Полный гайд по Windsurf Code Maps, модели Sway 1.5 и Sway Grep. Узнайте, как визуализировать архитектуру кода и ускорить разработку в 13 раз.
Vk Fast Cash Strategy
Аудитория ВКонтакте — это те же люди, что и в Instagram, но 'социальный контракт' площадки другой. Если Instagram — это 'дорогой ресторан' с демонстрацией успеха, то VK — это 'душевная шашлычная'. Здесь не работает глянцевый 'успешный успех
Telegram Bot API работает через обычный HTTPS. Любой запрос : URL с токеном, методом и параметрами. Никаких SDK и фреймворков для первых шагов не нужно: curl в терминале или requests в Python справляются с sendMessage, getMe и getUpdates за несколько строк кода.
В этой статье разберём структуру URL, как получить токен и chat_id, как проверить бота через getMe, и как отправить первое сообщение: сначала через curl, потом через Python.
Обновлено: июнь 2026
TL;DR. Telegram Bot API: REST API по адресу https://api.telegram.org/bot<TOKEN>/METHOD. Три шага для старта: создать бота через @BotFather, получить токен, найти chat_id через getUpdates. Отправка сообщения через curl: одна строка. Через Python requests: пять строк. Никаких библиотек и фреймворков.Telegram Bot API: HTTP-интерфейс для управления ботом: отправка сообщений, получение апдейтов, работа с файлами и кнопками. Базовый URL: https://api.telegram.org/bot<TOKEN>/METHOD.
Вся архитектура простая. У каждого запроса три части:
https://api.telegram.org/bot123456789:ABCdef... (токен, который выдаёт BotFather)/sendMessage, /getMe, /getUpdates и так далееПараметры передаются прямо в URL (GET) или в теле запроса (POST). Telegram принимает оба способа. Официальная документация API живёт по адресу core.telegram.org/bots/api: там список всех методов, параметров и типов ответов.

Пример запроса getMe в браузере:
https://api.telegram.org/bot123456789:ABCdef.../getMeВставь этот URL в адресную строку браузера, подставив свой токен. Сразу увидишь JSON-ответ. Это самый быстрый способ проверить, что бот живой.
Токен получают через @BotFather, встроенный бот Telegram для управления ботами. Команда /newbot, имя, username с окончанием bot: и BotFather выдаёт токен.
Без токена нет смысла двигаться дальше. Токен: ключ доступа к API. Любой, у кого он есть, полностью контролирует бота, поэтому его нельзя публиковать в коде, в README или в скриншотах.
Пошагово:
@BotFather/start/newbotMy Test Bot)bot (например, mytestbot123_bot)Токен выглядит так: 7456321894:AAFHjk8-реальная_длинная_строка. Это не паттерн для копирования: у каждого бота свой токен.
Дальше в примерах я буду использовать <TOKEN> как заглушку, подставляй свой.
getMe возвращает информацию о боте: id, username, имя, is_bot. Если в ответе ok: true: токен рабочий и бот зарегистрирован.
Это первый запрос, который стоит выполнить после получения токена. Он не требует никаких дополнительных параметров.
Через curl:
curl -s "https://api.telegram.org/bot<TOKEN>/getMe"Через Python:
import requests
TOKEN = "7456321894:AAFHjk8..."
response = requests.get(f"https://api.telegram.org/bot{TOKEN}/getMe")
print(response.json())Ответ JSON:
{
"ok": true,
"result": {
"id": 7456321894,
"is_bot": true,
"first_name": "My Test Bot",
"username": "mytestbot123_bot"
}
}Если ok: false, проверь токен. Скорее всего скопирован с пробелами или не полностью.
getUpdates возвращает последние сообщения, которые бот получил. Из ответа берём message.chat.id. этот числовой ID нужен для отправки сообщений конкретному пользователю.
Здесь есть один нюанс, который путает новичков. Чтобы getUpdates вернул данные, нужно сначала написать боту сообщение в Telegram. Пустой result: []: просто значит, что бот ещё ничего не получал.
Порядок действий:
/start или просто текстЧерез curl:
curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates"Через Python:
import requests
TOKEN = "7456321894:AAFHjk8..."
response = requests.get(f"https://api.telegram.org/bot{TOKEN}/getUpdates")
data = response.json()
print(data)Как найти chat_id в ответе:
{
"ok": true,
"result": [
{
"update_id": 123456789,
"message": {
"chat": {
"id": 987654321,
"type": "private"
},
"text": "привет"
}
}
]
}message.chat.id и есть chat_id. В этом примере 987654321. Скопируй его: он нужен для отправки сообщений.
| Тип чата | Формат chat_id | Пример |
|---|---|---|
| Личный чат с пользователем | Положительное число | 987654321 |
| Публичная группа | @username группы | @mytestgroup |
| Приватная группа / канал | Отрицательное число с -100 | -1001234567890 |
sendMessage: основной метод Telegram API. Обязательные параметры: chat_id и text. Работает через GET и POST. Ответ содержит объект Message с id отправленного сообщения.
Вот тут начинается самое интересное. После получения токена и chat_id можно отправить первое реальное сообщение.
GET-запрос (параметры в URL):
curl -s "https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Привет%20из%20curl"POST-запрос (параметры в теле):
curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
-d "chat_id=<CHAT_ID>" \
-d "text=Привет из curl"POST удобнее для русского текста и длинных сообщений: не нужно заботиться об URL-кодировании.
import requests
TOKEN = "7456321894:AAFHjk8..."
CHAT_ID = "987654321"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
params = {
"chat_id": CHAT_ID,
"text": "Привет из Python!"
}
response = requests.get(url, params=params)
print(response.json())Или через POST:
import requests
TOKEN = "7456321894:AAFHjk8..."
CHAT_ID = "987654321"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
data = {
"chat_id": CHAT_ID,
"text": "Привет из Python через POST!"
}
response = requests.post(url, data=data)
print(response.json())Успешный ответ:
{
"ok": true,
"result": {
"message_id": 42,
"chat": { "id": 987654321, "type": "private" },
"text": "Привет из Python!",
"date": 1750000000
}
}sendMessage поддерживает форматирование текста, переносы строк, отключение уведомлений и разбивку длинных сообщений. Все необязательные параметры передаются рядом с chat_id и text.
Базовых двух параметров хватает для большинства задач. Но когда нужно больше: вот что ещё принимает sendMessage:

| Параметр | Тип | Что делает |
|---|---|---|
| chat_id | String / Integer | Куда отправить. Обязательный |
| text | String | Текст сообщения. Обязательный |
| parse_mode | String | HTML или MarkdownV2: форматирование |
| disable_notification | Boolean | true: сообщение без звука |
| reply_to_message_id | Integer | Ответить на конкретное сообщение |
| protect_content | Boolean | Запретить пересылку |
Пример с HTML-форматированием:
import requests
TOKEN = "7456321894:AAFHjk8..."
CHAT_ID = "987654321"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
data = {
"chat_id": CHAT_ID,
"text": "<b>Важно:</b> скрипт завершился за <i>3.2 секунды</i>",
"parse_mode": "HTML"
}
response = requests.post(url, data=data)Перенос строки в URL-запросе: используй %0A для одного переноса, %0A%0A для абзаца. В Python params это делается автоматически.
Максим: «Мы используем sendMessage для уведомлений в NanaBanana: когда скрипт обработки заказов завершается или падает с ошибкой, бот сразу пишет в личку. Это 5 строк на Python: токен, chat_id, текст: и всё. Никаких библиотек, никакого overhead. Ребят, это работает.»
Для публичной группы chat_id: это @username группы. Для приватной: числовой ID, начинающийся с -100. Бот должен быть добавлен в группу как участник и иметь права на отправку.
Здесь лайфхак из транскрипций видео: chat_id публичной группы: это просто её публичный username. Если ссылка на группу t.me/mytestgroup1, то chat_id будет @mytestgroup1.
Порядок настройки для группы:

message.chat.idЗапрос:
curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
-d "chat_id=@mytestgroup" \
-d "text=Сообщение в группу"Числовой ID группы начинается с -100: это нормально, не ошибка.
Кроме sendMessage, API поддерживает отправку файлов, фото, геолокации, инлайн-кнопок и удаление сообщений. Каждая операция: отдельный метод с таким же базовым URL.
Три метода, которые чаще всего нужны вместе с sendMessage:
getUpdates с offset: для опроса новых сообщений в цикле:
import requests
import time
TOKEN = "7456321894:AAFHjk8..."
offset = 0
while True:
url = f"https://api.telegram.org/bot{TOKEN}/getUpdates"
response = requests.get(url, params={"offset": offset, "timeout": 30})
updates = response.json().get("result", [])
for update in updates:
print(update)
offset = update["update_id"] + 1
time.sleep(1)sendMessage с отправкой каждые N секунд: для автоматических уведомлений:
import requests
import time
TOKEN = "7456321894:AAFHjk8..."
CHAT_ID = "987654321"
while True:
requests.post(
f"https://api.telegram.org/bot{TOKEN}/sendMessage",
data={"chat_id": CHAT_ID, "text": f"Статус: OK | {time.strftime('%H:%M:%S')}"}
)
time.sleep(60) # Раз в минутуdeleteMessage: удалить отправленное сообщение (нужен message_id из ответа sendMessage):
import requests
TOKEN = "7456321894:AAFHjk8..."
CHAT_ID = "987654321"
MESSAGE_ID = 42 # из ответа sendMessage
requests.post(
f"https://api.telegram.org/bot{TOKEN}/deleteMessage",
data={"chat_id": CHAT_ID, "message_id": MESSAGE_ID}
)
| Метод | Что делает | Обязательные параметры |
|---|---|---|
| getMe | Информация о боте | : |
| getUpdates | Входящие сообщения | : |
| sendMessage | Текстовое сообщение | chat_id, text |
| sendPhoto | Фото с подписью | chat_id, photo |
| sendDocument | Файл | chat_id, document |
| deleteMessage | Удалить сообщение | chat_id, message_id |
| editMessageText | Редактировать текст | chat_id, message_id, text |
Токен нельзя хардкодить в коде. Правильный подход: переменные окружения через .env файл и python-dotenv. Так токен не попадёт в git-репозиторий.
Это критически важно. Любой, у кого есть токен, полностью контролирует бота: может слать сообщения от его имени, читать переписку, удалять данные.

Простой способ через .env:
Создай файл .env рядом со скриптом:
TELEGRAM_TOKEN=7456321894:AAFHjk8...
TELEGRAM_CHAT_ID=987654321Добавь .env в .gitignore:
.envИспользуй в Python:
import os
import requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("TELEGRAM_TOKEN")
CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
response = requests.post(
f"https://api.telegram.org/bot{TOKEN}/sendMessage",
data={"chat_id": CHAT_ID, "text": "Безопасный запрос"}
)Установить python-dotenv: pip install python-dotenv.
На сервере переменные задаются через системные env, а не через файл: export TELEGRAM_TOKEN=... или через панель деплоя.
Прямые HTTP-запросы без библиотек подходят для серверных уведомлений, мониторинга, автопостинга и простых скриптов. Для сложных диалоговых ботов удобнее python-telegram-bot или aiogram.
Реальные сценарии, где хватает curl и requests:
Уведомления о событиях на сервере. Скрипт отработал, база бэкапнулась, ошибка в логах: одна функция с requests.post() шлёт сообщение в личку или в рабочий чат. Из транскрипций видео: это буквально 2-5 строк кода.
Автопостинг в канал. Интеграция с News API, парсер новостей, ежедневный дайджест: цикл while True с time.sleep(interval) и sendMessage. Для простых задач этого достаточно.
Мониторинг скриптов. Запустил тяжёлый скрипт: хочешь знать, когда он закончится. Добавь две строки в конец скрипта: запрос к sendMessage с результатом. Не нужно держать терминал открытым.
Быстрое тестирование API. Curl прямо из браузера или из командной строки: проверить метод, структуру ответа, работу параметров. Быстрее, чем поднимать Postman.
Если задача сложнее: диалоги, состояния, webhook, инлайн-кнопки с callbacks: тогда уже смотри в сторону библиотек. Например, aiogram или python-telegram-bot берут рутину на себя.
Большинство проблем с Telegram Bot API: неверный токен, пустой getUpdates или неправильный chat_id. Каждая из них диагностируется за 30 секунд.

Ошибка: {"ok":false,"error_code":401,"description":"Unauthorized"} Причина: неверный токен. Скопируй его заново из BotFather, убедись, что нет пробелов в начале и конце строки.
Ошибка: result: [] в getUpdates Причина: бот не получал сообщений. Напиши боту что-нибудь в Telegram, потом повтори запрос.
Ошибка: {"ok":false,"error_code":400,"description":"Bad Request: chat not found"} Причина: неверный chat_id. Проверь, что скопировал числовой ID, а не username. Для групп с username: добавь @ перед названием.
Ошибка: бот не может писать в группу Причина: не добавлен как участник или нет прав администратора. Зайди в настройки группы, добавь бота и выдай права на отправку сообщений.
Ошибка: кириллица приходит кракозябрами в URL Причина: текст в GET-запросе нужно URL-кодировать. Используй POST вместо GET: тогда кодировка обрабатывается автоматически.
Как отправить сообщение через Telegram API в одну строку на curl? curl -s "https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Текст": подставь свой токен и chat_id. Для кириллицы лучше использовать POST.
Что делать, если у меня несколько ботов? У каждого бота свой токен. В коде просто используй разные переменные: например, TOKEN_BOT1 и TOKEN_BOT2. Запросы к каждому боту независимы.
Как узнать chat_id группы, если она приватная? Добавь бота в группу, напиши там что-нибудь, запроси getUpdates. В ответе будет message.chat.id с отрицательным числом: это chat_id группы.
Можно ли использовать Telegram Bot API бесплатно? Да, полностью бесплатно без ограничений на количество ботов. Есть лимиты на частоту сообщений: не более 30 сообщений в секунду в целом и не более 1 сообщения в секунду в один чат.
Нужны ли права администратора бота в группе для sendMessage? Зависит от настроек группы. В обычной группе боту достаточно быть участником. В супергруппе с ограничениями: нужны права на отправку сообщений. Проверь настройки группы, если бот молчит.
Как отправить в Telegram файл или картинку через Python? Используй метод sendPhoto или sendDocument. Файл передаётся через files в requests: requests.post(url, data={"chat_id": id}, files={"photo": open("img.jpg", "rb")}).
Где хранится документация Telegram Bot API? На официальном сайте: core.telegram.org/bots/api. Там все методы, параметры, типы ответов с примерами.
Telegram Bot API: HTTP-интерфейс для управления ботами в Telegram. Адрес: https://api.telegram.org/bot<TOKEN>/METHOD.
BotFather: официальный бот Telegram (@BotFather) для создания и настройки ботов. Выдаёт токены.
Token (токен): строковый ключ доступа к боту. Формат: 123456789:ABCdef.... Не передавать третьим лицам.
chat_id: числовой или строковый идентификатор чата. Для личных чатов: положительное число, для групп: отрицательное с -100, для публичных групп: @username.
getMe: метод API для проверки токена. Возвращает базовую информацию о боте.
getUpdates: метод для получения входящих сообщений (апдейтов). Используется для polling: периодического опроса сервера Telegram.
sendMessage: основной метод отправки текстовых сообщений. Обязательные параметры: chat_id и text.
offset: параметр getUpdates. Указывает, с какого update_id начинать выборку. Используется для обработки сообщений по одному, без повторов.
parse_mode: параметр sendMessage. Указывает формат текста: HTML (теги <b>, <i>) или MarkdownV2.
Webhook: альтернатива polling. Telegram сам шлёт обновления на твой сервер при новых сообщениях. Требует HTTPS.
Если хочешь не писать запросы вручную, а сразу строить ботов с логикой и обработкой команд: смотри инструменты в каталоге AI-инструментов. Для более быстрой разработки ботов хорошо работает Cursor или Claude Code: они дописывают рутину сами, пока ты занимаешься логикой.
Есть вопросы по интеграции Telegram API в свой продукт: запишись на консультацию к Максиму.
Статья обновлена: июнь 2026. Данные по API актуальны на дату публикации.