REST API v1 · Разработчикам
MCP-сервер: управляйте Discord-сервером из ИИ-ассистентов
BotGG предоставляет удалённый сервер Model Context Protocol. Подключите к нему ИИ-ассистента — и он сможет пользоваться теми же эндпоинтами, что и REST API, с теми же правами, лимитами и проверками, для одного сервера, на который вы дали доступ.
Документация для разработчиков
На этой странице
Подключение клиента
Адрес сервера — https://console.botgg.app/mcp (MCP через Streamable HTTP). Клиенты входят одним из двух способов:
- Вход через Discord (OAuth) — рекомендуется. Клиенту нужен только адрес. Он откроет BotGG в браузере, вы войдёте через Discord, выберете один сервер и разрешения и подтвердите. Ничего копировать не нужно, а отключить приложение можно в любой момент.
- API-ключ. Для клиентов без OAuth: создайте ключ в консоли (см. авторизацию) и передавайте его как
Authorization: Bearer botgg_….
Claude (claude.ai и Claude Desktop)
- Откройте Settings → Connectors и выберите Add custom connector.
- Назовите его
BotGG, вставьте адресhttps://console.botgg.app/mcpи нажмите Add. - Нажмите Connect: откроется BotGG, войдите через Discord и подтвердите (см. экран согласия).
ChatGPT
- Откройте Settings → Apps & Connectors. Для своих коннекторов нужен Developer mode (в Advanced settings) на вашем тарифе.
- Выберите Create, назовите коннектор
BotGG, вставьтеhttps://console.botgg.app/mcpкак адрес MCP-сервера и выберите аутентификацию OAuth. - Создайте коннектор и войдите, когда ChatGPT откроет BotGG.
Cursor
Добавьте сервер в ~/.cursor/mcp.json (или в .cursor/mcp.json проекта). Рядом с ним Cursor покажет Needs login — нажмите, чтобы войти через Discord в браузере.
{
"mcpServers": {
"botgg": { "url": "https://console.botgg.app/mcp" }
}
}Claude Code
claude mcp add --transport http botgg https://console.botgg.app/mcp
# then run /mcp inside Claude Code and choose "Authenticate"Любой клиент с API-ключом
{
"mcpServers": {
"botgg": {
"type": "http",
"url": "https://console.botgg.app/mcp",
"headers": { "Authorization": "Bearer botgg_…" }
}
}
}Экран согласия
Когда клиент входит, BotGG показывает, кто запрашивает доступ и куда вы вернётесь после ответа. Приложения регистрируются сами, поэтому их название не проверено — одобряйте только подключение, которое начали вы.
- Войдите через Discord (если вы ещё не вошли в консоль).
- Выберите один сервер. Показаны серверы, где у вас есть право «Управлять сервером»; на выбранном должен быть BotGG. Подключение всегда относится ровно к одному серверу.
- Выберите разрешения. Это те же права, что и у API-ключей. Чувствительные (действия над участниками, данные модерации) по умолчанию не отмечены; для их выбора нужно дополнительное подтверждение.
- Разрешите или отклоните. Приложение получает короткоживущий токен доступа (1 час) и токен обновления, который меняется при каждом использовании.
Каждое подключение видно в консоли в разделе Сервер → Подключённые приложения: права, кто подключил и когда приложение последний раз использовалось. Любой администратор сервера может отключить его там — доступ пропадает сразу. Если человек, подключивший приложение, теряет право «Управлять сервером», доступ прекращается автоматически при следующем вызове.
Инструменты
На каждый эндпоинт REST API приходится один инструмент — например, bank.getBalance становится инструментом bank_get_balance. Входные данные — поля пути, запроса и тела эндпоинта; ID сервера не передаётся, он берётся из подключения. Список инструментов всегда совпадает со справочником API, а клиент видит только инструменты, право на которые есть у его подключения.
- Инструменты только для чтения помечены соответственно; инструменты, которые меняют или удаляют данные, помечены как деструктивные, и ассистенту предписано сначала подтвердить точное действие у вас.
- Каждый вызов проходит тот же путь, что и запрос к REST API: проверки прав и модуля, валидацию, коды ошибок и лимит запросов тарифа для подключения (у API-ключа один общий лимит на REST и MCP).
- Ошибки возвращаются как результат инструмента с теми же кодами
error, что и в REST API, поэтому ассистент может их объяснить или исправить. - Изменения через MCP записываются в журнал аудита сервера с названием приложения.
| Право | Что разрешает |
|---|---|
guild:read | Чтение данных сервера — Название, иконка, число участников, язык и включённые функции сервера; роли, каналы и основные данные участника (роли, ник, дата входа). |
bank:read | Чтение Банка — Балансы, история операций участника и таблица лидеров. |
bank:write | Изменение балансов — Начислять и списывать валюту участникам. Каждое изменение попадает в журнал Банка. |
levels:read | Чтение Уровней — Уровень, опыт и место участника, таблица лидеров по опыту. |
levels:write | Изменение опыта — Начислять, списывать и задавать опыт участникам. Роли-награды и объявления о новом уровне работают как с командами /levels; каждое изменение попадает в журнал аудита. |
invites:read | Чтение приглашений — Счётчики приглашений и место участника, таблица лидеров по приглашениям. |
invites:write | Изменение бонусных приглашений — Добавлять и убирать бонусные приглашения, как /invites add. Награды за рубежи выдаются автоматически; каждое изменение попадает в журнал аудита. |
shop:read | Чтение Магазина — Магазины, товары, инвентарь участников и история покупок. |
shop:write Чувствительное | Управление Магазином — Покупать товары за участников (списывается с их баланса в Банке, роли выдаются), выдавать товары бесплатно, возвращать покупки, пополнять запас и включать или выключать товары. |
giveaways:read | Чтение розыгрышей — Идущие и завершённые розыгрыши: число участников, победители и список участников. |
giveaways:write | Управление розыгрышами — Запускать розыгрыши, завершать их досрочно и перевыбирать победителей. Бот публикует и обновляет их в Discord. |
flows:read | Чтение сценариев — Список сценариев (название, вкл./выкл., триггер), статус и результат запусков. |
flows:run Чувствительное | Запуск сценариев — Запускать включённые сценарии с триггером «Вручную» или «Вебхук» со своими входными данными. Сценарий выполняет все свои шаги; запуски учитываются в дневном лимите тарифа. |
tickets:read | Чтение тикетов — Список и данные тикетов (автор, панель, статус, ответы формы) и сохранённые расшифровки закрытых тикетов. |
tickets:write | Закрытие тикетов — Закрывать открытые тикеты с причиной — бот сохраняет расшифровку, пишет в лог и уведомляет автора, как при закрытии персоналом. |
applications:read | Чтение заявок — Формы и поданные заявки, включая ответы кандидатов, голоса и решения. |
applications:write | Решения по заявкам — Принимать и отклонять открытые заявки. Бот выдаёт / снимает роли формы, пишет кандидату в ЛС и обновляет обсуждение, как при решении персонала. |
appeals:read | Чтение апелляций — Апелляции на бан с ответами, причиной бана и перепиской (внутренние заметки персонала не передаются). |
appeals:write Чувствительное | Решения по апелляциям — Одобрять (разбанивать) или отклонять открытые апелляции с причиной; бот разбанивает и пишет в ЛС, как при решении персонала. Одобрение апелляции снимает бан с участника. |
moderation:read Чувствительное | Чтение дел модерации — Дела модерации (предупреждения, тайм-ауты, кики, баны…) с причинами, ссылками-доказательствами и модераторами, и статус действий через API. Открывает доступ к истории модерации участников. |
moderation:write Чувствительное | Модерация участников — Предупреждать, давать тайм-аут, кикать, банить и разбанивать от имени создателя ключа: только пока у него есть нужное право Discord, только участников ниже его и бота по роли, с причиной, не больше 10 действий в минуту. Любой, у кого есть этот ключ, может наказывать участников от вашего имени. Храните его в секрете и отзывайте, когда он не нужен. |
Ограничения
| Что | Ограничение |
|---|---|
| Вызовы инструментов на подключение | Лимит API тарифа в минуту: Free 60, Pro 600 |
| Прочие MCP-запросы (список инструментов, рукопожатия) | 300 в минуту на подключение |
| Токен доступа / токен обновления | 1 час / 30 дней, обновляется при каждом обновлении |
| Размер запроса | 64 КБ на MCP-сообщение; 8 КБ на тело инструмента, как в REST API |
Безопасность
- Подтверждение деструктивных действий запрашивает ваше ИИ-приложение на основе пометок инструментов — BotGG не видит ваш чат. Не отключайте подтверждения в клиенте.
- Запись через MCP не использует
Idempotency-Key, поэтому ассистенту не стоит вслепую повторять неудавшуюся запись — сначала проверьте результат. Для автоматических записей с повторами используйте REST API. - Токены привязаны к этому адресу и к одному Discord-серверу; BotGG хранит только их хеши. Повторно использованный токен обновления из предосторожности отключает приложение — просто подключите его снова.
Решение проблем
| Ответ | Что делать |
|---|---|
401 с error="invalid_token" | Токен истёк, отозван или приложение отключено — войдите снова из клиента. |
403 с error="insufficient_scope" | У подключения нет права из scope. Подключитесь заново и отметьте его на экране согласия. |
403 «Origin not allowed» | Браузерные клиенты должны работать с разрешённого origin; десктопные и серверные клиенты Origin не отправляют. |
Результат инструмента BANK_DISABLED / FEATURE_DISABLED | Включите модуль для сервера в консоли. |
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://console.botgg.app/.well-known/oauth-protected-resource/mcp"HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer resource_metadata="…", error="insufficient_scope", scope="bank:write"