Как искать позицию в песне Discord.js ?

#ffmpeg #discord #discord.js #opus

#ffmpeg #Discord #discord.js #opus

Вопрос:

Я сталкиваюсь с некоторыми трудностями при поиске указанной временной метки в текущей песне. У меня есть отдельные файлы для всех моих команд. Я хочу создать seek.js файл, который принимает входные данные в течение определенного времени, а затем передает их в play.js файл (он воспроизводит текущую песню в очереди), но проблема в том, что я, похоже, не могу найти способ, как это сделать.

Это моя команда воспроизведения.

 const { Collector } = require("discord.js");
const ytdlDiscord = require("ytdl-core-discord");
//const play = require("../commands/play");
module.exports = {
    async play(song, message){
        const queue = message.client.queue.get(message.guild.id);

        if(!song){
            setTimeout(function(){
                if(!queue.connection.dispatcher amp;amp; message.guild.me.voice.channel){
                    queue.channel.leave();
                    queue.textChannel.send(`**Cadenza** left successfully`).catch(console.error);
                }
                else return;
            },120000);
            
            message.client.queue.delete(message.guild.id);
            return queue.textChannel.send(`**Music Queue Ended**`);
        }
        let stream = await ytdlDiscord(song.url,{filter: 'audioonly', quality: 'highestaudio', highWaterMark: 1<<25});
        let streamType = song.url.includes("youtube.com") ? "opus" : "ogg/opus";
        queue.connection.on("disconnect", () => message.client.queue.delete(message.guild.id));
        const dispatcher = queue.connection
         .play(stream, {type: streamType, highWaterMark: 1})
         .on("finish", () => {
             if(queue.loop){
                 let last = queue.songs.shift();
                 queue.songs.push(last);
                 module.exports.play(queue.songs[0], message);
             }else{
             queue.songs.shift();
             module.exports.play(queue.songs[0], message);
             }

         })
         .on("error", (err) => {
             console.error(err);
             queue.songs.shift();
             module.exports.play(queue.songs[0], message);
         });
         dispatcher.setVolumeLogarithmic(queue.volume / 100);
        queue.textChannel.send(`Started Playing **${song.title}**`);
    }
};
 

искать команду

 const { play } = require("../include/play");
function timeConvert(str){
    const t = str.split(':');
    let s = 0, m = 1;
    while(t.length > 0){
        s =  m * parseInt(t.pop(),10);
        m = m * 60;
    }
    return s;
}
module.exports = {
    name: 'seek',
    description: 'Seeks to a certain point in the current track.',
    execute(message,args){
        const queue = message.client.queue.get(message.guild.id);
        if(!queue) return message.channel.send("There is no song playing.").catch(console.error);
        queue.playing = true;
        let time = timeConvert(args[0]);
        if( time > queue.songs[0].duration)
          return message.channel.send(`**Input a valid time**`);
        else{
            let time = timeConvert(args[0]) * 1000;
            #main code here
        }
    }
}
 

Как я могу передать переменную time в play(), чтобы текущая песня стремилась к этому значению?