当前位置: 首页 > 知识库问答 >
问题:

不一致js使用来自其他消息的附件更新嵌入中的图像

国跃
2023-03-14

我从画布生成图片(它在ImageBuffer中),并从它制作一个MessageAtt法规:

const attachment = new MessageAttachment(imageBuffer, "bufferedImg.png");

然后,我创建一个嵌入对象,如下所示,其中包括作为文件附件的图像:

const messageObj = {
  embed: {
    title: "The Image",
    files: [
        attachment
    ],
    image: {
        url: 'attachment://bufferedImg.png'
    }
  }
}

第一次将此对象发送到文本频道(this.channel.send(messageObj)),然后(msg=

图片没有更新。

我还尝试给它一个随机的名字,以确保它不仅仅使用旧的缓存图像-这只是断开了旧图片与嵌入-但新图片没有出现。

在另一篇Stackoverflow文章中,有人说Discord API不允许您更新邮件的附件。但也有人说,你可以改变图片的url。

所以,我的想法是,以新图片作为附件发送一条新消息。然后在旧消息中,将图像的url更改为新消息的附件。例如,我发布了一条包含bufferedImg2的新消息。png作为附件,在旧消息中,链接指向attachment://bufferedImg.png,我只是将其更改为使用newMessage:attachment://bufferedImg2.png

问题是:如何使url指向另一条消息的附件?


共有1个答案

昝阳嘉
2023-03-14

要使用最新的discordjs(13.0.1)(Typescript)实现这一点,请执行以下操作:

1.创建

let embed = new MessageEmbed().setImage(INSERT_YOUR_FIRST_URL)
const displayMessage = await channel.send({ embeds: [embed] })

2.发送第二条消息

const msg = await channel.send({ files: [attachment] })
const url = msg.attachments.first()?.url ?? '';

3.编辑您的第一条信息。

embed = new MessageEmbed().setImage(url)
displayMessage.edit({ embeds: [embed] })
 类似资料:
  • 我有一些不和谐的问题 我有3个嵌入:embed1、embed2、embed3,但当我尝试发送带有以下代码的消息的嵌入时: 我得到这个错误: (节点:24120)未处理的PromisejectionWarning:DiscordAPIError:无法发送空消息

  • bot发送嵌入消息,但仅发送文本而不发送gif。我有一个单独的gif文件。json文件,因此当有人使用该命令时,会有不同的GIF。但由于某种原因,它不起作用。也许是因为天气原因。json文件?我真的不知道,请帮帮我。我的代码: 该代码为。json文件: (我知道,它只有一个gif。) 当两个文件都在一个文件夹中时,我在控制台中出现的错误:图片:https://i.stack.imgur.com/8

  • 我试图用分片机器人向特定频道发送嵌入消息。我已经成功地用这个代码发送了一个简单的消息: 当我想发送嵌入消息时,问题就开始了。我尝试过这样传递变量: 但是消息是像“[object]”一样发送的。 我想过将通道对象返回到广播Eval之外,然后发送我的变量,但是我已经读到这是不可能的,因为你不能返回完整的不和谐对象。 我应该如何发送嵌入消息?谢谢你的时间。

  • 我不和谐。关于repl的js初学者。信息技术 代码: 但是控制台发送这样的错误: 有人能看出我错在哪里吗?

  • 所以我想做一个命令,允许某人发送嵌入消息,他们可以决定描述和颜色,不需要标题。嵌入说明-颜色#00000)。那是我的代码: 但是它不起作用,而且我是不和谐的新手。js,有人能修好我的代码吗?

  • 我有一个表,它有一个主键,这个主键是用table Generator生成的: @tablegenerator(name=“resourceidgenerator”,table=“sequence”,pkColumnName=“name”,pkColumnValue=“resource_type_id”,valueColumnName=“nextid”,allocationSize=1),它工作得很