JS:寻找命令而不是寻找音乐机器人

时间:2021-06-03 02:00:18

标签: javascript discord.js

搜索命令对音乐机器人不起作用,它只是重播歌曲。如果用户把它放在一首歌曲的 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()

1 个答案:

答案 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 参数。 注意流式传输类型并非每种类型都可以搜索