mirror of
https://github.com/kirameki-cafe/Yumi.git
synced 2026-09-13 10:49:20 +00:00
🐛 fix: Music loop mode
This commit is contained in:
+1
-1
Submodule NekoMelody updated: 50f078ed23...3fbaf7a7b4
@@ -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)],
|
||||||
|
|||||||
@@ -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())]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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})`;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user