Bot API

HTTP API для пользовательских ботов AlphaMes. Формат вдохновлён Telegram Bot API.

Базовый URL: https://alphames.duckdns.org/api/bot/
Все ответы — JSON. Успех: { "ok": true, "result": ... }. Ошибка: HTTP 4xx + { "error": "..." }.

Авторизация

Каждый запрос должен содержать заголовок:

Authorization: Bot 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz

Токен привязан к одному бот-аккаунту. При компрометации перевыпустите через BotMother: /token @mybot.

getMe

Проверка токена и получение информации о боте.

GET /api/bot/getMe

Пример ответа

{
  "ok": true,
  "result": {
    "id": 42,
    "username": "myhelperbot",
    "displayName": "My Helper",
    "avatarColor": "#5288c1",
    "isUserBot": true,
    "botDescription": "Помощник"
  }
}

getUpdates

Получение входящих событий (long polling). Используйте параметр offset, чтобы не получать одни и те же updates повторно.

GET /api/bot/getUpdates

ПараметрТипОписание
offsetIntegerIdentifier первого update, который нужно вернуть (update_id + 1 последнего обработанного)
limitInteger1–100, по умолчанию 50

Пример запроса

GET /api/bot/getUpdates?offset=0&limit=50
Authorization: Bot YOUR_TOKEN

Пример ответа

{
  "ok": true,
  "result": [
    {
      "update_id": 1,
      "type": "message",
      "message": {
        "id": 100,
        "chatId": 15,
        "text": "/start",
        "from": {
          "id": 7,
          "username": "alice",
          "displayName": "Alice"
        },
        "date": "2026-05-29 12:00:00"
      }
    }
  ]
}

Рекомендуемый цикл: опрашивать каждые 0.5–2 секунды, после обработки каждого update увеличивать offset.

sendMessage

Отправка текстового сообщения от имени бота.

POST /api/bot/sendMessage

Content-Type: application/json

ПолеТипОбязательноОписание
textStringДаТекст сообщения
chat_idInteger*ID чата, если известен
user_idInteger*ID пользователя — чат создастся автоматически

* Укажите chat_id или user_id.

Пример

POST /api/bot/sendMessage
Authorization: Bot YOUR_TOKEN
Content-Type: application/json

{
  "chat_id": 15,
  "text": "Привет! Я бот AlphaMes."
}

Ответ

{
  "ok": true,
  "result": {
    "id": 101,
    "chatId": 15,
    "content": "Привет! Я бот AlphaMes.",
    "createdAt": "2026-05-29 12:00:01",
    "sender": { "id": 42, "username": "myhelperbot", "displayName": "My Helper", "isUserBot": true }
  }
}

Типы

Update

ПолеТипОписание
update_idIntegerУникальный номер update для данного бота
typeStringСейчас только message
messageMessageОбъект сообщения

Message (в update)

ПолеТипОписание
idIntegerID сообщения
chatIdIntegerID личного чата
textStringТекст
fromUserОтправитель (человек)
dateStringВремя UTC

Коды ошибок

HTTPerrorПричина
401Требуется заголовок AuthorizationНет заголовка Bot ...
401Неверный токен ботаТокен отозван или неверный
400Укажите textПустой text в sendMessage
400Укажите chat_id или user_idНе указан получатель
403Бот не состоит в этом чатеНеверный chat_id
403Аккаунт пользователя ограниченУ собеседника chat ban
404Пользователь не найденНеверный user_id

Ограничения

Webhook mode пока не реализован — используйте только long polling через getUpdates.