Djs interaction sending attachment separately from embed

Viewed 187

I'm trying to make my message look like this, but as a result of interaction.reply I get this instead.

Here is my code:

fs.readdir("./pics", (error, files) => {
if (error) return console.log(error)
const num = (Math.floor(Math.random() * files.length)+1).toString();

const imagembed = new Discord.MessageEmbed()
.setTitle("Some cute pic for you!")
.setColor("#980002")
.setFooter("Requested by " + interaction.member.user.tag);
interaction.reply({ embeds: [imagembed], files: [`./pics/${num}.jpg`]})
})

Any ideas how to fix it?

1 Answers

Attaching images to embeds

Attaching images in embeds can be achieved using MessageEmbed.setImage(). This requires a valid link to picture.

Attaching local images

Since MessageEmbed.setImage() is the only way, to attach an image to an embed, you have to use some trickery. You have to send the image as file in your MessagePayload and add it to the embed.

const embed = new discord.MessageEmbed().setImage("attachment://image.png");
interaction.reply({ embeds: [embed ], files: [`./path/to/image.png`] });

Solution to your problem

For you, this would result in the following code:

fs.readdir("./pics", (error, files) => {
  if (error) return console.log(error)
  const num = (Math.floor(Math.random() * files.length) + 1).toString();

  const imagembed = new Discord.MessageEmbed()
    .setTitle("Some cute pic for you!")
    .setColor("#980002")
    .setFooter("Requested by " + interaction.member.user.tag)
    .setImage(`attachment://${num}.jpg`);
  interaction.reply({ embeds: [imagembed], files: [`./pics/${num}.jpg`] })
})
Related