🐛 fix: Music loop mode

This commit is contained in:
2024-08-18 15:40:46 +07:00
parent 4bd13b6378
commit cf1b2f8f23
5 changed files with 14 additions and 33 deletions
+2 -2
View File
@@ -27,7 +27,6 @@ import DiscordMusicPlayer, {
VoiceDisconnectedEvent, VoiceDisconnectedEvent,
ValidTracks, ValidTracks,
DiscordMusicPlayerInstance, DiscordMusicPlayerInstance,
DiscordMusicPlayerLoopMode,
TrackUtils TrackUtils
} from '../../providers/DiscordMusicPlayer'; } from '../../providers/DiscordMusicPlayer';
@@ -36,6 +35,7 @@ import Locale from '../../services/Locale';
import { SpotifyTrack, YouTubeVideo } from 'play-dl'; import { SpotifyTrack, YouTubeVideo } from 'play-dl';
import { checkBotPermissionsInChannel } from '../../utils/DiscordPermission'; import { checkBotPermissionsInChannel } from '../../utils/DiscordPermission';
import { AudioInformation } from '../../../NekoMelody/src/providers/base'; import { AudioInformation } from '../../../NekoMelody/src/providers/base';
import { LoopMode } from '../../../NekoMelody/src/player';
const EMBEDS = { const EMBEDS = {
VOICECHANNEL_JOINED: (data: HybridInteractionMessage, locale: I18n) => { VOICECHANNEL_JOINED: (data: HybridInteractionMessage, locale: I18n) => {
@@ -257,7 +257,7 @@ export async function joinVoiceChannelProcedure(
]); ]);
if (event.instance.textChannel) { if (event.instance.textChannel) {
if (event.instance.getLoopMode() === DiscordMusicPlayerLoopMode.Current) { if (event.instance.nekoPlayer.getLoopMode() === LoopMode.Current) {
isLoopMessageSent = true; isLoopMessageSent = true;
await sendMessage(event.instance.textChannel, undefined, { await sendMessage(event.instance.textChannel, undefined, {
embeds: [await EMBEDS.NOW_REPEATING(data, locale, current)], embeds: [await EMBEDS.NOW_REPEATING(data, locale, current)],
+8 -10
View File
@@ -1,7 +1,8 @@
import { I18n } from 'i18n'; import { I18n } from 'i18n';
import { Message, CommandInteraction } from 'discord.js'; import { Message, CommandInteraction } from 'discord.js';
import DiscordMusicPlayer, { DiscordMusicPlayerLoopMode } from '../../providers/DiscordMusicPlayer'; import DiscordMusicPlayer from '../../providers/DiscordMusicPlayer';
import { LoopMode } from '../../../NekoMelody/src/index';
import Locale from '../../services/Locale'; import Locale from '../../services/Locale';
import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule'; import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule';
@@ -18,7 +19,7 @@ const EMBEDS = {
user: data.getUser() user: data.getUser()
}); });
}, },
LOOP_STATUS: (data: HybridInteractionMessage, locale: I18n, loopMode: DiscordMusicPlayerLoopMode) => { LOOP_STATUS: (data: HybridInteractionMessage, locale: I18n, loopMode: LoopMode) => {
let embed = makeInfoEmbed({ let embed = makeInfoEmbed({
title: locale.__('musicplayer_loop.info', { title: locale.__('musicplayer_loop.info', {
MODE: loopMode MODE: loopMode
@@ -28,7 +29,7 @@ const EMBEDS = {
}); });
return embed; return embed;
}, },
LOOP_SET: (data: HybridInteractionMessage, locale: I18n, loopMode: DiscordMusicPlayerLoopMode) => { LOOP_SET: (data: HybridInteractionMessage, locale: I18n, loopMode: LoopMode) => {
let embed = makeSuccessEmbed({ let embed = makeSuccessEmbed({
title: locale.__('musicplayer_loop.loop_set', { title: locale.__('musicplayer_loop.loop_set', {
MODE: loopMode MODE: loopMode
@@ -112,18 +113,15 @@ export default class Loop extends DiscordModule {
if (!query) if (!query)
return await sendHybridInteractionMessageResponse(data, { return await sendHybridInteractionMessageResponse(data, {
embeds: [EMBEDS.LOOP_STATUS(data, locale, instance.getLoopMode())] embeds: [EMBEDS.LOOP_STATUS(data, locale, instance.nekoPlayer.getLoopMode())]
}); });
let enumKey = let enumKey = Object.keys(LoopMode)[Object.values(LoopMode).indexOf(query.toLowerCase())];
Object.keys(DiscordMusicPlayerLoopMode)[
Object.values(DiscordMusicPlayerLoopMode).indexOf(query.toLowerCase())
];
if (enumKey) { if (enumKey) {
instance.setLoopMode(DiscordMusicPlayerLoopMode[enumKey as keyof typeof DiscordMusicPlayerLoopMode]); instance.nekoPlayer.setLoopMode(LoopMode[enumKey as keyof typeof LoopMode]);
return await sendHybridInteractionMessageResponse(data, { return await sendHybridInteractionMessageResponse(data, {
embeds: [EMBEDS.LOOP_SET(data, locale, instance.getLoopMode())] embeds: [EMBEDS.LOOP_SET(data, locale, instance.nekoPlayer.getLoopMode())]
}); });
} }
+3 -6
View File
@@ -1,11 +1,7 @@
import { Message, CommandInteraction } from 'discord.js'; import { Message, CommandInteraction } from 'discord.js';
import { I18n } from 'i18n'; import { I18n } from 'i18n';
import DiscordMusicPlayer, { import DiscordMusicPlayer, { DiscordMusicPlayerInstance, TrackUtils } from '../../providers/DiscordMusicPlayer';
DiscordMusicPlayerInstance,
DiscordMusicPlayerLoopMode,
TrackUtils
} from '../../providers/DiscordMusicPlayer';
import Locale from '../../services/Locale'; import Locale from '../../services/Locale';
import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule'; import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule';
@@ -15,6 +11,7 @@ import {
makeSuccessEmbed, makeSuccessEmbed,
makeInfoEmbed makeInfoEmbed
} from '../../utils/DiscordMessage'; } from '../../utils/DiscordMessage';
import { LoopMode } from '../../../NekoMelody/src/player';
const EMBEDS = { const EMBEDS = {
QUEUE: (data: HybridInteractionMessage, locale: I18n, instance: DiscordMusicPlayerInstance) => { QUEUE: (data: HybridInteractionMessage, locale: I18n, instance: DiscordMusicPlayerInstance) => {
@@ -29,7 +26,7 @@ const EMBEDS = {
}); });
const nowPlayingText = `${ const nowPlayingText = `${
instance.getLoopMode() === DiscordMusicPlayerLoopMode.Current instance.nekoPlayer.getLoopMode() === LoopMode.Current
? ` ${locale.__('musicplayer_queue.looping_current')}` ? ` ${locale.__('musicplayer_queue.looping_current')}`
: '' : ''
}: [${current.metadata.title}](${current.metadata.url})`; }: [${current.metadata.title}](${current.metadata.url})`;
-14
View File
@@ -182,11 +182,6 @@ export class VoiceDisconnectedEvent {
} }
} }
export enum DiscordMusicPlayerLoopMode {
None = 'none',
Current = 'current'
}
export class DiscordMusicPlayerInstance { export class DiscordMusicPlayerInstance {
public queue: Queue; public queue: Queue;
public discordPlayer: AudioPlayer; public discordPlayer: AudioPlayer;
@@ -197,7 +192,6 @@ export class DiscordMusicPlayerInstance {
public previousTrack?: ValidTracks; public previousTrack?: ValidTracks;
public paused: boolean = false; public paused: boolean = false;
public loopMode: DiscordMusicPlayerLoopMode = DiscordMusicPlayerLoopMode.None;
public readonly events: EventEmitter; public readonly events: EventEmitter;
@@ -373,14 +367,6 @@ export class DiscordMusicPlayerInstance {
this.queue.track = shuffleFixedFirst(this.queue.track); this.queue.track = shuffleFixedFirst(this.queue.track);
} }
public setLoopMode(mode: DiscordMusicPlayerLoopMode) {
this.loopMode = mode;
}
public getLoopMode() {
return this.loopMode;
}
public getPreviousTrack(): ValidTracks | undefined { public getPreviousTrack(): ValidTracks | undefined {
return this.previousTrack; return this.previousTrack;
} }