const { EmbedBuilder } = require('discord.js'); const { playSong, getCurrentProgress, formatDuration, safeCleanup } = require('../utils/player'); const { getQueueOrReply } = require('../utils/helpers'); function handleSeek(interaction, queues) { const queue = getQueueOrReply(interaction, queues, 'Nothing is playing!'); if (!queue || queue.songs.length === 0) { if (queue) interaction.reply('Nothing is playing!'); return; } if (queue.isSeeking) { return interaction.reply('Already seeking, please wait!'); } const seconds = interaction.options.getInteger('seconds'); const progress = getCurrentProgress(queue); if (!progress) { return interaction.reply('Cannot seek right now!'); } let newPosition = progress.elapsed + seconds; const song = queue.songs[0]; if (newPosition < 0) { newPosition = 0; } if (newPosition >= song.duration) { queue.player.stop(); return interaction.reply('Skipped to next song!'); } queue.isSeeking = true; safeCleanup(queue, 'Seek'); queue.player.stop(); console.log(`[SEEK] Guild: ${interaction.guild.id}, From: ${progress.elapsed}s, To: ${newPosition}s`); playSong(interaction.guild.id, queue, newPosition); const embed = new EmbedBuilder() .setColor(0x00ff00) .setDescription(`⏩ Seeking to ${formatDuration(newPosition)} / ${formatDuration(song.duration)}`); interaction.reply({ embeds: [embed] }); } module.exports = { handleSeek };