> For the complete documentation index, see [llms.txt](https://wiki.myata.ink/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.myata.ink/page-1.md).

# Page 1

## Discord-бот: полный справочник возможностей

Собрано по актуальной документации (docs.discord.com + reverse-engineered Userdoccers, docs.discord.food) на август 2026. Всё, что помечено «тихо игнорируется» или «заблокировано», — проверено эмпирически или подтверждено докой.

***

### 1. Кастомизация профиля бота — что реально работает

Ключевой принцип: **глобальные косметические поля через `/users/@me` для бота почти все «тихо игнорируются»** (Discord возвращает 200, но поле не применяется), потому что они завязаны на владение SKU / Nitro. **По-серверная косметика через member-эндпоинт — работает.**

#### Работает

| Что                                  | Эндпоинт                                                                                                      | Область     | Примечание                             |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------- | ----------- | -------------------------------------- |
| Ник                                  | `PATCH /guilds/{guild}/members/@me`                                                                           | по-серверно | нужно право «Изменять ник»             |
| Аватар                               | `PATCH /guilds/{guild}/members/@me`                                                                           | по-серверно | guild avatar бота                      |
| Баннер                               | `PATCH /guilds/{guild}/members/@me`                                                                           | по-серверно |                                        |
| Био                                  | `PATCH /guilds/{guild}/members/@me`                                                                           | по-серверно | до 190 символов                        |
| **Стиль имени** (шрифт/эффект/цвета) | `PATCH /guilds/{guild}/members/@me` (`display_name_font_id`, `display_name_effect_id`, `display_name_colors`) | по-серверно | это пресет, не SKU — потому и работает |
| Аватар/имя аккаунта                  | `PATCH /users/@me` (`username`, `avatar`)                                                                     | глобально   | стандартная смена аватара бота         |
| **Описание «Обо мне» + теги**        | `PATCH /applications/@me` (`description`, `tags`, `icon`, `install_params`)                                   | глобально   | профиль приложения бота                |

#### Тихо игнорируется у бота (вернёт 200, но `null`)

* Украшение аватара — `avatar_decoration_sku_id` (проверено: 200 + `avatar_decoration_data: null`)
* Нэймплейт — `nameplate_sku_id`
* Эффект профиля — `profile_effect_id` (`PATCH /users/@me/profile`)
* Эмодзи профиля — `emoji_id`
* Цвета темы профиля — `theme_colors`
* Стиль имени глобально через `/users/@me` (помечен «только premium»)
* Баннер глобально через `/users/@me` («только premium»)

#### Заблокировано для ботов (ошибка 20001 «Bots cannot use this endpoint»)

* Тег сервера через `PUT /users/@me/clan`
* Поле `primary_guild` в `PATCH /users/@me` — тоже тихо игнорируется
* Весь неймспейс `/store/...` (список/покупка SKU)

**Вывод:** богатый набор кастомизации у бота возможен только по-серверно (member-эндпоинт) + описание приложения. Всё «коллекционное» (декор, нэймплейт, эффекты, тег) боту недоступно by design.

***

### 2. Сообщения бота: два режима

Бот отправляет сообщения через `POST /channels/{channel_id}/messages`. Есть два несовместимых режима:

#### Legacy (обычный)

* Поля: `content` (до 2000 символов), `embeds` (до 10), `components` (до 5 action row верхнего уровня), `tts`, `allowed_mentions`, `sticker_ids`, `poll`, вложения.
* Компоненты идут вместе с текстом и эмбедами.

#### Components V2 (флаг `IS_COMPONENTS_V2` = `32768`)

* Ставишь `"flags": 32768`. После этого:
  * `content` и `embeds` **перестают работать** — вместо них Text Display и Container.
  * Вложения не показываются сами — только через компоненты (File / Media Gallery).
  * `poll` и `stickers` отключены.
  * Флаг **необратим** для этого сообщения.
* Лимиты: до **40 компонентов** всего, до **10** верхнеуровневых, суммарно **4000 символов** текста по всем компонентам.

***

### 3. Эмбеды (Legacy-режим) — все части

Массив `embeds`, до **10** на сообщение. Суммарно по всем эмбедам — **6000 символов**.

| Часть            | Поле                                                         | Лимит       |
| ---------------- | ------------------------------------------------------------ | ----------- |
| Заголовок        | `title`                                                      | 256         |
| Описание         | `description`                                                | 4096        |
| Ссылка заголовка | `url`                                                        | —           |
| Цвет полосы      | `color` (integer)                                            | —           |
| Дата             | `timestamp` (ISO8601)                                        | —           |
| Автор            | `author.name` / `author.url` / `author.icon_url`             | name 256    |
| Футер            | `footer.text` / `footer.icon_url`                            | text 2048   |
| Большая картинка | `image.url`                                                  | —           |
| Миниатюра        | `thumbnail.url`                                              | —           |
| Видео            | `video.url` (обычно авто)                                    | —           |
| Провайдер        | `provider.name` / `provider.url`                             | —           |
| Поля             | `fields[]` → `name` (256) / `value` (1024) / `inline` (bool) | до 25 полей |

`type` эмбеда: `rich` (то, что делает бот), а также авто-типы `image`, `video`, `gifv`, `article`, `link`, `poll_result`.

***

### 4. Components V2 — все типы

Таблица типов (`type`). «M» = сообщение, «Мод» = модальное окно.

| #  | Имя                       | Категория  | Где             | Бот            |
| -- | ------------------------- | ---------- | --------------- | -------------- |
| 1  | ACTION\_ROW               | layout     | M, Мод (устар.) | ✅              |
| 2  | BUTTON                    | интерактив | M               | ✅              |
| 3  | STRING\_SELECT            | интерактив | M, Мод          | ✅              |
| 4  | TEXT\_INPUT               | интерактив | Мод             | ✅              |
| 5  | USER\_SELECT              | интерактив | M, Мод          | ✅              |
| 6  | ROLE\_SELECT              | интерактив | M, Мод          | ✅              |
| 7  | MENTIONABLE\_SELECT       | интерактив | M, Мод          | ✅              |
| 8  | CHANNEL\_SELECT           | интерактив | M, Мод          | ✅              |
| 9  | SECTION                   | layout     | M               | ✅              |
| 10 | TEXT\_DISPLAY             | контент    | M, Мод          | ✅              |
| 11 | THUMBNAIL                 | контент    | M (accessory)   | ✅              |
| 12 | MEDIA\_GALLERY            | контент    | M               | ✅              |
| 13 | FILE                      | контент    | M               | ✅              |
| 14 | SEPARATOR                 | layout     | M               | ✅              |
| 16 | CONTENT\_INVENTORY\_ENTRY | контент    | M               | ❌ нельзя ботам |
| 17 | CONTAINER                 | layout     | M               | ✅              |
| 18 | LABEL                     | layout     | Мод             | ✅              |
| 19 | FILE\_UPLOAD              | интерактив | Мод             | ✅              |
| 20 | CHECKPOINT\_CARD          | контент    | M               | ❌ нельзя ботам |
| 21 | RADIO\_GROUP              | интерактив | Мод             | ✅              |
| 22 | CHECKBOX\_GROUP           | интерактив | Мод             | ✅              |
| 23 | CHECKBOX                  | интерактив | Мод             | ✅              |

Типы 9–14, 17 требуют флаг `IS_COMPONENTS_V2`.

#### Описание layout/контент-компонентов

* **Action Row (1)** — горизонтальный ряд. До 5 кнопок ИЛИ один селект ИЛИ (в модалке) один text input.
* **Section (9)** — текст (1–3 Text Display) + один accessory справа (Thumbnail или Button).
* **Text Display (10)** — markdown-текст, 1–4000 символов. Аналог `content`, но можно несколько блоков. Поддерживает пинги (по `allowed_mentions`).
* **Thumbnail (11)** — маленькая картинка-accessory внутри Section. Поля: `media.url`, `description` (alt, 1024), `spoiler`.
* **Media Gallery (12)** — 1–10 медиа в галерее. Каждый item: `media.url`, `description`, `spoiler`.
* **File (13)** — показывает прикреплённый файл (только `attachment://`, не URL). `spoiler`.
* **Separator (14)** — вертикальный отступ. `divider` (bool), `spacing` (1 SMALL / 2 LARGE).
* **Container (17)** — визуальный блок с цветной полосой. `accent_color` (int), `spoiler`, до 10 внутренних (action row / text display / section / media gallery / separator / file).

***

### 5. Кнопки

Внутри Action Row (до 5) или как accessory в Section.

| Стиль                 | # | Обязательное поле |
| --------------------- | - | ----------------- |
| PRIMARY (синяя)       | 1 | `custom_id`       |
| SECONDARY (серая)     | 2 | `custom_id`       |
| SUCCESS (зелёная)     | 3 | `custom_id`       |
| DANGER (красная)      | 4 | `custom_id`       |
| LINK (ссылка)         | 5 | `url`             |
| PREMIUM (покупка SKU) | 6 | `sku_id`          |

Поля: `label` (до 80, но по гайдам \~34 с эмодзи / \~38 без), `emoji`, `custom_id` (1–100), `url` (до 512), `disabled`.

* Не-link/не-premium кнопки обязаны иметь `custom_id`, без `url`/`sku_id`.
* Link и Premium кнопки **не шлют** interaction боту.

***

### 6. Селекты («скроллы») — 5 типов

Все селекты: `custom_id` (1–100), `placeholder` (до 150), `min_values`/`max_values` (0–25), `disabled`. В сообщении — внутри Action Row; в модалке — внутри Label.

| Тип                | # | Что выбирает               | Особое поле                                                           |
| ------------------ | - | -------------------------- | --------------------------------------------------------------------- |
| String Select      | 3 | из твоих `options` (до 25) | `options[]`: label(100), value(100), description(100), emoji, default |
| User Select        | 5 | пользователей              | `default_values[]`                                                    |
| Role Select        | 6 | роли                       | `default_values[]`                                                    |
| Mentionable Select | 7 | пользователей И роли       | `default_values[]`                                                    |
| Channel Select     | 8 | каналы                     | `channel_types[]` (фильтр по типу канала), `default_values[]`         |

User/Role/Mentionable/Channel — опции подставляются Discord автоматически из гильдии. Мульти-выбор через `max_values > 1`.

***

### 7. Модальные окна (modals)

Показываются в ответ на interaction (response type 9). Структура: `title` (до 45), `custom_id` (до 100), `components` (до 5 верхнеуровневых).

**Что можно класть в модалку** (Discord теперь рекомендует оборачивать в **Label**, а не в Action Row):

* **Text Input (4)** — стили: 1 SMALL (одна строка), 2 PARAGRAPH (многострочный). `min/max_length` (до 4000), `value` (префилл), `placeholder`, `required`.
* **Селекты** — String / User / Role / Mentionable / Channel (в модалке — внутри Label).
* **File Upload (19)** — загрузка до 10 файлов. `min/max_values`, `required`, `file_types[]`.
* **Radio Group (21)** — выбор одного из списка (2–10 опций).
* **Checkbox Group (22)** — мульти-выбор чекбоксами (2–10 опций, `min/max_values`).
* **Checkbox (23)** — одиночный чекбокс (да/нет).
* **Text Display (10)** — статичный текст-пояснение внутри модалки.

**Label (18)** оборачивает один интерактивный компонент: `label` (45) + `description` (100) + вложенный компонент.

***

### 8. Как грузить готовый JSON с настройками в бота

Паттерн, который уже используется в твоём V2-билдере (`_v2_build_components`):

1. **Собираешь payload** — объект `{ "flags": 32768, "components": [...] }` (или Legacy `{ "content": ..., "embeds": [...], "components": [...] }`).
2. **Отправка нового сообщения:** `POST /channels/{channel_id}/messages` с этим телом и заголовком `Authorization: Bot <token>`.
3. **Редактирование:** `PATCH /channels/{channel_id}/messages/{message_id}` тем же телом.
4. **Ответ на interaction:** `POST /interactions/{id}/{token}/callback` с `{ "type": 4, "data": {payload} }`.

Для «загрузки готового JSON» в билдере: принимаешь JSON от пользователя → валидируешь (типы компонентов, лимиты) → кладёшь в `components` → отправляешь/PATCH-аешь. Кастомные `custom_id` кнопок/селектов возвращаются боту в interaction — по ним роутишь логику.

Гейт `attachment://<filename>` в File/Thumbnail/Media работает только если файл реально прикреплён в multipart-запросе.

***

### 9. Роуты, которые бот реально использует

#### Сообщения

| Метод  | Путь                                      | Что делает                            |
| ------ | ----------------------------------------- | ------------------------------------- |
| POST   | `/channels/{ch}/messages`                 | отправить сообщение                   |
| PATCH  | `/channels/{ch}/messages/{msg}`           | редактировать                         |
| DELETE | `/channels/{ch}/messages/{msg}`           | удалить                               |
| POST   | `/channels/{ch}/messages/bulk-delete`     | массовое удаление (2–100, до 14 дней) |
| POST   | `/channels/{ch}/messages/{msg}/crosspost` | опубликовать (announcement)           |
| GET    | `/channels/{ch}/messages`                 | история                               |
| PUT    | `/channels/{ch}/pins/{msg}`               | закрепить                             |

#### Реакции

| Метод  | Путь                                                     | Что делает                            |
| ------ | -------------------------------------------------------- | ------------------------------------- |
| PUT    | `/channels/{ch}/messages/{msg}/reactions/{emoji}/@me`    | поставить реакцию ботом               |
| DELETE | `/channels/{ch}/messages/{msg}/reactions/{emoji}/@me`    | убрать свою                           |
| DELETE | `/channels/{ch}/messages/{msg}/reactions/{emoji}/{user}` | убрать чужую (нужно MANAGE\_MESSAGES) |
| DELETE | `/channels/{ch}/messages/{msg}/reactions`                | снести все                            |

Для кастом-эмодзи в пути — формат `name:id`, для юникода — URL-энкод символа.

#### Interactions (ответы бота)

| Метод | Путь                                            | Что делает              |
| ----- | ----------------------------------------------- | ----------------------- |
| POST  | `/interactions/{id}/{token}/callback`           | ответить на interaction |
| POST  | `/webhooks/{app_id}/{token}`                    | followup-сообщение      |
| PATCH | `/webhooks/{app_id}/{token}/messages/@original` | правка исходного ответа |

Типы ответа (`type`): 4 сообщение · 5 defer (думает) · 6 defer update · 7 update message · 8 автокомплит · 9 **показать модалку**.

#### Вебхуки

| Метод | Путь                      | Что делает                                               |
| ----- | ------------------------- | -------------------------------------------------------- |
| POST  | `/channels/{ch}/webhooks` | создать вебхук                                           |
| POST  | `/webhooks/{id}/{token}`  | отправить от имени вебхука (`?wait=true`, `?thread_id=`) |

Вебхук умеет embeds/components, но **не получает** клики/interaction — для этого нужен бот.

#### Участники и роли

| Метод  | Путь                                      | Что делает                                                             |
| ------ | ----------------------------------------- | ---------------------------------------------------------------------- |
| PATCH  | `/guilds/{g}/members/@me`                 | **косметика бота по-серверно** (ник, аватар, баннер, био, стиль имени) |
| PATCH  | `/guilds/{g}/members/{user}`              | изменить участника (ник, роли, мут, тайм-аут, перенос в голосовой)     |
| PUT    | `/guilds/{g}/members/{user}/roles/{role}` | выдать роль                                                            |
| DELETE | `/guilds/{g}/members/{user}/roles/{role}` | снять роль                                                             |
| GET    | `/guilds/{g}/members` / `.../search`      | список / поиск участников                                              |

#### Роли, каналы, эмодзи

| Метод                 | Путь                                         | Что делает                                                                |
| --------------------- | -------------------------------------------- | ------------------------------------------------------------------------- |
| GET/POST/PATCH/DELETE | `/guilds/{g}/roles`                          | управление ролями (+ bulk-позиции)                                        |
| GET/POST/PATCH/DELETE | `/guilds/{g}/channels`, `/channels/{id}`     | управление каналами                                                       |
| POST                  | `/guilds/{g}/emojis`, `/guilds/{g}/stickers` | кастом-эмодзи/стикеры (с фев 2026 нужно право CREATE\_GUILD\_EXPRESSIONS) |

#### Аккаунт и приложение бота

| Метод | Путь                | Что делает                                                                                                                      |
| ----- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| GET   | `/users/@me`        | профиль бота (читать decoration/primary\_guild — оба `null`)                                                                    |
| PATCH | `/users/@me`        | глобально: `username`, `avatar` (баннер — только premium)                                                                       |
| GET   | `/users/{id}`       | чужой профиль (тут виден `avatar_decoration_data.sku_id`)                                                                       |
| PATCH | `/applications/@me` | **профиль приложения**: `description` («обо мне»), `tags`, `icon`, `cover_image`, `install_params`, `interactions_endpoint_url` |

#### Слэш-команды

| Метод    | Путь                                      | Что делает                              |
| -------- | ----------------------------------------- | --------------------------------------- |
| POST/PUT | `/applications/{app}/commands`            | глобальные команды                      |
| POST/PUT | `/applications/{app}/guilds/{g}/commands` | команды сервера (обновляются мгновенно) |

***

### 10. Итог по кастомизации (ответ на «что можно навесить боту»)

**Можно:** по-серверный ник/аватар/баннер/био/стиль имени (member-эндпоинт), описание и теги приложения (`/applications/@me`), богатые сообщения (эмбеды, Components V2, контейнеры, галереи, кнопки, селекты), интерактив (модалки с инпутами/селектами/чекбоксами/загрузкой файлов), слэш-команды, реакшн-роли.

**Нельзя (тихо игнорируется или заблокировано):** украшение аватара, нэймплейт, эффект/эмодзи/цвета профиля, тег сервера (`primary_guild`/`clan`), любые SKU-коллекционные предметы, кастомный дискриминатор.

**Единственный непроверенный кандидат:** Profile Widgets V2 через `PATCH /applications/{app}/users/{bot_id}/identities/0/profile` — пушится бот-токеном (не через `/users/@me`), поэтому не попадает под «тихое игнорирование». Требует настройки виджета в Developer Portal и включённого эксперимента рендерера.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.myata.ink/page-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
