我将如何“刷新”嵌入 discord.js 的不和谐?更多信息下来 vv

Posted

技术标签:

【中文标题】我将如何“刷新”嵌入 discord.js 的不和谐?更多信息下来 vv【英文标题】:How would I "refresh" a discord embed on discord.js? More info down vv 【发布时间】:2021-08-30 21:02:34 【问题描述】:

我在 discord.js 上编写了一个机器人,我想知道如何才能做到这一点,以便在按下按钮后嵌入会刷新?应该发生的是嵌入的敌人值将被更改,但它不会刷新。但它实际上确实改变了值,正如button.channel.send(enemyamt); 所示,我认为它可以通过以下一种(或多种)方式完成:

    刷新一下。显然是通过 message.edit() ?我不知道。 删除邮件,然后重新发送、更新。

我有下面的代码,但是只有 sn-ps,因为我不希望它占用太多空间。是的,我知道它看起来不是最好的哈哈。提前谢谢你:)

    if (button.id === 'charge') 
        enemyamt = 75;
        button.channel.send(enemyamt);
    
    if (button.id === 'rally') 
        //button.channel.send('Vive le Roy');
        //enemyamt = 75;
    
)

client.on('message', message => 
    if (message.content === '!battle') 
        let embed = new Discord.MessageEmbed()
            .setColor('#318CE7')
            .setTitle('Battle')
            .addField('<:rebel:852380749242957824> Rebel Forces', enemyamt + ' hussars\nMorale: ' + enemymor + '%', true)
            .addField('<:HKPL:852380579248341022> HKPL Forces', homeamt + ' hussars\nMorale: ' + homemor + '%', true)
            .setImage('https://media.discordapp.net/attachments/798525635215360003/852027255336599552/unknown.jpeg')
            .setFooter('Niech żyje król')
        
        let btn1 = new disbut.MessageButton()
            .setStyle('red')
            .setLabel('⚔️ Charge')
            .setID('charge')
            //.setDisabled()

        let btn2 = new disbut.MessageButton()
            .setStyle('red')
            .setLabel('???? Rally')
            .setID('rally')
            //.setDisabled()

        message.channel.send( buttons: [btn1, btn2], embed: embed)
    
)```


【问题讨论】:

【参考方案1】:

.send 方法也是一个 Promise 并且回调是消息句柄,所以你可以拿这个句柄并在上面使用 .edit 方法

message.channel.send("My Initial Message").then(msg => 
    msg.edit("My edited Message");
);

【讨论】:

1.非常感谢! 2. 我添加了那个代码,对于“我编辑的消息”,我会再次输入buttons: [btn1, btn2], embed: embed 吗? 3. 再次感谢您:) 您输入的内容与您为 channel.send() 输入的内容完全相同 嗯.. 很有趣。当我这样做时,它会起作用,但前提是我再次键入命令?有没有办法替换原始嵌入或刷新它? (非常感谢) 要复制消息的嵌入,请使用:var embed = button.message.embeds[0]。这样,您可以以相同的方式发送嵌入,但是,我认为您需要复制粘贴按钮代码。 抱歉回复晚了,我该怎么办?就像我会在顶部还是在 client.on 中定义它?什么是按钮代码?谢谢你的问题和迟到的回复

以上是关于我将如何“刷新”嵌入 discord.js 的不和谐?更多信息下来 vv的主要内容,如果未能解决你的问题,请参考以下文章

discord.js - 如何从嵌入中读取数据

discord.js 如何编辑/更新嵌入?

Discord js v12 如果有人对嵌入做出反应,则发送消息

Discord.js 分片,如何使用 broadcastEval 发送嵌入消息?

Discord.js - 如何复制其他机器人嵌入的一部分

如何将 JSON 数据嵌入到 discord.js 中