woomy/commands/movesong.js

54 lines
1.8 KiB
JavaScript

// Copyright 2020 Emily J. / mudkipscience and contributors. Subject to the AGPLv3 license.
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: 'User',
requiredPerms: [],
cooldown: 2000
}
exports.help = {
name: 'movesong',
category: 'Music',
description: 'Moves a song to a new position in the queue.',
usage: 'movesong [current position] [new position]',
parameters: '[current position] - The current position of the song you want to move'
}
const { getGuild } = require('../utils/music')
module.exports.run = (client, message, args, level) => {
const queue = getGuild(message.guild.id).queue
const oldPosition = +args[0]
const newPosition = +args[1]
const songName = queue[oldPosition].video.title
if (queue.length < 3) {
return message.channel.send('<:error:466995152976871434> Not enough songs are in the queue for this command to work!')
}
if (!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't tell me what song to move! Usage: \`${client.commands.get('removesong').help.usage}\``)
}
if (!args[1]) {
return message.channel.send(`<:error:466995152976871434> You didn't tell me what position in the queue you want to move this song to! Usage: \`${client.commands.get('removesong').help.usage}\``)
}
if (isNaN(oldPosition) === true || isNaN(newPosition) === true) {
return message.channel.send('That isn\'t a number! You need to tell me the songs position in the queue (1, 2, etc.)')
}
if (newPosition >= queue.length) {
var k = newPosition - queue.length + 1
while (k--) {
queue.push(undefined)
}
}
queue.splice(newPosition, 0, queue.splice(oldPosition, 1)[0])
message.channel.send(`Moved **${songName}** from position \`${oldPosition}\` to \`${newPosition}\``)
}