Discord.js 使用来自其他消息的附件来更新嵌入中的图像
Posted
技术标签:
【中文标题】Discord.js 使用来自其他消息的附件来更新嵌入中的图像【英文标题】:Discord.js use Attachment from other Message to update Image in Embed 【发布时间】:2021-09-04 16:49:32 【问题描述】:我正在从 Canvas 生成一张图片(位于 imageBuffer
),并从中制作一个 MessageAttachment:
const attachment = new MessageAttachment(imageBuffer, "bufferedImg.png");
然后我创建一个像这样的嵌入对象,其中包含图像作为文件附件:
const messageObj =
embed:
title: "The Image",
files: [
attachment
],
image:
url: 'attachment://bufferedImg.png'
我第一次将这个对象发送到文本通道 ( this.channel.send(messageObj).then(msg => this.displayMessage = msg
) 时,它的工作原理应该是这样。它发布了带有图片的嵌入。
但是当我生成新图片/附件,重新创建嵌入对象,然后编辑嵌入以使用该新附件 ( this.displayMessage.edit(messageObj)
) 时,它不起作用。
图片没有更新。
我还尝试给它一个随机名称,以确保它不只是使用旧的缓存图像 - 这只是将旧图片从嵌入中断开 - 但新图片没有出现。
在另一个 *** 帖子中,有人说 Discord API 不允许您更新消息的附件。但也有人说,你可以更改图片网址。
所以,我的想法是,发送带有新图片作为附件的新消息。然后在旧邮件中,把图片的url改成新邮件的附件。
例如,我发布了一条包含 bufferedImg2.png 作为附件的新消息,在旧消息中,链接指向attachment://bufferedImg.png
,我只是将其更改为使用newMessage:attachment://bufferedImg2.png
。
问题是: 如何使网址指向另一封邮件的附件?
【问题讨论】:
这能回答你的问题吗? How do I edit an image inside an embed discord? @Ant 不,它没有。这就是我所指的帖子“在另一个 *** 帖子中,有人说 Discord API 不允许您更新消息的附件。但也有人说,您可以更改图像 url。” 从我从 DiscordJS 中读到的内容,您可以更改图像的 url,但不能更改上传图像的 url,例如,如果您将链接发送到 gif,您可以更改该链接,它应该更改预览。 我建议尝试npm i discordjs/discord.js
,它安装了可以执行所有新功能的 in-dev 版本,但很可能会破坏一些旧代码。
【参考方案1】:
使用最新的 discordjs (13.0.1) (Typescript) 来实现这一点:
1.创建并发送您要更新的第一条消息。
let embed = new MessageEmbed().setImage(INSERT_YOUR_FIRST_URL)
const displayMessage = await channel.send( embeds: [embed] )
2。发送第二条消息并获取 URL。如果您想保持频道干净,可以将其发送到其他频道或服务器
const msg = await channel.send( files: [attachment] )
const url = msg.attachments.first()?.url ?? '';
3.编辑您的第一条消息。
embed = new MessageEmbed().setImage(url)
displayMessage.edit( embeds: [embed] )
【讨论】:
哦,哇,我认为我的想法很荒谬而且不可能,但这确实有效。这正是我想要的。非常感谢! 我的想法是一样的,因为 discordjs 版本之间的语法有很多变化,这使得大多数指南和教程都被弃用了。不客气,祝你好运:)。以上是关于Discord.js 使用来自其他消息的附件来更新嵌入中的图像的主要内容,如果未能解决你的问题,请参考以下文章