first commit
This commit is contained in:
24
discord-bot/commands/clear.js
Normal file
24
discord-bot/commands/clear.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('clear')
|
||||
.setDescription('Clear 1-100 messages')
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
||||
.addNumberOption(option => option
|
||||
.setName('amount')
|
||||
.setDescription('The amount of messages to clear')
|
||||
.setRequired(true)),
|
||||
|
||||
async execute({ interaction, createEmbed, client }) {
|
||||
const amount = interaction.options.getNumber('amount');
|
||||
|
||||
if (amount < 1 || amount > 100) return await interaction.reply({ embeds: [createEmbed.basic('The amount must be between 1-100')] });
|
||||
|
||||
const channel = client.channels.cache.get(interaction.channelId);
|
||||
|
||||
channel.bulkDelete(amount);
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic(`Cleared **${amount}** messages`)], ephemeral: true });
|
||||
},
|
||||
};
|
173
discord-bot/commands/music.js
Normal file
173
discord-bot/commands/music.js
Normal file
@@ -0,0 +1,173 @@
|
||||
const { SlashCommandBuilder } = require('discord.js');
|
||||
const { QueryType } = require('discord-player');
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('music')
|
||||
.setDescription('Play and configure music')
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('play')
|
||||
.setDescription('Play music')
|
||||
.addStringOption(option => option
|
||||
.setName('link-or-query')
|
||||
.setDescription('The song or link you want to play')
|
||||
.setRequired(true)))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('skip')
|
||||
.setDescription('Skip current song'))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('stop')
|
||||
.setDescription('Stop current queue'))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('pause')
|
||||
.setDescription('Pause the current song'))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('shuffle')
|
||||
.setDescription('Shuffle the queue'))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('resume')
|
||||
.setDescription('Resume the current song'))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('filter')
|
||||
.setDescription('Apply a filter')
|
||||
.addStringOption(option => option
|
||||
.setName('type')
|
||||
.setDescription('Type of filter')
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{ name: 'Bassboost', value: 'bassboost_low' },
|
||||
{ name: 'Nightcore', value: 'nightcore' },
|
||||
)))
|
||||
.addSubcommand(subcommand => subcommand
|
||||
.setName('volume')
|
||||
.setDescription('Set volume')
|
||||
.addNumberOption(option => option
|
||||
.setName('percentage')
|
||||
.setDescription('The percentage of the volume between 1 and 100')
|
||||
.setRequired(true))),
|
||||
|
||||
async execute({ interaction, createEmbed, client }) {
|
||||
if (!interaction.member.voice.channelId) return await interaction.reply({ embeds: [createEmbed.basic('You are not in a voice channel!')], ephemeral: true });
|
||||
if (interaction.guild.members.me.voice.channelId && interaction.member.voice.channelId !== interaction.guild.members.me.voice.channelId) {
|
||||
return await interaction.reply({ embeds: [createEmbed.basic('You are not in my voice channel!')], ephemeral: true });
|
||||
}
|
||||
|
||||
|
||||
if (interaction.options.getSubcommand() === 'play') {
|
||||
const query = interaction.options.getString('link-or-query');
|
||||
|
||||
const queue = client.player.createQueue(interaction.guild, {
|
||||
ytdlOptions: {
|
||||
filter: 'audioonly',
|
||||
highWaterMark: 1 << 30,
|
||||
dlChunkSize: 0,
|
||||
},
|
||||
metadata: {
|
||||
channel: interaction.channel,
|
||||
},
|
||||
});
|
||||
|
||||
// verify vc connection
|
||||
try {
|
||||
if (!queue.connection) await queue.connect(interaction.member.voice.channel);
|
||||
} catch {
|
||||
queue.destroy();
|
||||
return await interaction.reply({ embeds: [createEmbed.basic('Could not join your voice channel!')], ephemeral: true });
|
||||
}
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic('Searching...')], ephemeral: true });
|
||||
|
||||
const searchResult = await client.player.search(query, {
|
||||
requestedBy: interaction.user,
|
||||
searchEngine: QueryType.AUTO,
|
||||
});
|
||||
if (!searchResult || !searchResult.tracks[0]) return await interaction.editReply({ embeds: [createEmbed.basic(`Track or playlist **${query}** not found!`)], ephemeral: true });
|
||||
|
||||
searchResult.playlist ? queue.addTracks(searchResult.tracks) : queue.addTrack(searchResult.tracks[0]);
|
||||
if (!queue.playing) await queue.play();
|
||||
|
||||
if (!searchResult.playlist) await interaction.editReply({ embeds: [createEmbed.basic(`Adding track **${searchResult.tracks[0].title}**`)], ephemeral: false });
|
||||
else await interaction.editReply({ embeds: [createEmbed.basic(`Adding **${searchResult.playlist.tracks.length}** tracks from playlist **${searchResult.playlist.title}**`)], ephemeral: false });
|
||||
|
||||
} else if (interaction.options.getSubcommand() === 'skip') {
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
const currentTrack = queue.nowPlaying();
|
||||
const success = queue.skip();
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic(success ? `Skipped **${currentTrack.title}**` : 'Something went wrong')] });
|
||||
} else if (interaction.options.getSubcommand() === 'volume') {
|
||||
const vol = interaction.options.getNumber('percentage');
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
if (vol < 1 || vol > 100) return interaction.reply({ embeds: [createEmbed.basic('Volume must be between 1 and 100')] });
|
||||
|
||||
const success = queue.setVolume(vol);
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic(success ? `Volume set to **${vol}%**` : 'Something went wrong')] });
|
||||
} else if (interaction.options.getSubcommand() === 'stop') {
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
queue.destroy();
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic('Stopped the player')] });
|
||||
} else if (interaction.options.getSubcommand() === 'pause') {
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
queue.setPaused(true);
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic('Paused the player')] });
|
||||
} else if (interaction.options.getSubcommand() === 'resume') {
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
queue.setPaused(false);
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic('Resumed the player')] });
|
||||
} else if (interaction.options.getSubcommand() === 'filter') {
|
||||
const filter = interaction.options.getString('type');
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
if (filter === 'bassboost_low') {
|
||||
await queue.setFilters({
|
||||
bassboost_low: !queue.getFiltersEnabled().includes('bassboost_low'),
|
||||
normalizer2: !queue.getFiltersEnabled().includes('bassboost_low'),
|
||||
});
|
||||
}
|
||||
|
||||
if (filter === 'nightcore') {
|
||||
await queue.setFilters({
|
||||
nightcore: !queue.getFiltersEnabled().includes('nightcore'),
|
||||
});
|
||||
}
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic(queue.getFiltersEnabled().includes(filter) ? `Applied **${filter}** filter` : `Removed **${filter}** filter`)] });
|
||||
} else if (interaction.options.getSubcommand() === 'shuffle') {
|
||||
|
||||
const queue = client.player.getQueue(interaction.guild);
|
||||
|
||||
if (!queue || !queue.playing) return await interaction.reply({ embeds: [createEmbed.basic('No music is being played')] });
|
||||
|
||||
const success = queue.shuffle();
|
||||
|
||||
await interaction.reply({ embeds: [createEmbed.basic(success ? 'The queue has been shuffled' : 'Something went wrong')] });
|
||||
}
|
||||
},
|
||||
};
|
12
discord-bot/commands/ping.js
Normal file
12
discord-bot/commands/ping.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const { SlashCommandBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('ping')
|
||||
.setDescription('Replies with Pong!'),
|
||||
|
||||
async execute({ interaction, createEmbed, client }) {
|
||||
const reply = await interaction.reply({ embeds: [createEmbed.basic(`Websocket heartbeat: **${client.ws.ping}ms**\n Roundtrip latency: **Pinging...**`)], fetchReply: true, ephemeral: true });
|
||||
interaction.editReply({ embeds: [createEmbed.basic(`Websocket heartbeat: **${client.ws.ping}ms**\n Roundtrip latency: **${reply.createdTimestamp - interaction.createdTimestamp}ms**`)], emphemeral: true });
|
||||
},
|
||||
};
|
Reference in New Issue
Block a user