diff options
Diffstat (limited to 'Commands')
| -rw-r--r-- | Commands/join.js | 5 | ||||
| -rw-r--r-- | Commands/leave.js | 2 | ||||
| -rw-r--r-- | Commands/pause.js | 14 | ||||
| -rw-r--r-- | Commands/play.js | 16 |
4 files changed, 26 insertions, 11 deletions
diff --git a/Commands/join.js b/Commands/join.js index 2f513cf..dd49969 100644 --- a/Commands/join.js +++ b/Commands/join.js @@ -23,6 +23,7 @@ import { SlashCommandBuilder } from 'discord.js'; import { voiceInit } from '../AudioBackend/VoiceInitialization.js'; import { PermissionFlagsBits } from 'discord-api-types/v10'; import { readFileSync } from 'node:fs'; +import { getVoiceConnection } from '@discordjs/voice'; import i18next from '../Utilities/i18n.js'; const { djRole, ownerID } = JSON.parse(readFileSync('./config.json', 'utf-8')); const t = i18next.t; @@ -34,6 +35,10 @@ export default { if (!interaction.member.voice.channel) return await interaction.reply({ content: t('voicePermission'), ephemeral: true }); if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: t('rolePermission'), ephemeral: true }); + const connection = getVoiceConnection(interaction.guild.id); + if (connection) { + return await interaction.reply({ content: t('alreadyJoin'), ephemeral: true }); + } await interaction.reply({ content: t('joinVoice'), ephemeral: true }); return await voiceInit(bot); } diff --git a/Commands/leave.js b/Commands/leave.js index e6559ca..c78cfe0 100644 --- a/Commands/leave.js +++ b/Commands/leave.js @@ -24,6 +24,7 @@ import { destroyAudio } from '../AudioBackend/Shutdown.js'; import { PermissionFlagsBits } from 'discord-api-types/v10'; import { readFileSync } from 'node:fs'; import i18next from '../Utilities/i18n.js'; +import { playerStatus } from '../AudioBackend/AudioControl.js'; const { djRole, ownerID } = JSON.parse(readFileSync('./config.json', 'utf-8')); const t = i18next.t; export default { @@ -33,6 +34,7 @@ export default { async execute(interaction, bot) { if (!interaction.member.voice.channel) return await interaction.reply({ content: t('voicePermission'), ephemeral: true }); if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: t('rolePermission'), ephemeral: true }); + if (playerStatus === 2) return await interaction.reply({ content: t('alreadyLeave'), ephemeral: true }); console.log(t('leaveVoice')); await destroyAudio(interaction); diff --git a/Commands/pause.js b/Commands/pause.js index bc649a6..1d04404 100644 --- a/Commands/pause.js +++ b/Commands/pause.js @@ -20,7 +20,7 @@ ***************************************************************************/ import { SlashCommandBuilder } from 'discord.js'; -import { toggleAudioState, isAudioStatePaused } from '../AudioBackend/AudioControl.js'; +import { toggleAudioState, isAudioStatePaused, playerStatus } from '../AudioBackend/AudioControl.js'; import { PermissionFlagsBits } from 'discord-api-types/v10'; import { readFileSync } from 'node:fs'; import i18next from '../Utilities/i18n.js'; @@ -34,11 +34,15 @@ export default { if (!interaction.member.voice.channel) return await interaction.reply({ content: t('voicePermission'), ephemeral: true }); if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: t('rolePermission'), ephemeral: true }); - if (!isAudioStatePaused) { - toggleAudioState(); - return await interaction.reply({ content: t('pausingMusic'), ephemeral: true }); + if (playerStatus === 2) { + return await interaction.reply({ content: t('alreadyLeave'), ephemeral: true }); } else { - return await interaction.reply({ content: t('pausedAlready'), ephemeral: true }); + if (!isAudioStatePaused) { + toggleAudioState(); + return await interaction.reply({ content: t('pausingMusic'), ephemeral: true }); + } else { + return await interaction.reply({ content: t('pausedAlready'), ephemeral: true }); + } } } }; diff --git a/Commands/play.js b/Commands/play.js index 7cfe36b..d514cfe 100644 --- a/Commands/play.js +++ b/Commands/play.js @@ -21,7 +21,7 @@ import { SlashCommandBuilder } from 'discord.js'; import { inputAudio } from '../AudioBackend/QueueSystem.js'; -import { files, isAudioStatePaused, toggleAudioState } from '../AudioBackend/AudioControl.js'; +import { files, isAudioStatePaused, playerStatus, toggleAudioState } from '../AudioBackend/AudioControl.js'; import { audio } from '../AudioBackend/PlayAudio.js'; import { PermissionFlagsBits } from 'discord-api-types/v10'; import { readFileSync } from 'node:fs'; @@ -51,16 +51,20 @@ export default { if (integer < files.length) { await inputAudio(bot, integer); await votes.clear(); - return await interaction.reply({ content: t('nowPlayingFile', audio), ephemeral: true }); + return await interaction.reply({ content: t('nowPlayingFile', { audio }), ephemeral: true }); } else { return await interaction.reply({ content: t('numBig', { files: files.length }), ephemeral: true }); } } - if (isAudioStatePaused) { - toggleAudioState(); - return await interaction.reply({ content: t('resumingMusic'), ephemeral: true }); + if (playerStatus === 2) { + return await interaction.reply({ content: t('statusStopped'), ephemeral: true }); } else { - return await interaction.reply({ content: t('resumedAlready'), ephemeral: true }); + if (isAudioStatePaused) { + toggleAudioState(); + return await interaction.reply({ content: t('resumingMusic'), ephemeral: true }); + } else { + return await interaction.reply({ content: t('resumedAlready'), ephemeral: true }); + } } } }; |
