# Как сделать бота Discord

## Создание бота

**Шаг 1.** Создайте приложение ([перейдите по ссылке](https://discord.com/developers/applications)).

**Шаг 2.** Добавьте бота (нажмите кнопку "**Add Bot"**).

<div data-with-frame="true"><figure><img src="/files/af47eb3f0b2ae00eb4782ba40ad2bbe72331a73d" alt=""><figcaption></figcaption></figure></div>

**Шаг 2.1.** Во вкладке **Установка** выберите **Установите Link → None**.

<div data-with-frame="true"><figure><img src="/files/da1de44833e6e75914069ce4d17496ef70092630" alt=""><figcaption></figcaption></figure></div>

**Шаг 2.2.** Во вкладке **Бот** разделе отключите **Публичный бот**, затем включите следующие **Intents**:

* **Message Content Intent**
* **Server Members Intent**

Вы также можете включить **Presence Intent** для будущего использования.

<div data-with-frame="true"><figure><img src="/files/cfd34269aa0e890e1a3be1527a2f2aca4bc48240" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/0bc0cf388668712420da73ca536b78a66615f87c" alt=""><figcaption></figcaption></figure></div>

**Шаг 3.** Получите токен (**Reset Token**).

**Шаг 4.** Добавьте бота на сервер:

* Перейдите по **OAuth2 → URL Generator**.
* В **Scopes**, выберите **bot**.
* В **Bot Permissions**, выберите **Send Messages**, **Read Message History**, и любые другие необходимые разрешения.

Затем откройте сгенерированную ссылку, выберите сервер, на который хотите добавить бота, и подтвердите авторизацию.

<div data-with-frame="true"><figure><img src="/files/0b12ee31251eeab8d1118660d6ba4bf9c15fb656" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/47895fe0b8aac9f43a7fbf79842db951c26f3187" alt=""><figcaption></figcaption></figure></div>

Чтобы получить полный webhook из Discord, просто присвойте любое значение переменной **save\_webhook** переменную.

Если переменная задана, webhook будет сохранён в **discord\_webhook**.

## Подключение бота Discord в MaviBot

Теперь перейдите в **«Мессенджеры»** раздел в вашем проекте в **MaviBot**:

<div data-with-frame="true"><figure><img src="/files/b0eeacc61ed4ca43d7cbe898ce1d8051ad7c2243" alt=""><figcaption></figcaption></figure></div>

Затем вставьте токен, скопированный из **Discord**.

<div data-with-frame="true"><figure><img src="/files/aec6ffdf60255a47ecf70786ebe1fe8b10eb53b3" alt=""><figcaption></figcaption></figure></div>

Нажмите кнопку **Готово** .

## Функции калькулятора

### Ответ на сообщение

discord\_reply\_to\_message(message\_id, text) - эта функция используется для **ответа на сообщение**.

| Параметры                                             | Описание                                              |
| ----------------------------------------------------- | ----------------------------------------------------- |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** на которое вы хотите ответить. |
| <mark style="color:$danger;">**!**</mark> text        | Текст **текст сообщения-ответа**.                     |

### Удалить сообщение

discord\_delete\_message(message\_id) - эта функция используется для **удаления сообщения.**&#x20;

| Параметры                                             | Описание                             |
| ----------------------------------------------------- | ------------------------------------ |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** для удаления. |

### Редактировать сообщение

discord\_edit\_message(message\_id, text) - эта функция используется для **редактирования сообщения**.

| Параметры                                             | Описание                                   |
| ----------------------------------------------------- | ------------------------------------------ |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** для редактирования. |
| <mark style="color:$danger;">**!**</mark> text        | Текст **новый текст сообщения**.           |

### Закрепить сообщение

discord\_pin\_message(message\_id) - эта функция используется для **закрепления сообщения.**

| Параметры                                             | Описание                                |
| ----------------------------------------------------- | --------------------------------------- |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** для закрепления. |

### Открепить сообщение

discord\_unpin\_message(message\_id) - эта функция используется для **открепления сообщения.**

| Параметры                                             | Описание                                |
| ----------------------------------------------------- | --------------------------------------- |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** для открепления. |

### Отправить реакцию на сообщение

discord\_send\_reaction(message\_id, reaction) - эта функция используется для **отправки реакции на сообщение.**

| Параметры                                             | Описание                                                                                                                                                                                             |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** для отправки реакции на.                                                                                                                                                      |
| <mark style="color:$danger;">**!**</mark> реакция     | Текст **реакция для отправки**. Вы можете указать один эмодзи (например, ❤️) или ID пользовательского эмодзи на сервере. Информация о том, как получить ID пользовательского эмодзи, приведена ниже. |

### Удалить реакцию из сообщения в канале

discord\_delete\_reaction(message\_id, reaction, user\_id) - эта функция используется для **удаления реакции из сообщения в канале.**

| Параметры                                             | Описание                                                                                                                                                                                             |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:$danger;">**!**</mark> message\_id | Текст **ID сообщения** из которого нужно удалить реакцию.                                                                                                                                            |
| <mark style="color:$danger;">**!**</mark> реакция     | Текст **реакция для удаления**. Вы можете указать один эмодзи (например, ❤️) или ID пользовательского эмодзи на сервере. Информация о том, как получить ID пользовательского эмодзи, приведена ниже. |
| user\_id                                              | Текст **ID пользователя** чью реакцию вы хотите удалить. Этот параметр необязателен, если вы хотите удалить реакцию текущего бота.                                                                   |

## Обратные звонки

Когда пользователь отправляет реакцию, в чат приходит callback в следующем формате:

new\_like ❤️ uid413984787162726410

<div data-with-frame="true"><figure><img src="/files/721c44e298d8ab3a59aeab74e7334b328babe174" alt="" width="563"><figcaption></figcaption></figure></div>

Где `uid413984787162726410` это **ID пользователя** кто отправил реакцию.

## Как получить ID пользовательского эмодзи

Если вы отправляете пользовательскую реакцию на сообщение в канале Discord, callback будет получен в следующем формате:

new\_like beer:1479419477396291696 uid413984787162726410

<div data-with-frame="true"><figure><img src="/files/7a2b666dd8f4089fb74eadcdd2aa2e4678067a64" alt="" width="563"><figcaption></figcaption></figure></div>

Где `beer:1479419477396291696` это **ID реакции**. Вы можете скопировать его для использования в функциях, связанных с реакциями.

## Как получить ID сообщения

Вы можете получить ID сообщения клиента из webhook, если **save\_webhook** включён. Пример:

`data = discord_webhook["data"]`\
`msg_id = data["id"]`\
`result = discord_reply_to_message(msg_id, "Это ответ на сообщение")`


---

# Agent Instructions: 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:

```
GET https://docs.mavibot.ai/doc/ru/chatbot/messendzhery/discord/chatbot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
