Перейти к основному содержимому

project-bot

Эндпоинтов: 8

POST /api/projects/{id}/bot/restart

Перезапустить бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Stop → cooldown → start. С tokenId — конкретный бот; без — legacy (инстанс + default). MCP: db_restart_bot.

curl -s -X POST -b cookies.txt -H 'Content-Type: application/json' \
-d '{"tokenId":7}' 'http://localhost:5000/api/projects/42/bot/restart'

Тело запроса: ProjectBotTokenBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Перезапущен
401Нет session / PAT
403Нет доступа / чужой tokenId

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

{
"message": "Бот успешно перезапущен",
"processId": "12345"
}

POST /api/projects/{id}/bot/restart-all

Перезапустить всех running ботов

Авторизация: Cookie (connect.sid) или Bearer PAT

Останавливает все running-токены проекта, cooldown, затем start со stagger. Офлайн не трогает (для них — start-offline-all).

Клиент/MCP: restartAllBotsMutation, db_restart_all_bots.

curl -s -X POST -b cookies.txt 'http://localhost:5000/api/projects/42/bot/restart-all'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Сводка перезапуска
401Нет session / PAT
403Нет доступа к проекту
404Нет токенов

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

{
"restarted": 2,
"results": [
{
"tokenId": 7,
"success": true,
"processId": "12345"
},
{
"tokenId": 8,
"success": true,
"processId": "12346"
}
]
}

POST /api/projects/{id}/bot/start

Запустить бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Старт по tokenId (или default). Сырой token не принимается. Клиент/MCP: use-bot-mutations, db_start_bot.

curl -s -X POST -b cookies.txt -H 'Content-Type: application/json' \
-d '{"tokenId":7}' 'http://localhost:5000/api/projects/42/bot/start'

Тело запроса: ProjectBotTokenBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Запущен
400Уже running / нет токена / сырой token
401Нет session / PAT
403Нет доступа / чужой tokenId

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

{
"message": "Бот успешно запущен",
"processId": "12345",
"tokenUsed": true
}

POST /api/projects/{id}/bot/start-offline-all

Запустить всех офлайн-ботов проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Последовательно запускает токены проекта со status !== running и действительным токеном. Уже running и токены с isActive=0 (Telegram отклонил) не трогает (в отличие от restart-all).

Доступ: requireProjectAccess.

Side-effects: WS bot-started, start-offline-progress (без секретов; см. docs/api/realtime-events.md).

Клиент: use-bot-mutations / BotManagement. MCP: db_start_offline_bots.

При большом числе токенов HTTP долгий (пауза ~400ms между стартами).

curl -s -X POST http://localhost:5000/api/projects/1/bot/start-offline-all -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Сводка запуска
400Неверный ID проекта
401Не авторизован
403Нет доступа к проекту
404Токены не найдены

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

{
"started": 2,
"failed": 0,
"skippedRunning": 1,
"results": [
{
"tokenId": 7,
"success": true,
"processId": "12345"
},
{
"tokenId": 8,
"success": true,
"processId": "12346"
}
]
}

GET /api/projects/{id}/bot/statuses

Статусы всех ботов проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Один ответ вместо N запросов GET /api/tokens/{tokenId}/bot-status. Сверка с worker pool / in-memory процессом. instance без сырого token. Cache-Control: no-store.

Auth: requireProjectAccess — только свои/коллабораторские проекты (не IDOR по чужим tokenId).

Одиночный статус: GET /api/tokens/{tokenId}/bot-status (MCP: db_bot_status).

curl -s http://localhost:5000/api/projects/42/bot/statuses -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Статусы токенов проекта
400Неверный ID проекта
401Не авторизован
403Нет доступа к проекту

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

{
"statuses": [
{
"tokenId": 7,
"status": "running",
"instance": {
"id": 1,
"projectId": 42,
"tokenId": 7,
"status": "running",
"processId": "worker_42",
"startedAt": "2026-08-18T13:42:04.555Z",
"stoppedAt": null,
"errorMessage": null
}
},
{
"tokenId": 8,
"status": "stopped",
"instance": null
}
]
}

POST /api/projects/{id}/bot/stop

Остановить бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Остановка по обязательному tokenId. Клиент/MCP: use-bot-mutations, db_stop_bot.

curl -s -X POST -b cookies.txt -H 'Content-Type: application/json' \
-d '{"tokenId":7}' 'http://localhost:5000/api/projects/42/bot/stop'

Тело запроса: ProjectBotTokenBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Остановлен
400Нет tokenId
401Нет session / PAT
403Нет доступа / чужой tokenId

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

{
"message": "Бот успешно остановлен"
}

GET /api/projects/{projectId}/bot/data

Данные бота для диалогов

Авторизация: Cookie (connect.sid) или Bearer PAT

Кэш профиля default-токена в формате, совместимом с bot_users (аватар/username для панели Database → диалоги).

Клиент: use-bot-data.

curl -s -b cookies.txt 'http://localhost:5000/api/projects/42/bot/data'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Профиль или null
401Нет session / PAT
403Нет доступа к проекту

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

{
"id": "123456789",
"userId": "123456789",
"avatarUrl": "AgACAgIAAxkBAA",
"userName": "my_support_bot",
"firstName": "Support Bot",
"isBot": true
}

GET /api/projects/{projectId}/bot/info

Профиль бота (getMe)

Авторизация: Cookie (connect.sid) или Bearer PAT

Telegram getMe для токена проекта (tokenId или default). photoUrl: true — фото есть (клиент грузит через avatar proxy). Без токена: { hasToken: false }.

Имя/описание менять через PUT …/tokens/{tokenId}/bot-info.

Клиент: use-bot-queries / карточки ботов.

curl -s -b cookies.txt 'http://localhost:5000/api/projects/42/bot/info?tokenId=7'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
tokenIdqueryнетID токена бота проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200getMe или hasToken:false
401Нет session / PAT
403Нет доступа / чужой tokenId

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

{
"id": 123456789,
"is_bot": true,
"first_name": "Support Bot",
"username": "my_support_bot",
"photoUrl": true,
"tokenId": 7
}