Bot API
HTTP API для пользовательских ботов AlphaMes. Формат вдохновлён Telegram Bot API.
Базовый URL:
Все ответы — JSON. Успех:
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
| Параметр | Тип | Описание |
|---|---|---|
offset | Integer | Identifier первого update, который нужно вернуть (update_id + 1 последнего обработанного) |
limit | Integer | 1–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
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
text | String | Да | Текст сообщения |
chat_id | Integer | * | ID чата, если известен |
user_id | Integer | * | 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_id | Integer | Уникальный номер update для данного бота |
type | String | Сейчас только message |
message | Message | Объект сообщения |
Message (в update)
| Поле | Тип | Описание |
|---|---|---|
id | Integer | ID сообщения |
chatId | Integer | ID личного чата |
text | String | Текст |
from | User | Отправитель (человек) |
date | String | Время UTC |
Коды ошибок
| HTTP | error | Причина |
|---|---|---|
| 401 | Требуется заголовок Authorization | Нет заголовка Bot ... |
| 401 | Неверный токен бота | Токен отозван или неверный |
| 400 | Укажите text | Пустой text в sendMessage |
| 400 | Укажите chat_id или user_id | Не указан получатель |
| 403 | Бот не состоит в этом чате | Неверный chat_id |
| 403 | Аккаунт пользователя ограничен | У собеседника chat ban |
| 404 | Пользователь не найден | Неверный user_id |
Ограничения
- До 10 ботов на один аккаунт пользователя
- Username бота: 5–32 символа,
a-z,0-9,_, начинается с буквы, заканчивается наbot - Updates только из личных чатов с ботом
- Только текстовые сообщения (без файлов, кнопок, inline mode)
Webhook mode пока не реализован — используйте только long polling через
getUpdates.