Найти в Дзене
Sharky

Как создать своего бота в Discord, на библиотеке discord.js №3 Что такое Embed сообщения, и как их использовать!

В этой статье, мы с вами поговорим о embed сообщениях, а также сделаем первую команду, которая выводит embed сообщение!

И так начнём, что же такое embed сообщения, или же просто embed?

Embed это - особый формат сообщений. Есть миф, что их могут (без модификаций и селф-ботов) отправлять только боты, однако это не так. Вы уже сталкивались с эмбедами, когда делились с друзьями сайтами или видео c Youtube.

Эмбеды есть следующих типов:

1. Rich

Доступен только для ботов, и вебхуков (для пользователей только с модификациями/селф-ботами) Самый красивый и многофункциональный вид эмбедов

Настраивается через API

API ( программный интерфейс приложения, интерфейс прикладного программирования описание способов, набор классов , процедур , функций , структур или констант. Которыми одна компьютерная программа может взаимодействовать с другой программой. В нашем случае, Бот с пользователем!

Проще говоря, через код нашего бота!

2. Link

Доступен всем

Появляется при отправлении ссылки без <>

-2

Настройку производят создатели сайтов!

3. Video

Доступен всем

Появляется при отправлении ссылки на видео без <>

-3

Настройку производят создатели сайтов!

Ссылка на сайт откуда была взята информация: https://discord.fandom.com/ru/wiki/Эмбед

Как вы уже наверно поняли, наш Embed будет настраиваться, и выглядеть как Embed под номером 1 (Rich)!

А теперь переходим к написанию и отправке Embed сообщения, через бота!

Для того чтобы создать embed сообщение, вам нужно объявить переменную через let, вот как это должно примерно выглядеть:

let embed = new Discord.MessageEmbed()

Далее я объясню вам все настройки embed сообщения, всего их 12!

Начнём по порядку:

1. .addField('')

Он имеет три значения:

Name, value, и inline

-4

Первое отвечает за название, второе за его значение, обратите внимание, что если ничего не вписать в value, то вместо пустой строки, вы получите значение undefined, inline может быть всего двумя значениями, true, и false, вот как выглядит значение true:

-5

А вот как выглядит значение false:

-6

2. .setColor('')

Как понятно из названия, оно устанавливает цвет сообщения, он может быть как и в HEX-Коде

-7

Так и просто названием цвета: RED, BLUE, GREEN и т.д!

Как выглядит embed с цветом GREEN:

-8

3. .setDescription('')

Как указано в названии, эта функция, устанавливает Описание Embed сообщению, оно выглядит примерно как value в .addField(), скрин:

-9

Также обратите внимание на то, что в коде у меня .addField() написан выше, чем .setDescription(), но всё равно описание будет выше чем значения в addField!

4. .setAuthor('')

Оно устанавливает автора сообщения, скрин как это выглядит:

-10

Также можно добавить аватарку человека написавшего сообщения, это делается следующим образом: .setAuthor('Автор embed!', message.author.displayAvatarURL{ dynamic: true })

Обратите внимание, что в {}, я указал значение dynamic, это означает, что если у автора сообщения, аватарка анимированная, то бот автоматически поменяет изображение с png, на gif!

-11

5. .setTimestamp()

Это самое простое из всех функций, он просто устанавливает время создания сообщения, вот скрин:

-12

6. .setImage('')

Устанавливает изображение в embed сообщение, изображение должно быть в виде ссылки!

Пример: https://jasonhaxstuff.gallerycdn.vsassets.io/extensions/jasonhaxstuff/discord-js-tools/0.0.3/1530824658924/Microsoft.VisualStudio.Services.Icons.Default

-13

7. .setThumbnail('')

Оно очень похоже на .setImage(''), но различия в том, что .setImage('') устанавливает большое изображение снизу embed, а .setThumbnail('') устанавливает маленькое изображение, справа сверху embed сообщения!

-14

8. .setTitle('')

Оно устанавливает жирный текст в начале embed сообщения, скрин:

-15

9. .setURL('')

Оно встраивает ссылку в .setTitle(''), выглядит это следующим образом:

-16

10. .setFooter('')

Оно устанавливает подпись внизу изображения, там же где и .setTimestamp(), скрин:

-17

11. .addFields({})

Можно сказать это одно и тоже что и .addField(), но только немного удобнее, в коде оно выглядит так:

.addFields ({
name : 'Name' ,
value : 'Value' ,
inline : false
}, {
name : 'Name2' ,
value : 'Value2' ,
inline : false
})

И так пока в embed сообщении не закончится лимит символов! Лимит: 2048 символов!

12. .attachFiles('Ссылка на файл')

Перед embed сообщением, кидает в чат файл, выглядит это следующим образом:

-18

Код который у нас получился в итоге:

if (message.content .startsWith (prefix + 'embed' )) {
let embed = new
Discord .MessageEmbed()
.addField ('Name' , 'Value' , false )
.addField ('Name2' , 'Value2' , false )
.addField ('Name3' , 'Value3' , false )
.setColor ('GREEN' )
.setDescription ('Вот так выглядит .setDescription() в embed сообщении!' )
.setAuthor ('Автор embed!' , message.author .displayAvatarURL ({ dynamic : true }))
.setTimestamp ()
.setImage ('https://jasonhaxstuff.gallerycdn.vsassets.io/extensions/jasonhaxstuff/discord-js-tools/0.0.3/1530824658924/Microsoft.VisualStudio.Services.Icons.Default' )
.setThumbnail ('https://jasonhaxstuff.gallerycdn.vsassets.io/extensions/jasonhaxstuff/discord-js-tools/0.0.3/1530824658924/Microsoft.VisualStudio.Services.Icons.Default' )
.setTitle ('.setTitle в embed сообщении!' )
.setURL ('https://jasonhaxstuff.gallerycdn.vsassets.io/extensions/jasonhaxstuff/discord-js-tools/0.0.3/1530824658924/Microsoft.VisualStudio.Services.Icons.Default' )
.setFooter ('Так выглядит .setFooter!' )
.addFields ({
name : 'Name' ,
value : 'Value' ,
inline : false
}, {
name : 'Name2' ,
value : 'Value2' ,
inline : false
})
.attachFiles ('https://jasonhaxstuff.gallerycdn.vsassets.io/extensions/jasonhaxstuff/discord-js-tools/0.0.3/1530824658924/Microsoft.VisualStudio.Services.Icons.Default' )
message.channel .send (embed)
}

Обратите внимание на то, что то название переменной которое вы указали, при создании embed сообщения, пример: let embed = new Discord.MessageEmbed()

Вы должны будете указать в message.channel.send(), чтобы получилось: message.channel.send(embed)! embed это моя переменная, которую я обозначал в начале, она у вас может быть другая!

А на этом всё, увидимся в следующем уроке, по discord.js!

В следующем уроке, мы познакомимся с аргументами команды, или же просто args! (пример: !ping argument1 argument2 и т.д)