# Documentation

**Создание клиента**

```javascript
var botcord = require("botcord.js");
var client = new botcord.Client();
```

**Все события**

```javascript
client.on("ready", () => {
  // Бот включился и готов слушать команды
  console.log(`Бот ${client.id} онлайн!`);
});
```

```javascript
var logChannel = ...; // Канал логов, который Вы получили раньше

client.on("serverJoin", ({ server, user }) => {
  // Пользователь (user) зашёл на сервер (server)
  logChannel.send(`Пользователь ${user.username}#${user.discriminator} (<@${user.id}>) зашёл на сервер ${server.name}.`);
});
```

```javascript
var logChannel = ...; // Канал логов, который Вы получили раньше

client.on("serverLeave", ({ server, user }) => {
  // Пользователь (user) вышел с сервера (server)
  logChannel.send(`Пользователь ${user.username}#${user.discriminator} (<@${user.id}>) вышел с сервера ${server.name}.`);
});
```

```javascript
client.on("message", message => {
  // Пришло новое сообщение (message)
});
```

```javascript
client.on("messageEdit", message => {
  // Сообщение (message) было отредактировано, в переменной находится уже новое
});
```

```javascript
client.on("messageDelete", messageId => {
  // Сообщение с ID (messageId) было удалено
});
```

```javascript
client.on("channelCreate", ({ server, channel }) => {
  // На сервере (server) был создан новый канал (channel)
});
```

```javascript
client.on("channelEdit", ({ server, oldChannel, newChannel }) => {
  // На сервере (server) был создан изменён канал (oldChannel), его новая версия - newChannel
});
```

```javascript
client.on("channelDelete", ({ server, channel }) => {
  // На сервере (server) был создан удалён канал (channel)
});
```

```javascript
client.on("roleCreate", ({ server, role}) => {
  // На сервере (server) была создана новая роль (role)
});
```

```javascript
client.on("roleEdit", ({ server, role }) => {
  // На сервере (server) была изменена роль (role), этот объект - уже новая версия
});
```

```javascript
client.on("roleDelete", ({ server, role }) => {
  // На сервере (server) была удалена роль (role), в данном случае role - это лишь ID
});
```

```javascript
client.on("serverBan", ({ server, user }) => {
  // На сервере (server) был забанен пользователь (user)
});
```

```javascript
client.on("serverUnban", ({ server, user }) => {
  // На сервере (server) был разбанен пользователь (user)
});
```

```javascript
client.on("serverEdit", ({ oldServer, newServer }) => {
  // Сервере (oldServer) был изменён, его новая версия - newServer
});
```

```javascript
client.on("inviteCreate", ({ server, invite }) => {
  // На сервере (server) было создано приглашение (invite)
});
```

```javascript
client.on("inviteDelete", ({ server, invite }) => {
  // На сервере (server) было удалено приглашение (invite), в данном случае invite это лишь его код
});
```

```javascript
client.on("memberEdit", ({ server, member }) => {
  // На сервере (server) был изменён участник (member)
  // Это может означать выдачу ролей, забирание ролей, изменение никнейма на сервере и другое
});
```

**Примеры команд**

```javascript
client.on("message", message => {
  if (message.content == "!help") { // Делаем команду !help с ответом
    message.reply("Мяу!");
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!send") { // Команда !send отправляет без ответа
    message.channel.send("Мяу!");
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!delete") {
    message.channel.delete(); // Удалить канал при вводе команды
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!banme") {
    message.server.ban(message.user.id, "Сам попросил"); // Баним этого пользователя, причина не обязательна
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!kickme") {
    message.server.kick(message.user.id, "Сам попросил"); // Кикаем этого пользователя с причиной
  }
});
```

```javascript
var lastBan = "1234567891011";

client.on("message", message => {
  if (message.content == "!unbanlast") {
    message.server.unban(lastBan); // Разбаниваем пользователя по айди из переменной
  }
});
```

```javascript
client.on("message", async message => {
  if (message.content == "!timeout") {
    await message.member.timeout(604800); // Даём таймаут на неделю (время в секундах)
    setTimeout(() => {
      message.member.timeout(); // Снимаем таймаут через 30 секунд
    }, 30000);
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!dm") {
    message.user.send("Привет!"); // Отправка в ЛС пользователю
  }
});
```

```javascript
client.on("message", async message => {
  if (message.content == "!help") {
    await message.channel.write(); // Печатаем
    setTimeout(() => {
      message.reply("Мяу!"); // Отправляем сообщение с ответом через 3 секунды
    }, 3000);
  }
});
```

```javascript
client.on("message", async message => {
  if (message.content == "!help" && message.channel.isDM()) { // Команда, но для ЛС
    await message.channel.write();
    setTimeout(() => {
      message.reply("Мяу!");
    }, 3000);
  }
});
```

```javascript
client.on("message", async message => {
  if (message.content == "!help" && !message.channel.isDM()) { // Только для сервера
    await message.channel.write();
    setTimeout(() => {
      message.reply("Мяу!");
    }, 3000);
  }
});
```

```javascript
client.on("message", message => {
  if (message.files.length == 1) { // Проверка что был отправлен 1 файл
    message.reply(`Вы отправили один файл, ссылка на него: ${message.files[0].url}`);
  }
});
```

```javascript
client.on("message", message => {
  if (message.files.length == 1 && message.files[0].isImage()) { // Проверка что файл - это картинка
    message.reply(`Вы отправили одну картинку!`);
  }
});
```

```javascript
client.on("message", message => {
  if (message.repliedMessage) { // Проверка что был ответ
    // От сообщения на которое ответили (message.repliedMessage.message) доступен только id и всё!
    message.reply(`Вы ответили на сообщение с ID ${message.repliedMessage.message.id}!`);
  }
});
```

```javascript
client.on("message", message => {
  if (message.content == "!giverole") {
    message.member.roles.give("1234567891011"); // Выдаём роль
  }
  if (message.content == "!takerole") {
    message.member.roles.take("1234567891011"); // Забираем роль
  }
  if (message.content == "!checkrole") {
    if (message.member.roles.has("1234567891011")) { // Проверяем роль
      message.reply("У Вас есть эта роль!");
    } else {
      message.reply("У Вас нету этой роли!");
    }
  }
});
```

<pre class="language-javascript"><code class="lang-javascript"><strong>client.on("message", async message => {
</strong><strong>  if (message.content == "!info") {
</strong><strong>    var vanityUrl = await message.server.getVanityUrl();
</strong>    message.reply(`
      Текущий сервер: ${message.server.name} (${message.server.id})
      Аватарка сервера: https://uso.my/avatars/${message.server.id}/${message.server.icon}.webp?size=4096
      Баннер сервера: https://uso.my/banners/${message.server.id}/${message.server.banner}.webp?size=4096
      Пользовательская ссылка на сервер: https://uso.my/invite/${vanityUrl.code} (${vanityUrl.uses || 0} использований)
      Текущий канал: #${message.channel.name}: (${message.channel.id})
      Вы: ${message.user.username}#${message.user.discriminator} (${message.user.id})
      Вы бот: ${message.user.bot}
      Ваше обо мне: ${message.user.bio}
      Ваша аватарка: https://uso.my/avatars/${message.user.id}/${message.user.avatar}.webp?size=4096
      Ваш баннер: https://uso.my/banners/${message.user.id}/${message.user.banner}.webp?size=4096
    `);
  }
});
</code></pre>

```javascript
var presets = [
  "data:image/png;base64,AAZz0ZzDIWMDdfdfg",
  "data:image/png;base64,AAZz0ZzDIWMDdfdfg",
  "data:image/png;base64,AAZz0ZzDIWMDdfdfg",
  // ...
];

client.on("message", message => {
  if (message.content == "!changeavatar") {
    client.modifyUser({ // Функция для изменения аватарки (avatar) и баннера (banner) бота
      "avatar": presets[Math.floor(Math.random() *presets.length)]
    });
  }
});
```

```javascript
client.on("message", async message => {
  if (message.content == "!test") {
    var msg = await message.reply("Оригинал"); // Сохраняем отправленное сообщение
    setTimeout(() => {
      msg.edit("Отредактировано"); // Через 3 секунды редактируем его
    }, 3e3);
  }
});
```

**Эмбеды**

```javascript
client.on("message", async message => {
  if (message.content == "!help" && !message.channel.isDM()) {
    var embed = new botcord.Embed(); // Создание эмбеда
    embed.setTitle("Заголовок");
    embed.setDescription("Описание");
    embed.setColor("#FF0000");
    message.reply({
      "embeds": [embed]
    });
  }
});
```


---

# 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://botcord.gitbook.io/docs/documentation.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.
