是否可以在嵌入中附加多个图像?
Posted
技术标签:
【中文标题】是否可以在嵌入中附加多个图像?【英文标题】:Is it possible to attach multiple images in a embed? 【发布时间】:2019-12-02 13:50:38 【问题描述】:我正在discord.js
中设置一个waifu gacha 游戏,想知道是否可以发送包含多个图像的嵌入?与此相同
(https://pm1.narvii.com/7022/e92995beeea9d48d4344c7fcdd97bedbf3fd4d13r1-1920-1080v2_hq.jpg)
如果需要,这是我的嵌入代码:
number = Math.floor(Math.random() * animechr.characters.length);
oof = animechr.characters[number]["name"]
oof2 = animechr.characters[number]["image_url"]
const waifu = new Discord.RichEmbed()
.setAuthor(anime.title)
.setThumbnail(oof2)
.setTitle(oof)
.setTimestamp()
.setFooter('Pulled time:')
message.channel.sendEmbed(waifu)
虽然我不知道如何实现这一点,但除了 .setImage
和 .setThumbnail
之外,我真的没有任何依据。
【问题讨论】:
【参考方案1】:是和不是。
您可以同时使用嵌入的图像和缩略图属性,但这会将您限制为两个图像,两者的显示方式不同。您可以将文件附加到消息中,但它们将与嵌入分开显示。
我的建议是将多个图像与canvas
一起加载,将画布另存为PNG,并将其设置为嵌入图像。它本质上是图像的拼贴,允许您在嵌入中显示所有图像。
【讨论】:
【参考方案2】:其实是有办法的。 Webhook 消息每条消息最多可包含 10 个嵌入。因此,您可以使用 webhook 发送 10 个嵌入,每个嵌入包含一个图像。
图像应该有宽度和高度字段documented here,但我没有看到任何使用嵌入对象或 RichEmbed 的方法,所以你必须调整你想要使用的图像的大小,所以它们是大小一样。
在您的情况下,懒惰的想法:将图像合并到一个画布中并渲染它会更好,更接近您共享的图片
const client = new Discord.Client();
const hook = new Discord.WebhookClient(webHook.id, webHook.token);
client.on('ready', () =>
console.log('Starting!');
client.user.setActivity(config.activity);
);
client.on('message', async (msg) =>
if (msg.author.bot) return;
sendImage();
);
let webHook =
token: "token-webhook",
id: "id-webhook"
;
let img = [
'https://i.imgur.com/ezC66kZ.png',
'https://i.imgur.com/wSTFkRM.png'
];
function sendImage()
let embeds = [];
embeds.push(new Discord.RichEmbed()
.setTitle('First Messages')
.setImage(img[0])
.setTimestamp()
.setFooter('Pulled time:'));
embeds.push(new Discord.RichEmbed()
.setTitle('First Messages')
.setImage(img[1])
.setTimestamp()
.setFooter('Pulled time:'));
hook.send(embeds: embeds);
client.login(config.token)
.then(() => console.log("We're in!"))
.catch((err) => console.log(err));
渲染:
【讨论】:
在编写机器人时...为什么要使用 webook?您可以像以前一样简单地创建一个嵌入数组并将其写入您想要的频道。 @dwza 我实际上是在寻找一种在一个嵌入中立即发送它的方法。 webhook 是一次发送多个嵌入的唯一指令。一个优点是通常不受速率限制。但是,是的,通常可以进行多次发送。我想我只是发现了它,并以这种方式使用它而没有多想【参考方案3】:如果需要,您还可以在某些内容旁边添加小图像。请参阅此处的代码。 .setAuthor 和 .setFooter 属性都在 Embed 上使用非常小的图像。
const myEmbed = new Discord.RichEmbed()
.setColor('#0099ff')
.setTitle('Add Jerseyetr')
.setURL('https://steamcommunity.com/id/jerseyetr')
.setAuthor('Midnight Bot', 'IMAGE FILE HERE', 'censored')
.setDescription('')
.setThumbnail('IMAGE FILE HERE')
.addField('How to Gain Access to the Server', '1. Go to the Rules Section and read the rules \n2. Add Jerseyetr on Steam. Link above \n3. Download and install our mods. Check the #information Channel for info')
.addBlankField()
.addField('Mods download:', 'censored', true)
.addField('how to install mods', 'censored', true)
.addField('Vote for our Server', 'censored', true)
.setImage('IMAGE FILE HERE')
.setTimestamp()
.setFooter('Updated 5/20', 'IMAGE FILE HERE');
channel.send(myEmbed);
.setAuthor 属性包含一个小缩略图
【讨论】:
以上是关于是否可以在嵌入中附加多个图像?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以像 Outlook RTF/TNEF 那样在 html 电子邮件中嵌入非图像附件?