Si ha estado en Discord por un tiempo, es probable que haya visto estos mensajes especiales.
Tienen un borde de color, a menudo son enviados por bots y tienen imágenes incrustadas, campos de texto y otras cosas elegantes.
En la siguiente sección, explicaremos cómo redacta un incrustado, lo envía y lo que debe tener en cuenta al hacerlo.
#Insertar vista previa
A continuación, se muestra un ejemplo de cómo puede verse una inserción. Repasaremos su construcción en la siguiente parte de esta guía.
Utilizando el Mensaje constructor
Discord.js presenta la clase de utilidad Mensaje para una fácil construcción y manipulación de incrustaciones.
// at the top of your file
const Discord = require('discord.js');
// inside a command, event listener, etc.
const exampleEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle('Some title')
.setURL('https://discord.js.org/')
.setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', 'https://discord.js.org')
.setDescription('Some description here')
.setThumbnail('https://i.imgur.com/wSTFkRM.png')
.addFields(
{ name: 'Regular field title', value: 'Some value here' },
{ name: '\u200B', value: '\u200B' },
{ name: 'Inline field title', value: 'Some value here', inline: true },
{ name: 'Inline field title', value: 'Some value here', inline: true },
)
.addField('Inline field title', 'Some value here', true)
.setImage('https://i.imgur.com/wSTFkRM.png')
.setTimestamp()
.setFooter('Some footer text here', 'https://i.imgur.com/wSTFkRM.png');
channel.send(exampleEmbed);
El .setColor()método acepta un entero, una cadena de colores HEX, una matriz de valores RGB o cadenas de colores específicas. Puede encontrar una lista de ellos enla documentación de Discord.js.
.addBlankField()fue un método conveniente para agregar un espaciador a la inserción. Para agregar un campo en blanco, ahora puede usarlo .addField('\u200b', '\u200b').
El ejemplo anterior encadena los métodos de manipulación al recién creado Mensajeobjeto. Si desea modificar la inserción en función de las condiciones, deberá hacer referencia a ella como la constante exampleEmbed(para nuestro ejemplo).
const exampleEmbed = new Discord.MessageEmbed().setTitle('Some title');
if (message.author.bot) {
exampleEmbed.setColor('#7289da');
}
#Adjuntar imágenes
Puede usar el .attachFiles()método para cargar imágenes junto con su inserción y usarlas como fuente para los campos de inserción que admiten URL de imágenes. El método acepta el archivo fuente como ruta de archivoFileOptions, BufferResolvable (incluida una URL a una imagen externa) u objetos adjuntos dentro de una matriz.
Luego puede hacer referencia y usar las imágenes dentro del incrustado con attachment://fileName.extension.
const exampleEmbed = new Discord.MessageEmbed()
.setTitle('Some title')
.attachFiles(['../assets/discordjs.png'])
.setImage('attachment://discordjs.png');
channel.send(exampleEmbed);
Usando un objeto incrustado
const exampleEmbed = {
color: 0x0099ff,
title: 'Some title',
url: 'https://discord.js.org',
author: {
name: 'Some name',
icon_url: 'https://i.imgur.com/wSTFkRM.png',
url: 'https://discord.js.org',
},
description: 'Some description here',
thumbnail: {
url: 'https://i.imgur.com/wSTFkRM.png',
},
fields: [
{
name: 'Regular field title',
value: 'Some value here',
},
{
name: '\u200b',
value: '\u200b',
inline: false,
},
{
name: 'Inline field title',
value: 'Some value here',
inline: true,
},
{
name: 'Inline field title',
value: 'Some value here',
inline: true,
},
{
name: 'Inline field title',
value: 'Some value here',
inline: true,
},
],
image: {
url: 'https://i.imgur.com/wSTFkRM.png',
},
timestamp: new Date(),
footer: {
text: 'Some footer text here',
icon_url: 'https://i.imgur.com/wSTFkRM.png',
},
};
channel.send({ embed: exampleEmbed });
Si desea modificar el objeto incrustado en función de las condiciones, deberá hacer referencia a él directamente (como exampleEmbeden nuestro ejemplo). A continuación, puede (re) asignar los valores de propiedad como lo haría con cualquier otro objeto.
const exampleEmbed = { title: 'Some title' };
if (message.author.bot) {
exampleEmbed.color = 0x7289da;
}
Adjuntar imágenes
Puede cargar imágenes con su mensaje incrustado y utilizarlas como fuente para los campos incrustados que admiten URL de imágenes mediante la construcción un mensaje adjuntode ellos para enviar como opción de mensaje junto con la inserción. losadjunto archivo El parámetro toma un BufferResolvable o Stream que incluye la URL a una imagen externa.
Luego puede hacer referencia y usar las imágenes dentro del incrustado con attachment://fileName.extension.
const file = new Discord.MessageAttachment('../assets/discordjs.png');
const exampleEmbed = {
title: 'Some title',
image: {
url: 'attachment://discordjs.png',
},
};
channel.send({ files: [file], embed: exampleEmbed });