如何在同一封邮件中发送附件和嵌入内容?

时间:2019-07-16 04:56:47

标签: javascript node.js discord.js

如何在同一封邮件中发送附件和嵌入内容?

发送附件:

if (message.content === ';file') {
  const attachment = new Attachment('https://i.imgur.com/FpPLFbT.png');
  message.channel.send(`text`, attachment);
}

要发送嵌入内容:

if (msg.content === ';name') {
  const embed = new Discord.RichEmbed()
    .setTitle(`About`)
    .setDescription(`My name is <@${msg.author.id}>`)
    .setColor('RANDOM');
  msg.channel.send(embed);
}

2 个答案:

答案 0 :(得分:2)

要了解如何完成任务,您首先需要了解TextBasedChannel.send()方法的工作方式。让我们看看文档中的TextChannel.send()

  

.send([content], [options])

     

content StringResolvable 消息文本。< br />    options MessageOptionsAttachmentRichEmbed :< / strong>邮件的选项,也可以只是RichEmbed或附件

现在,让我们看看您的用法如何。


  
message.channel.send(`text`, attachment);

在这种情况下,`text`用作方法的content参数,而attachment作为options参数传递。

  
msg.channel.send(embed);

这里,content参数被省略,embed作为options参数被传递。


在保持相同样式的代码的同时,您可以利用一个对象来同时保留options参数的嵌入和附件。

// const { Attachment, RichEmbed } = require('discord.js');

const attachment = new Attachment('https://puu.sh/DTwNj/a3f2281a71.gif', 'test.gif');

const embed = new RichEmbed()
  .setTitle('**Test**')
  .setImage('attachment://test.gif') // Remove this line to show the attachment separately.

message.channel.send({ embed, files: [attachment] })
  .catch(console.error);

答案 1 :(得分:1)

TextChannel.send函数可以使用不同的options

所以您可以这样做:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('message', (msg) => {
  msg.channel.send({
    embed:  new Discord.RichEmbed()
      .setTitle('A slick little embed')
      .setColor(0xFF0000)
      .setDescription('Hello, this is a slick embed!'),
    files: [{
      attachment: './README.md',
      name: 'readme'
    }]
  })
    .then(console.log)
    .catch(console.error);
});

但是,如果您想在嵌入中添加图片,请按照guide中的示例或api文档中给出的示例进行操作:

// Send an embed with a local image inside
channel.send('This is an embed', {
  embed: {
    thumbnail: {
         url: 'attachment://file.jpg'
      }
   },
   files: [{
      attachment: 'entire/path/to/file.jpg',
      name: 'file.jpg'
   }]
})
  .then(console.log)
  .catch(console.error);