● API online

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. Других заголовков не нужно.

https://laciamemeframe.space/bot<TOKEN>/<method>

Формат токена: {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

Системный бот для создания и управления вашими ботами.

  1. Откройте мессенджер
  2. Найдите @botfather и нажмите «Запустить»
  3. Отправьте /newbot → имя → username (оканчивается на bot)
  4. Сохраните выданный 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)

ПараметрТипОписание
offsetintoptionalupdate_id ≥ offset (после обработки ставьте last+1)
limitintoptional1–100, по умолчанию 100
timeoutintoptionallong poll, сек, макс. 50
GET /bot<TOKEN>/getUpdates?timeout=25&offset=42

В result — массив updates. После выдачи они помечаются delivered.

sendMessage

POST Отправить текст

ПараметрТипОписание
chat_idstringrequiredID чата или пользователя (ObjectId hex)
textstringrequiredТекст, до 4000 символов
reply_to_message_idstringoptionalОтвет на сообщение
reply_markupobjectoptionalInline-клавиатура
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_idstringrequiredid из callback_query
textstringoptionalТост пользователю (до 200)
show_alertbooloptionaltrue — alert вместо тоста

sendPhoto / sendVideo / sendAudio / sendDocument

POST multipart Отправка файла · лимит 200 МБ

Поле файла: photo | video | audio | document (или file / media).

ПараметрОписание
chat_idrequiredID чата
photo / video / …requiredФайл (multipart)
captionoptionalПодпись
reply_to_message_idoptionalОтвет
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_idrequiredID канала/группы
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"}

Как добавить бота в канал

  1. Создайте бота у @botfather (/newbot)
  2. Откройте канал → шапка → профиль
  3. Создатель видит поле «Добавить бота или участника»
  4. Введите @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}"
        })