Updated music
This commit is contained in:
@@ -5,6 +5,7 @@ import nowplaying from "./music/nowplaying.js"
|
||||
import pause from "./music/pause.js"
|
||||
import play from "./music/play.js"
|
||||
import queue from "./music/queue.js"
|
||||
import repeat from "./music/repeat.js"
|
||||
import skip from "./music/skip.js"
|
||||
import unpause from "./music/unpause.js"
|
||||
import volume from "./music/volume.js"
|
||||
@@ -54,6 +55,22 @@ export default {
|
||||
.setDescription("The amount of songs to skip")
|
||||
)
|
||||
)
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand
|
||||
.setName("repeat")
|
||||
.setDescription("Set repeat mode")
|
||||
.addStringOption(option =>
|
||||
option
|
||||
.setName("mode")
|
||||
.setDescription("The repeat mode")
|
||||
.addChoices(
|
||||
{ name: "Off", value: "off" },
|
||||
{ name: "Track", value: "track" },
|
||||
{ name: "Queue", value: "queue" }
|
||||
)
|
||||
.setRequired(true)
|
||||
)
|
||||
)
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand
|
||||
.setName("queue")
|
||||
@@ -100,6 +117,11 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
if (subcommand === "repeat") {
|
||||
repeat(interaction)
|
||||
return
|
||||
}
|
||||
|
||||
if (subcommand === "queue") {
|
||||
queue(interaction)
|
||||
return
|
||||
|
||||
@@ -19,7 +19,8 @@ const cmd: SubCommand = async (interaction) => {
|
||||
return
|
||||
}
|
||||
|
||||
// const bitRate = channel.bitrate / 1000
|
||||
let replyMessage: string = ""
|
||||
const queue = player.queues.get(interaction.guildId!)
|
||||
|
||||
const { track } = await player.play(channel, query, {
|
||||
requestedBy: interaction.user,
|
||||
@@ -28,9 +29,15 @@ const cmd: SubCommand = async (interaction) => {
|
||||
}
|
||||
})
|
||||
|
||||
if (queue) {
|
||||
replyMessage = `Added [${track.title}](${track.url}) to the queue`
|
||||
} else {
|
||||
replyMessage = `Playing [${track.title}](${track.url})`
|
||||
}
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [{
|
||||
description: `Playing [${track.title}](${track.url})`,
|
||||
description: replyMessage,
|
||||
thumbnail: {
|
||||
url: track.thumbnail
|
||||
},
|
||||
|
||||
40
src/commands/music/repeat.ts
Normal file
40
src/commands/music/repeat.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { QueueRepeatMode, useMainPlayer } from "discord-player"
|
||||
import { embedColor } from "~/config/options.js"
|
||||
import { SubCommand } from "~/typings"
|
||||
|
||||
const QueueRepeatModes = {
|
||||
"off": QueueRepeatMode.OFF,
|
||||
"track": QueueRepeatMode.TRACK,
|
||||
"queue": QueueRepeatMode.QUEUE
|
||||
}
|
||||
|
||||
type RepeatMode = keyof typeof QueueRepeatModes
|
||||
|
||||
const cmd: SubCommand = async (interaction) => {
|
||||
await interaction.deferReply()
|
||||
|
||||
const mode = interaction.options.getString("mode") as RepeatMode
|
||||
const player = useMainPlayer()
|
||||
const queue = player.queues.get(interaction.guildId!)
|
||||
|
||||
if (!queue) {
|
||||
await interaction.editReply({
|
||||
embeds: [{
|
||||
description: "There is no queue",
|
||||
color: embedColor
|
||||
}]
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
queue.setRepeatMode(QueueRepeatModes[mode])
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [{
|
||||
description: `Repeat mode set to ${mode}`,
|
||||
color: embedColor
|
||||
}]
|
||||
})
|
||||
}
|
||||
|
||||
export default cmd
|
||||
@@ -1,3 +1,4 @@
|
||||
import { DefaultExtractors } from "@discord-player/extractor"
|
||||
import { Player } from "discord-player"
|
||||
import { YoutubeiExtractor } from "discord-player-youtubei"
|
||||
import { Redis } from "ioredis"
|
||||
@@ -20,8 +21,7 @@ if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") {
|
||||
class Illegitimate {
|
||||
async start() {
|
||||
await loadAllEvents(client, ft)
|
||||
// await player.extractors.loadDefault()
|
||||
await player.extractors.loadDefault(ext => ext != "YouTubeExtractor")
|
||||
await player.extractors.loadMulti(DefaultExtractors)
|
||||
await player.extractors.register(YoutubeiExtractor, {})
|
||||
await client.start()
|
||||
await this.databases()
|
||||
|
||||
Reference in New Issue
Block a user