更新 Discord Music Bot 中嵌入的“正在播放”

我正在制作一个主要功能是播放音乐的不和谐机器人。我有一个正在播放的命令,它会显示您在歌曲中的进度,我想每 5 秒左右进行一次更新。我知道编辑嵌入,但我需要它一直循环直到歌曲停止。这是现在的代码:


const createBar = require("string-progressbar");

const { MessageEmbed } = require("discord.js");


module.exports = {

  name: "np",

  description: "Show now playing song",

  execute(message) {

    const queue = message.client.queue.get(message.guild.id);

    if (!queue) return message.reply(`Nothing's playing right now!`).catch(console.error);

    const song = queue.songs[0];

    const seek = (queue.connection.dispatcher.streamTime - queue.connection.dispatcher.pausedTime) / 1000;

    const left = song.duration - seek;


    let nowPlaying = new MessageEmbed()

      .setTitle("Now playing:")

      .setDescription(`${song.title}\n\`Requested by:\` ${message.author}`)

      .setColor("#ff0000")

      .setThumbnail('https://img.icons8.com/clouds/2x/play.png')

      .addField(

        "\u200b",

        new Date(seek * 1000).toISOString().substr(11, 8) +

          "[ " +

          createBar(song.duration == 0 ? seek : song.duration, seek, 10)[0] +

          "] " +

          (song.duration == 0 ? " ◉ LIVE" : new Date(song.duration * 1000).toISOString().substr(11, 8)),

        false

      );


    if (song.duration > 0)

      nowPlaying.setFooter("Time Remaining: " + new Date(left * 1000).toISOString().substr(11, 8));


    return message.channel.send(nowPlaying);

  }

};


拉莫斯之舞
浏览 131回答 1
1回答

皈依舞

您可以使用 定期编辑嵌入setInterval(),然后使用 停止编辑(一旦歌曲完成)clearInterval()。他们是这样工作的:var countdown = 10;// this is fine, except it doesn't stop at 0setInterval(() => console.log(countdown--), 1000);// we can use `clearInterval()` to stop the interval once it gets to 0var countdown = 10;const interval = setInterval(() => { console.log(countdown--); if (countdown < 0) clearInterval(interval);}, 1000);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript