music: more misc fixes

This commit is contained in:
Cynthia Foxwell 2022-12-10 15:08:58 -07:00
parent c7fe95623c
commit b18cf6f779

View file

@ -138,7 +138,10 @@ async function processPlaylist(
} }
async function createVoiceConnection(guild_id, voice_id, text_id) { async function createVoiceConnection(guild_id, voice_id, text_id) {
const state = {}; const state = {
voice_id,
text_id,
};
const guild = hf.bot.guilds.get(guild_id); const guild = hf.bot.guilds.get(guild_id);
state.connection = hf.bot.joinVoiceChannel({ state.connection = hf.bot.joinVoiceChannel({
@ -148,7 +151,6 @@ async function createVoiceConnection(guild_id, voice_id, text_id) {
selfMute: false, selfMute: false,
voiceAdapterCreator: guild.voiceAdapterCreator, voiceAdapterCreator: guild.voiceAdapterCreator,
}); });
state.text_id = text_id;
state.queue = []; state.queue = [];
state.player = createAudioPlayer(); state.player = createAudioPlayer();
state.connection.subscribe(state.player); state.connection.subscribe(state.player);
@ -169,8 +171,8 @@ async function createVoiceConnection(guild_id, voice_id, text_id) {
addedBy: next.addedBy, addedBy: next.addedBy,
}); });
} else { } else {
await state.player.stop(); state.player.stop();
await state.connection.disconnect(); state.connection.disconnect();
if (!state.__leave) { if (!state.__leave) {
await hf.bot.guilds await hf.bot.guilds
.get(guild_id) .get(guild_id)
@ -178,6 +180,7 @@ async function createVoiceConnection(guild_id, voice_id, text_id) {
.createMessage({ .createMessage({
content: ":musical_note: Queue is empty, leaving voice channel.", content: ":musical_note: Queue is empty, leaving voice channel.",
}); });
await hf.bot.leaveVoiceChannel(voice_id);
} }
state.player.off(AudioPlayerStatus.Idle, state.onEnd); state.player.off(AudioPlayerStatus.Idle, state.onEnd);
voiceStorage.delete(guild_id); voiceStorage.delete(guild_id);
@ -375,7 +378,7 @@ async function enqueue({
], ],
}); });
connection._music_nowplaying = { connection.nowplaying = {
title, title,
addedBy, addedBy,
thumbnail, thumbnail,
@ -435,7 +438,7 @@ command.callback = async function (
if (msg.member?.voiceState?.channelID) { if (msg.member?.voiceState?.channelID) {
if (voiceStorage.has(msg.guildID)) { if (voiceStorage.has(msg.guildID)) {
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
if (connection.channelID != msg.member.voiceState.channelID) { if (connection.voice_id != msg.member.voiceState.channelID) {
return "You are in a different voice channel than the bot."; return "You are in a different voice channel than the bot.";
} }
} }
@ -584,7 +587,7 @@ command.callback = async function (
if (msg.member?.voiceState?.channelID) { if (msg.member?.voiceState?.channelID) {
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
if (voiceStorage.has(msg.guildID)) { if (voiceStorage.has(msg.guildID)) {
if (connection.channelID != msg.member.voiceState.channelID) { if (connection.voice_id != msg.member.voiceState.channelID) {
return "You are in a different voice channel than the bot."; return "You are in a different voice channel than the bot.";
} }
} }
@ -601,7 +604,7 @@ command.callback = async function (
if (msg.member?.voiceState?.channelID) { if (msg.member?.voiceState?.channelID) {
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
if (voiceStorage.has(msg.guildID)) { if (voiceStorage.has(msg.guildID)) {
if (connection.channelID != msg.member.voiceState.channelID) { if (connection.voice_id != msg.member.voiceState.channelID) {
return "You are in a different voice channel than the bot."; return "You are in a different voice channel than the bot.";
} }
} }
@ -609,7 +612,8 @@ command.callback = async function (
// TODO: skip lock checks // TODO: skip lock checks
connection.queue = []; connection.queue = [];
connection.__leave = true; connection.__leave = true;
await connection.stopPlaying(); connection.player.stop();
connection.connection.disconnect();
await hf.bot.leaveVoiceChannel(msg.member.voiceState.channelID); await hf.bot.leaveVoiceChannel(msg.member.voiceState.channelID);
return {reaction: "\uD83D\uDC4B"}; return {reaction: "\uD83D\uDC4B"};
} else { } else {
@ -620,7 +624,7 @@ command.callback = async function (
return "The bot is not in a voice channel."; return "The bot is not in a voice channel.";
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
const nowPlaying = connection._music_nowplaying; const nowPlaying = connection.nowplaying;
if (!nowPlaying || !connection.playing) if (!nowPlaying || !connection.playing)
return "Nothing is currently playing."; return "Nothing is currently playing.";
@ -671,10 +675,10 @@ command.callback = async function (
return "The bot is not in a voice channel"; return "The bot is not in a voice channel";
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
const queue = connection._music_queue; const queue = connection.queue;
if (queue.length === 0) return "Nothing else is currently queued"; if (queue.length === 0) return "Nothing else is currently queued";
const nowPlaying = connection._music_nowplaying; const nowPlaying = connection.nowplaying;
const now = Date.now(); const now = Date.now();
let nextTrack = now + (nowPlaying.length - (now - nowPlaying.start)); let nextTrack = now + (nowPlaying.length - (now - nowPlaying.start));
@ -716,12 +720,12 @@ command.callback = async function (
if (msg.member?.voiceState?.channelID) { if (msg.member?.voiceState?.channelID) {
const connection = voiceStorage.get(msg.guildID); const connection = voiceStorage.get(msg.guildID);
if (voiceStorage.has(msg.guildID)) { if (voiceStorage.has(msg.guildID)) {
if (connection.channelID != msg.member.voiceState.channelID) { if (connection.voice_id != msg.member.voiceState.channelID) {
return "You are in a different voice channel than the bot."; return "You are in a different voice channel than the bot.";
} }
} }
let queue = connection._music_queue; let queue = connection.queue;
if (queue.length === 0) return "Nothing else is currently queued"; if (queue.length === 0) return "Nothing else is currently queued";
const hasManageMessages = msg.member.permissions.has("manageMessages"); const hasManageMessages = msg.member.permissions.has("manageMessages");
@ -746,7 +750,7 @@ command.callback = async function (
); );
if (Array.isArray(toRemove)) { if (Array.isArray(toRemove)) {
connection._music_queue = connection._music_queue.filter( connection.queue = connection.queue.filter(
(item) => !toRemove.includes(item.id) (item) => !toRemove.includes(item.id)
); );
return `Removed ${toRemove.length} item(s).`; return `Removed ${toRemove.length} item(s).`;