更新'Now Playing'嵌入到不和谐音乐机器人中



我正在制作一个以播放音乐为主要功能的discord机器人。我现在有一个正在播放命令,它会显示你在歌曲中的位置,我想每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);
}
};

您可以使用setInterval()定期编辑嵌入,然后使用clearInterval()停止编辑(歌曲完成后(。它们是这样工作的:

var countdown = 10;
// this is fine, except it doesn't stop at 0
setInterval(() => console.log(countdown--), 1000);

// we can use `clearInterval()` to stop the interval once it gets to 0
var countdown = 10;
const interval = setInterval(() => {
console.log(countdown--);
if (countdown < 0) clearInterval(interval);
}, 1000);

最新更新