Lacia Bot API
HTTP API в стиле Telegram для ботов Lacia Messenger. Создайте бота у @botfather, получите токен и вызывайте методы.
Обзор
Bot API позволяет вашему серверу получать сообщения пользователей и отвечать текстом, медиа и inline-кнопками.
📡 Доставка updates
getUpdates — long polling до 50 сек
или webhook через setWebhook
📎 Медиа до 200 МБ
sendPhoto, sendVideo,
sendAudio, sendDocument
⌨️ Inline-кнопки
reply_markup.inline_keyboard +
callback_query в updates
🔐 Токен от BotFather
Username бота обязан заканчиваться на bot
Авторизация
Токен передаётся прямо в пути URL. Других заголовков не нужно.
Формат токена: {bot_id_hex}:{secret}
Пример: 6a7bc423ac8cb45322396d66:f_fObmcI-_RudD8h…
Неверный токен → 401 Unauthorized
Базовый URL
Production
https://laciamemeframe.space/bot<TOKEN>/METHOD
https://laciamemeframe.space/api/bot/<TOKEN>/METHOD
Localhost
http://127.0.0.1:8000/bot<TOKEN>/METHOD
http://127.0.0.1:8000/api/bot/<TOKEN>/METHOD
Методы принимают GET (query) и POST (JSON или form-data).
Ответ всегда JSON: {"ok": true, "result": …} или {"ok": false, "error_code": …, "description": "…"}.
@botfather
Системный бот для создания и управления вашими ботами.
- Откройте мессенджер
- Найдите
@botfatherи нажмите «Запустить» - Отправьте
/newbot→ имя → username (оканчивается наbot) - Сохраните выданный HTTP API токен
/start /help — справка
/newbot — создать бота
/mybots — список ваших ботов
/token — показать токен
/revoke — новый токен (старый сгорает)
/setname — имя
/setdescription — описание
/setabouttext — короткое «о боте»
/deletebot — удалить
/cancel — отменить шаг
getMe
GET · POST Информация о боте
GET /bot<TOKEN>/getMe
{
"ok": true,
"result": {
"id": "6a7bc4…",
"is_bot": true,
"username": "mycoolbot",
"first_name": "My Cool Bot"
}
}
getUpdates
GET · POST Получить обновления (long poll)
| Параметр | Тип | Описание | |
|---|---|---|---|
offset | int | optional | update_id ≥ offset (после обработки ставьте last+1) |
limit | int | optional | 1–100, по умолчанию 100 |
timeout | int | optional | long poll, сек, макс. 50 |
GET /bot<TOKEN>/getUpdates?timeout=25&offset=42
В result — массив updates. После выдачи они помечаются delivered.
sendMessage
POST Отправить текст
| Параметр | Тип | Описание | |
|---|---|---|---|
chat_id | string | required | ID чата или пользователя (ObjectId hex) |
text | string | required | Текст, до 4000 символов |
reply_to_message_id | string | optional | Ответ на сообщение |
reply_markup | object | optional | Inline-клавиатура |
POST /bot<TOKEN>/sendMessage
Content-Type: application/json
{
"chat_id": "6a7bc532ac8cb45322396d77",
"text": "Привет!",
"reply_markup": {
"inline_keyboard": [[
{"text": "📹 Видео", "callback_data": "v:abc"},
{"text": "🎵 Аудио", "callback_data": "a:abc"}
]]
}
}
answerCallbackQuery
POST Ответ на нажатие inline-кнопки
| Параметр | Тип | Описание | |
|---|---|---|---|
callback_query_id | string | required | id из callback_query |
text | string | optional | Тост пользователю (до 200) |
show_alert | bool | optional | true — alert вместо тоста |
sendPhoto / sendVideo / sendAudio / sendDocument
POST multipart Отправка файла · лимит 200 МБ
Поле файла: photo | video | audio | document (или file / media).
| Параметр | Описание | |
|---|---|---|
chat_id | required | ID чата |
photo / video / … | required | Файл (multipart) |
caption | optional | Подпись |
reply_to_message_id | optional | Ответ |
curl -X POST "https://laciamemeframe.space/bot$TOKEN/sendVideo" \
-F "chat_id=6a7bc5…" \
-F "caption=🎬 Ролик" \
-F "video=@./clip.mp4"
editMessageText
POST Изменить свой текст
Параметры: chat_id, message_id, text — все обязательны.
Можно править только сообщения, отправленные этим ботом.
deleteMessage
POST Удалить своё сообщение
POST /bot<TOKEN>/deleteMessage
{"chat_id":"…","message_id":"…"}
getChat
GET · POST Информация о чате
chat_id — чат, в котором бот является участником.
getChatMembers / getChatMemberCount
GET · POST Список участников
Бот должен быть добавлен в канал или группу создателем.
| Параметр | Описание | |
|---|---|---|
chat_id | required | ID канала/группы |
POST /bot<TOKEN>/getChatMembers
{"chat_id":"6a7b..."}
result.members[]: id, username, is_bot, is_owner, created_at, message_count, joined_at
kickChatMember
POST Удалить участника
Алиас: banChatMember. Создателя удалить нельзя.
POST /bot<TOKEN>/kickChatMember
{"chat_id":"...","user_id":"...","reason":"antiboost"}
Как добавить бота в канал
- Создайте бота у
@botfather(/newbot) - Откройте канал → шапка → профиль
- Создатель видит поле «Добавить бота или участника»
- Введите
@usernameбота и нажмите «Добавить в канал»
После этого бот получает updates этого канала и может вызывать getChatMembers / kickChatMember.
Webhooks
setWebhook
url (http/https) + опционально secret_token
deleteWebhook
Сбросить webhook
getWebhookInfo
Вернёт url и pending_update_count
Inline-кнопки
Передаются в reply_markup у sendMessage.
{
"inline_keyboard": [
[
{"text": "📹 Видео", "callback_data": "v:abc123"},
{"text": "🎵 Аудио", "callback_data": "a:abc123"}
],
[
{"text": "Сайт", "url": "https://laciamemeframe.space"}
]
]
}
callback_data— до 256 символовurl— открыть ссылку в браузере- До 12 рядов × 8 кнопок
- Нажатие → update с
callback_query
Формат updates
Сообщение
{
"update_id": 15,
"message": {
"message_id": "6a8f…",
"date": "2026-08-12T12:00:00Z",
"chat": {"id": "6a7b…", "type": "private"},
"from": {"id": "6a6f…", "username": "user", "first_name": "Имя"},
"text": "https://youtube.com/watch?v=…"
}
}
Callback
{
"update_id": 16,
"callback_query": {
"id": "a1b2c3…",
"from": { "id": "…", "username": "user" },
"message": { "message_id": "…", "chat": {…}, "text": "…" },
"data": "v:abc123"
}
}
chat_id и user id — hex-строки MongoDB ObjectId, не числа Telegram.
Ошибки
| Код | Значение |
|---|---|
400 | Неверные параметры |
401 | Неверный токен |
404 | Чат / сообщение / метод не найден |
{"ok": false, "error_code": 401, "description": "Unauthorized: invalid bot token"}
Примеры
curl — getMe
curl "https://laciamemeframe.space/bot$TOKEN/getMe"
curl — sendMessage
curl -X POST "https://laciamemeframe.space/bot$TOKEN/sendMessage" \
-H "Content-Type: application/json" \
-d '{"chat_id":"CHAT_ID","text":"Hello from Bot API"}'
Python — long poll
import requests, time
BASE = "https://laciamemeframe.space/bot" + TOKEN
offset = 0
while True:
r = requests.get(f"{BASE}/getUpdates",
params={"offset": offset, "timeout": 25}, timeout=40)
data = r.json()
if not data.get("ok"):
time.sleep(2); continue
for u in data.get("result") or []:
offset = max(offset, int(u["update_id"]) + 1)
msg = u.get("message")
if not msg: continue
chat_id = msg["chat"]["id"]
text = msg.get("text") or ""
requests.post(f"{BASE}/sendMessage", json={
"chat_id": chat_id,
"text": f"Эхо: {text}"
})