搜索命令对音乐机器人不起作用,它只是重播歌曲。如果用户把它放在一首歌曲的 1:00 之类的时间,则搜索命令是 sospport。我没有错误。代码如下:
module.exports = {
name : 'seek',
description: 'Pick a time',
usage : "<time>",
run : async (client , message , args) => {
const serverQueue = message.client.queue.get(message.guild.id);
let channel = message.member.voice.channel;
if (!channel)return message.channel.send("Join a voice channel to play music!")
if (!serverQueue) return message.channel.send("No songs to seek");
try {
const curDuration = (serverQueue.songs[0].durationm * 60000) + ((serverQueue.songs[0].durations % 60000) * 1000);
const choiceDur = args.join(" ").split(":");
if (choiceDur.length < 2) return message.channel.send("No duration provided or invalid ?");
const optDurr = (parseInt(choiceDur[0], 10) * 60000) + ((parseInt(choiceDur[1], 10) % 60000) * 1000);
if (optDurr > curDuration) return message.channel.send("Your duration is too big");
serverQueue.songs.splice(1, 0, serverQueue.songs[0]);
return serverQueue.connection.dispatcher.end()
} catch (e) {
return message.channel.send(`Oh no an error occured : \`${e.message}\` try again later`)
}
}
}
感谢任何帮助!!!
我试过了
serverQueue.connection.dispatcher.seek()
serverQueue.connection.dispatcher.seek(choiceDur)
serverQueue.connection.dispatcher.end(choiceDur)
serverQueue.connection.dispatcher.end()
答案 0 :(得分:1)
要明确 connection.dispatcher
是 Stream follow docs 没有名为 seek()
或 end()
的方法。
要在特定时间播放歌曲,您应该停止当前流并在特定时间开始新流。
解决方案:
serverQueue.connection.play(serverQueue.currentSong, {seek: ms / 1000});
//serverQueue.currentSong is stream type
有关更多信息:VoiceConnection#play 需要第二个 StreamOptions 参数。 注意流式传输类型并非每种类型都可以搜索