如何在同一封邮件中发送附件和嵌入内容?
发送附件:
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);
}
答案 0 :(得分:2)
要了解如何完成任务,您首先需要了解TextBasedChannel.send()
方法的工作方式。让我们看看文档中的TextChannel.send()
。
.send([content], [options])
content
(StringResolvable) :消息文本。< br />options
(MessageOptions或Attachment或RichEmbed) :< / 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);