From cf1b2f8f23b6bffe970f8e93aac3029706d4cce9 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Sun, 18 Aug 2024 15:40:46 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20Music=20loop=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NekoMelody | 2 +- src/discord/MusicPlayer/Join.ts | 4 ++-- src/discord/MusicPlayer/Loop.ts | 18 ++++++++---------- src/discord/MusicPlayer/Queue.ts | 9 +++------ src/providers/DiscordMusicPlayer.ts | 14 -------------- 5 files changed, 14 insertions(+), 33 deletions(-) diff --git a/NekoMelody b/NekoMelody index 50f078e..3fbaf7a 160000 --- a/NekoMelody +++ b/NekoMelody @@ -1 +1 @@ -Subproject commit 50f078ed2368e5373f471418a91d9484d43a5c29 +Subproject commit 3fbaf7a7b4c8f5920facbd3c299b10a8f51a1f99 diff --git a/src/discord/MusicPlayer/Join.ts b/src/discord/MusicPlayer/Join.ts index f327a8b..decc3e5 100644 --- a/src/discord/MusicPlayer/Join.ts +++ b/src/discord/MusicPlayer/Join.ts @@ -27,7 +27,6 @@ import DiscordMusicPlayer, { VoiceDisconnectedEvent, ValidTracks, DiscordMusicPlayerInstance, - DiscordMusicPlayerLoopMode, TrackUtils } from '../../providers/DiscordMusicPlayer'; @@ -36,6 +35,7 @@ import Locale from '../../services/Locale'; import { SpotifyTrack, YouTubeVideo } from 'play-dl'; import { checkBotPermissionsInChannel } from '../../utils/DiscordPermission'; import { AudioInformation } from '../../../NekoMelody/src/providers/base'; +import { LoopMode } from '../../../NekoMelody/src/player'; const EMBEDS = { VOICECHANNEL_JOINED: (data: HybridInteractionMessage, locale: I18n) => { @@ -257,7 +257,7 @@ export async function joinVoiceChannelProcedure( ]); if (event.instance.textChannel) { - if (event.instance.getLoopMode() === DiscordMusicPlayerLoopMode.Current) { + if (event.instance.nekoPlayer.getLoopMode() === LoopMode.Current) { isLoopMessageSent = true; await sendMessage(event.instance.textChannel, undefined, { embeds: [await EMBEDS.NOW_REPEATING(data, locale, current)], diff --git a/src/discord/MusicPlayer/Loop.ts b/src/discord/MusicPlayer/Loop.ts index e49877c..1b23990 100644 --- a/src/discord/MusicPlayer/Loop.ts +++ b/src/discord/MusicPlayer/Loop.ts @@ -1,7 +1,8 @@ import { I18n } from 'i18n'; 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 DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule'; @@ -18,7 +19,7 @@ const EMBEDS = { user: data.getUser() }); }, - LOOP_STATUS: (data: HybridInteractionMessage, locale: I18n, loopMode: DiscordMusicPlayerLoopMode) => { + LOOP_STATUS: (data: HybridInteractionMessage, locale: I18n, loopMode: LoopMode) => { let embed = makeInfoEmbed({ title: locale.__('musicplayer_loop.info', { MODE: loopMode @@ -28,7 +29,7 @@ const EMBEDS = { }); return embed; }, - LOOP_SET: (data: HybridInteractionMessage, locale: I18n, loopMode: DiscordMusicPlayerLoopMode) => { + LOOP_SET: (data: HybridInteractionMessage, locale: I18n, loopMode: LoopMode) => { let embed = makeSuccessEmbed({ title: locale.__('musicplayer_loop.loop_set', { MODE: loopMode @@ -112,18 +113,15 @@ export default class Loop extends DiscordModule { if (!query) return await sendHybridInteractionMessageResponse(data, { - embeds: [EMBEDS.LOOP_STATUS(data, locale, instance.getLoopMode())] + embeds: [EMBEDS.LOOP_STATUS(data, locale, instance.nekoPlayer.getLoopMode())] }); - let enumKey = - Object.keys(DiscordMusicPlayerLoopMode)[ - Object.values(DiscordMusicPlayerLoopMode).indexOf(query.toLowerCase()) - ]; + let enumKey = Object.keys(LoopMode)[Object.values(LoopMode).indexOf(query.toLowerCase())]; if (enumKey) { - instance.setLoopMode(DiscordMusicPlayerLoopMode[enumKey as keyof typeof DiscordMusicPlayerLoopMode]); + instance.nekoPlayer.setLoopMode(LoopMode[enumKey as keyof typeof LoopMode]); return await sendHybridInteractionMessageResponse(data, { - embeds: [EMBEDS.LOOP_SET(data, locale, instance.getLoopMode())] + embeds: [EMBEDS.LOOP_SET(data, locale, instance.nekoPlayer.getLoopMode())] }); } diff --git a/src/discord/MusicPlayer/Queue.ts b/src/discord/MusicPlayer/Queue.ts index b8e31a1..58c3e14 100644 --- a/src/discord/MusicPlayer/Queue.ts +++ b/src/discord/MusicPlayer/Queue.ts @@ -1,11 +1,7 @@ import { Message, CommandInteraction } from 'discord.js'; import { I18n } from 'i18n'; -import DiscordMusicPlayer, { - DiscordMusicPlayerInstance, - DiscordMusicPlayerLoopMode, - TrackUtils -} from '../../providers/DiscordMusicPlayer'; +import DiscordMusicPlayer, { DiscordMusicPlayerInstance, TrackUtils } from '../../providers/DiscordMusicPlayer'; import Locale from '../../services/Locale'; import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule'; @@ -15,6 +11,7 @@ import { makeSuccessEmbed, makeInfoEmbed } from '../../utils/DiscordMessage'; +import { LoopMode } from '../../../NekoMelody/src/player'; const EMBEDS = { QUEUE: (data: HybridInteractionMessage, locale: I18n, instance: DiscordMusicPlayerInstance) => { @@ -29,7 +26,7 @@ const EMBEDS = { }); const nowPlayingText = `${ - instance.getLoopMode() === DiscordMusicPlayerLoopMode.Current + instance.nekoPlayer.getLoopMode() === LoopMode.Current ? ` ${locale.__('musicplayer_queue.looping_current')}` : '' }: [${current.metadata.title}](${current.metadata.url})`; diff --git a/src/providers/DiscordMusicPlayer.ts b/src/providers/DiscordMusicPlayer.ts index 7a76be2..3ce00f0 100644 --- a/src/providers/DiscordMusicPlayer.ts +++ b/src/providers/DiscordMusicPlayer.ts @@ -182,11 +182,6 @@ export class VoiceDisconnectedEvent { } } -export enum DiscordMusicPlayerLoopMode { - None = 'none', - Current = 'current' -} - export class DiscordMusicPlayerInstance { public queue: Queue; public discordPlayer: AudioPlayer; @@ -197,7 +192,6 @@ export class DiscordMusicPlayerInstance { public previousTrack?: ValidTracks; public paused: boolean = false; - public loopMode: DiscordMusicPlayerLoopMode = DiscordMusicPlayerLoopMode.None; public readonly events: EventEmitter; @@ -373,14 +367,6 @@ export class DiscordMusicPlayerInstance { this.queue.track = shuffleFixedFirst(this.queue.track); } - public setLoopMode(mode: DiscordMusicPlayerLoopMode) { - this.loopMode = mode; - } - - public getLoopMode() { - return this.loopMode; - } - public getPreviousTrack(): ValidTracks | undefined { return this.previousTrack; }