如何使用您的机器人Discord.js编辑嵌入?

时间:2020-04-20 17:02:22

标签: discord.js

我该如何编辑与机器人绑定的已发送嵌入内容?首先,我构造了一个嵌入:

const countdownEmbed = {
color: 0x0099ff,
title:('Countdown'),
author: {
    name:`${user_name}`,
    icon_url: `${user_pfp}`,
},
description: 'Your countdown starts in **3 seconds**',
thumbnail: {
    url: `${client_pfp}`,
},
timestamp: new Date(),
footer: {
    text: `© ${client_name}`, 
    icon_url: `${client_pfp}`,
},
};

然后我进行了新的嵌入:

const countdownEmbed2 = {
    title:("New title!"),
    description: 'Your countdown starts in **2 seconds**',
};

创建“已更新”嵌入后,我尝试发送消息,然后过一秒钟对其进行编辑:

message.channel.send({ embed: countdownEmbed })
.then((msg)=> {
    setTimeout(function(){
        msg.edit(countdownEmbed2);
    }, 1000)
});

我的代码仅发送初始嵌入,不对其进行编辑。但是,如果我将CountEmbed2中的msg.edit(countdownEmbed2)更改为字符串,它将在Discord中编辑消息本身,但不会编辑嵌入内容。有没有办法来解决这个问题?还是有一种更简单的方法来编辑嵌入?

2 个答案:

答案 0 :(得分:1)

我不确定为什么,但是经过测试后,我得出的结论是您的问题是由您编写嵌入内容的方式引起的。

如果您使用MessageEmbed构造函数(如果您使用discord.js v11是RichEmbed),它将起作用。

在测试时有效:

const countdownEmbed = new MessageEmbed()
    .setDescription('test1')

const countdownEmbed2 = new MessageEmbed()
    .setDescription('test2')
    .setColor('RED')

message.channel.send({ embed: countdownEmbed }).then((msg) => {
    setTimeout(function () {
        msg.edit(countdownEmbed2);
    }, 1000)
})

答案 1 :(得分:0)

以下是编辑示例

const editEmbed = new Discord.MessageEmbed()
  .setDescription('this is the old description')
message.channel.send(editEmbed).then((m) => 
m.edit(editEmbed.setDescription('this is the new description')))

让我知道这是否有效