Discord.js - 如何编辑 message.embed() 语句?

新手上路,请多包涵

我正在执行一个 ping 命令——它的编码非常简单,但我完全不知道如何编辑我正在使用的嵌入。这是我的代码 - 我正在使用解释 exports.run 语句的命令处理程序。

 const Discord = require('discord.js')

exports.run = (bot, message, args) => {
const pingUpdate = new Discord.MessageEmbed()
.setColor('#0099ff')
.setDescription('pinging...')
message.channel.send(pingUpdate);
}

exports.help = {
  name: 'ping'
}

我需要编辑 ping 更新嵌入以使 .description 编辑来执行此操作(简单的 ping 计算)

 message.channel.send('pinging...').then((m) => m.edit(`${m.createdTimestamp - message.createdTimestamp}ms`))

这将使描述从“ping…”更改为“ example ms”

先感谢您

原文由 meropis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
2 个回答

您实际上不必创建新的嵌入。您可以编辑原始文件:

更新:根据 文档,建议创建新嵌入,但您可以使用原始嵌入来预填充新嵌入。然后,只需更新您需要的内容并使用新的嵌入编辑消息:

 // the original embed posted during collected.on('end')
const embed = new MessageEmbed()
                    .setColor('0xff4400')
                    .setTitle(`My Awesome Embed`)
                    .setDescription('\u200b')
                    .setAuthor(collected.first().user.username, collected.first().user.displayAvatarURL())
                    .setImage(`https://via.placeholder.com/400x300.png/808080/000000?text=Placeholder`)
                    .setTimestamp(new Date())
                    .setThumbnail('https://via.placeholder.com/200x200.png/808080/000000?text=Placeholder');

// In the original embed, I have a placeholder image that the user
// can replace by posting a new message with the image they want
client.on('messageCreate', async message => {
    // adding image to original embed
    if (message.attachments.size > 0 && !message.author.bot) {
        // get all messages with attachments
        const messages = await client.channels.cache.get('<CHANNEL>').messages.fetch();

        // get the newest message by the user
        const d = messages.filter(msg => msg.embeds.length > 0).filter(m => message.author.username === m.embeds[0].author.name).first();

        // create new embed using original as starter
        const tempEmbed = new MessageEmbed(d.embeds[0])

        // update desired values
        tempEmbed.setImage(message.attachments.first().url);

        // edit/update the message
        d.edit({ embeds: [tempEmbed] });

        // delete the posted image
        message.delete();
    }
});

原文由 tukool 发布,翻译遵循 CC BY-SA 4.0 许可协议

你走对了。但是对于 .setDescription 你需要创建新的 Embed 构造函数并添加描述。

 message.channel.send('pinging...').then(msg => {
    let embed = new Discord.MessageEmbed() //For discord v11 Change to new Discord.RichEmbed()
        .setDescription(`${msg.createdTimestamp - message.createdTimestamp}`)
    msg.edit(embed)
})

另外,除了做 msg.createTimeStamp - message.createdTimestamp 你也可以做 bot.ping.toFixed(2)

原文由 Cipher 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题