Discord.js - 在以下代码中更新 MessageEmbed

Posted

技术标签:

【中文标题】Discord.js - 在以下代码中更新 MessageEmbed【英文标题】:Discord.js - Updating a MessageEmbed in the following code 【发布时间】:2020-11-22 21:25:08 【问题描述】:

所以,我有(这只是其中的一部分)以下代码,但我无法弄清楚整个更新已发送的嵌入内容...

如果我每次都发送一个新的嵌入,编码就可以正常工作,但我不想弄乱频道;因此尝试更新第一个嵌入。

代码:

const filter = m => m.author.id === message.author.id;
let hangembedStart = new Discord.MessageEmbed()
    .setDescription("Let's get started!")
    .setColor('#0099ff')
    .setThumbnail(sicon)
    .addField('Word:', asterisc)
message.channel.send(hangembedStart);
const collector = message.channel.createMessageCollector(filter, 
    maxMatches: 9,
    time: 30000
);
collector.on('collect', m => 
    if (m.content === 'cancel') 
        inProgress = false;
        delete guessed;
        collector.stop();
        return;
    
    if (lowChar === text) 
        message.channel.send(`Congratulations, you guessed the word!`);
        inProgress = false;
        delete guessed;
        collector.stop();
        return;
    
    let hits = checkChar(lowChar, text);
    if (hits === 0) 
        let hangembedGuess = new Discord.MessageEmbed()
            .setDescription("Hangman - The Game - In progress")
            .setColor('#0099ff')
            .setThumbnail(sicon)
            .addField('Word:', reveal)
            .addField('Guessed:', guessed.join(" "))
        message.channel.send(hangembedGuess);
     else if (hits > 0) 
        let hangembedGuess = new Discord.MessageEmbed()
            .setDescription("Hangman - The Game - In progress")
            .setColor('#0099ff')
            .setThumbnail(sicon)
            .addField('Word:', reveal)
            .addField('Guessed:', guessed.join(" "))
        message.channel.send(hangembedGuess);
    
);
collector.on('end', collected => 
    message.channel.send(`Game ended, word was: $text!`);
    inProgress = false;
    delete guessed;
    //collector.stop();
);

如何...我可以更新此代码中的第一个嵌入,而不是每次都发送一个新的? 我尝试使用 message.edit() 但这会触发: UnhandledPromiseRejectionWarning:DiscordAPIError:无法编辑由其他用户创作的消息

我已经在谷歌上搜索、阅读、搜索、尝试、测试了我遇到的所有内容,但无法完全理解这个......

【问题讨论】:

你是如何触发消息发送的?它可能不起作用的原因是因为您正在尝试编辑该人发送的消息,而不是编辑机器人发送的嵌入。 嗯,我怀疑这也是问题所在。这是代码; ``` 代码在哪里 代码太长,无法发表评论,但我将其发布在 Pastebin 上。 pastebin.com/YpJk0sJD 您可以获取机器人在频道中发送的最后一条消息并进行编辑 【参考方案1】:

整理好了!!

添加了以下行:

const hangmanMessage = await message.channel.send(hangembedStart);
//above
const filter = m => m.author.id === message.author.id;

然后更改以下行:

message.channel.send(hangembedGuess);
//to this
hangmanMessage.edit(hangembedGuess);

现在它会更新第一个嵌入,而不是每次都发送一个新嵌入:D

【讨论】:

以上是关于Discord.js - 在以下代码中更新 MessageEmbed的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Discord.js 中检查消息是不是为 DM?

如何在 discord.js 中使用审核日志的成员角色更新部分

在 discord.js 中的时间限制之前获取收集的消息

Discord.js 从反应中获取用户**更新**

需要帮助将 Bot 更新到 Discord.js v12

命令冷却 discord.js