🐛 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,
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)],
+8 -10
View File
@@ -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())]
});
}
+3 -6
View File
@@ -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})`;
-14
View File
@@ -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;
}