> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Документация по использованию Discord Agent Proxy

> Discord Agent Proxy API guide - Ace Data Cloud

Discord Agent Proxy — это сервис с **независимым развертыванием**: он хранит учетные данные вашего собственного аккаунта Discord, поддерживает постоянное соединение с Discord и предоставляет возможности этого аккаунта через два интерфейса: **MCP** и **REST API**, позволяя ИИ или программам управлять Discord от вашего имени.

Контейнер **не содержит никаких ИИ-моделей**, он отвечает только за выполнение — вызовы инициируются вашим ИИ-клиентом (Claude, Cursor и т. д.) или собственной программой.

```
ИИ-клиент  ──MCP /mcp──┐
                       ├─→ Discord Agent Proxy ──→ Discord
Ваша программа ──REST /api───┘      （хранит учетные данные вашего аккаунта）
```

## ⚠️ Обязательно прочтите перед использованием

Автоматизация **личного аккаунта** (self-bot) с помощью программ нарушает Условия использования Discord, и существует риск блокировки аккаунта. Это неотъемлемая предпосылка данного сервиса: вы предоставляете учетные данные собственного аккаунта и самостоятельно несете риски.

**Настоятельно рекомендуется использовать специально созданный дополнительный аккаунт, а не ваш основной аккаунт.**

## Развертывание сервиса

Перейдите в [Консоль → Приложения](https://platform.acedata.cloud/console/applications), найдите Discord Agent Proxy и создайте приложение. После создания сначала оформите подписку, затем перейдите на страницу конфигурации, введите учетные данные вашего аккаунта Discord и выполните развертывание. Ресурсы экземпляра автоматически настраиваются платформой, выбирать конфигурацию не требуется.

После отправки развертывания вы попадете на страницу управления приложением, с такой же структурой «Обзор / Журналы / Документация», как при развертывании Telegram и WeChat. В «Обзоре» отображаются статусы экземпляра и подписки, а также через запрос аккаунта подтверждается, подключен ли Discord; нормальная работа контейнера не означает, что аккаунт обязательно подключен.

Карточка аккаунта Discord в «Обзоре» предоставляет две информации для подключения:

| Пункт | Пример | Назначение |
| - | - | - |
| Адрес подключения MCP | `https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/mcp` | Настройка в ИИ-клиенте |
| Токен доступа | `V0p7kAWY...` | Для аутентификации, см. ниже |

### Просмотр и тестирование интерфейсов в консоли

Откройте вкладку «Документация» данного приложения, чтобы просмотреть параметры запросов, структуру ответов всех 14 REST-операций, а также примеры на Shell, Python, JavaScript и других языках. Адрес экземпляра и токен доступа будут заполнены автоматически; по умолчанию токен скрыт.

Выберите `GET /api/whoami`, нажмите «Тестировать», и вы сможете подтвердить аккаунт, подключенный к прокси. Операции отправки, редактирования или удаления сообщений будут применяться к реальному аккаунту Discord, пожалуйста, подтвердите содержимое запроса перед тестированием.

«Скачать OpenAPI (JSON)» позволяет экспортировать полное определение интерфейса. Файл содержит адрес экземпляра, но не содержит токен доступа. Если требуется сменить учетные данные аккаунта Discord, выберите «Развернуть повторно» в «Обзоре», заполните новые учетные данные и отправьте.

### Как получить учетные данные аккаунта Discord

1. Войдите в Discord в браузере на компьютере ([discord.com/app](https://discord.com/app))
2. Нажмите `F12`, чтобы открыть инструменты разработчика, и переключитесь на панель **Network (Сеть)**
3. Произвольно нажмите на канал в Discord и наблюдайте за списком запросов
4. Откройте любой запрос, отправленный на `discord.com/api`, и найдите поле `authorization` в **Request Headers (Заголовки запроса)**
5. Скопируйте его значение

Эта строка учетных данных эквивалентна сессии входа в ваш аккаунт, **не делитесь ею ни с кем**. При утечке изменение пароля в Discord сразу сделает ее недействительной.

## Способ аутентификации

За исключением `/health` и `/readyz`, все интерфейсы требуют передачи токена доступа в **заголовке запроса**:

```
Authorization: Bearer <ваш токен доступа>
```

> **Внимание: данный сервис принимает аутентификацию только через заголовки запроса и не поддерживает способ добавления токена после URL, такой как `?token=xxx`.** При прямом открытии адреса интерфейса в браузере будет возвращено `401 unauthorized`, это нормально и не означает сбой развертывания. Чтобы подтвердить, что процесс работает, посетите `/health`; чтобы подтвердить, может ли подключение Discord обрабатывать запросы, посетите `/readyz`. Оба этих зонда не требуют аутентификации. Когда токен доступа прокси не настроен, защищенные интерфейсы возвращают `503` и не открываются анонимно.

## Проверка состояния сервиса

```bash theme={null}
curl https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/health
curl https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/readyz
```

`/health` означает только то, что HTTP-процесс работает:

```json theme={null}
{ "status": "ok" }
```

`/readyz` показывает, доступен ли Discord Gateway. При нормальном соединении возвращается HTTP 200:

```json theme={null}
{ "status": "ready", "gateway_ready": true }
```

Во время подключения, при недействительных учетных данных или разрыве соединения прямой зонд Kubernetes для Pod возвращает HTTP 503, а серверная часть экземпляра автоматически повторяет попытки. В это время Pod временно удаляется из публичного Service, поэтому не гарантируется возможность прочитать этот диагностический JSON через доменное имя экземпляра; пожалуйста, проверьте статус Deployment в консоли и вызывайте MCP / REST после восстановления состояния Ready.

## Использование в ИИ-клиенте (MCP)

На примере Claude Code:

```bash theme={null}
claude mcp add --transport http discord \
  https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/mcp \
  --header "Authorization: Bearer <ваш токен доступа>"
```

Для клиентов, таких как Cursor, поддерживающих статические заголовки запросов, настройте адрес Streamable HTTP согласно их текущей документации. Клиенты, принимающие следующую структуру, могут использовать:

```json theme={null}
{
  "mcpServers": {
    "discord": {
      "type": "http",
      "url": "https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer <ваш токен доступа>"
      }
    }
  }
}
```

Это не универсальный формат конфигурации для всех MCP-клиентов. Удаленные коннекторы Claude Desktop / Claude.ai устанавливаются из облака и не считывают никакие HTTP-заголовки запроса из локального `claude_desktop_config.json`; если в настоящее время требуется статический Bearer-заголовок запроса, используйте Claude Code или клиент, явно поддерживающий эту возможность.

После завершения настройки можно напрямую управлять ИИ для работы с Discord с помощью естественного языка, например:

> Посмотри, есть ли новые сообщения в моем канале «Обсуждение проекта», и если кто-то спрашивал о дате публикации, помоги мне ответить, что это в эту пятницу.

### Доступные инструменты

| Инструмент MCP | Назначение |
| - | - |
| `discord_whoami` | Просмотреть, какой аккаунт в настоящее время представляет агент |
| `discord_list_guilds` | Вывести список всех серверов, к которым присоединился аккаунт |
| `discord_list_channels` | Вывести список каналов на определённом сервере |
| `discord_create_text_channel` | Создать текстовый канал |
| `discord_list_members` | Вывести список участников сервера |
| `discord_send_message` | Отправить сообщение (можно указать ответ на определённое сообщение) |
| `discord_read_messages` | Прочитать последние сообщения канала |
| `discord_edit_message` | Редактировать отправленное собой сообщение |
| `discord_delete_message` | Удалить сообщение |
| `discord_search_messages` | Искать сообщения в канале |
| `discord_add_reaction` | Добавить реакцию к сообщению |
| `discord_pin_message` | Закрепить сообщение |
| `discord_create_dm` | Открыть личный чат один на один, вернуть ID канала |
| `discord_send_dm` | Отправить личное сообщение определённому пользователю |

## Использование в программе (REST API)

Все REST-интерфейсы размещены в `/api`, тело ответа всегда имеет вид `{"data": ...}`, при ошибке — `{"error": "..."}`.

### Просмотр текущего аккаунта

```bash theme={null}
curl https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/api/whoami \
  -H "Authorization: Bearer <ваш токен доступа>"
```

### Отправка сообщения

```bash theme={null}
curl -X POST https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/api/messages \
  -H "Authorization: Bearer <ваш токен доступа>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <уникальный ID операции для данной отправки>" \
  -d '{"channel_id": "1234567890", "content": "Привет"}'
```

При повторной попытке той же отправки используйте тот же `Idempotency-Key`, процесс вернёт первый результат и не отправит сообщение повторно. При перезапуске экземпляра очищаются хранящиеся в памяти записи дедупликации объёмом до 5 000, поэтому вызывающая сторона всё равно должна самостоятельно отслеживать долгосрочный статус доставки.

Необязательный параметр `reply_to` используется для ответа на указанное сообщение:

```json theme={null}
{ "channel_id": "1234567890", "content": "Получено", "reply_to": "9876543210" }
```

### Чтение сообщений

```bash theme={null}
curl "https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud/api/channels/1234567890/messages?limit=20" \
  -H "Authorization: Bearer <ваш токен доступа>"
```

### Полный список интерфейсов

| Метод и путь | Параметры | Назначение |
| - | - | - |
| `GET /api/whoami` | — | Информация об аккаунте, представленном в данный момент |
| `GET /api/guilds` | — | Список серверов, к которым присоединился аккаунт |
| `GET /api/guilds/{guild_id}/channels` | — | Список каналов на сервере |
| `POST /api/guilds/{guild_id}/channels` | `{name}` | Создать текстовый канал |
| `GET /api/guilds/{guild_id}/members` | `?limit=`（по умолчанию 100） | Список участников сервера |
| `POST /api/messages` | `{channel_id, content, reply_to?}` | Отправить сообщение |
| `GET /api/channels/{channel_id}/messages` | `?limit=`（по умолчанию 50, максимум 100） | Прочитать последние сообщения |
| `GET /api/channels/{channel_id}/messages/search` | `?q=`（обязательно）`&limit=`（по умолчанию 25） | Искать сообщения |
| `PATCH /api/channels/{channel_id}/messages/{message_id}` | `{content}` | Редактировать сообщение |
| `DELETE /api/channels/{channel_id}/messages/{message_id}` | — | Удалить сообщение |
| `POST /api/channels/{channel_id}/messages/{message_id}/reactions` | `{emoji}` | Добавить реакцию |
| `POST /api/channels/{channel_id}/messages/{message_id}/pin` | — | Закрепить сообщение |
| `POST /api/dms` | `{recipient_id}` | Открыть личный чат, вернуть ID канала |
| `POST /api/dms/send` | `{recipient_id, content}` | Отправить личное сообщение |

### Как получить ID канала и ID пользователя

В клиенте Discord последовательно откройте **Настройки пользователя → Расширенные настройки** и включите **Режим разработчика**. После этого щёлкните правой кнопкой мыши по любому каналу или пользователю, и в меню появится «Копировать ID».

Также можно напрямую вызвать `GET /api/guilds` и `GET /api/guilds/{guild_id}/channels` для перечисления.

## Часто задаваемые вопросы

**Возвращается `401 unauthorized`**

Токен доступа неверен либо был передан способом `?token=`. Убедитесь, что токен передаётся через заголовок запроса `Authorization: Bearer &lt;токен>` и совпадает с отображаемым в консоли.

**Возвращается `503`**

Соединение с Discord ещё не установлено. Сначала откройте `/readyz`, чтобы проверить `gateway_ready`; если оно длительное время имеет значение `false`, скорее всего, учётные данные аккаунта недействительны — получите их заново и повторно разверните.

**Возвращается `403` или `404`**

У самого аккаунта нет соответствующих прав (например, он не находится на этом сервере или не имеет права писать в этом канале), либо ID указан неверно. Такие ошибки исходят от Discord, а не являются проблемой прокси-сервиса.

**Возвращается `429`**

Сработало ограничение частоты Discord, поле `retry_after` в ответе указывает рекомендуемое количество секунд ожидания. Снизьте частоту вызовов.

**Аккаунт был заблокирован после отправки сообщения**

Как уже упоминалось, автоматизированные действия с личным аккаунтом нарушают условия обслуживания Discord. Используйте специальный дополнительный аккаунт и контролируйте частоту операций, избегая таких чувствительных действий, как массовая рассылка.

## Область проверки

Производственный smoke-тест от 1 августа 2026 года с использованием специального аккаунта проверил аккаунт, серверы, каналы, участников, чтение сообщений, поиск, отправку, редактирование, реакции и удаление. Автоматизированные тесты охватывают аутентификацию, проверку параметров, сопоставление ошибок и сигнатуры текущей библиотеки зависимостей; после изменений worker или chart необходимо снова выполнить smoke-тест, нельзя считать историческую проверку доказательством постоянной работоспособности.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.