UNPKG

@getsolara/solara.voice

Version:

Optional voice functionality for @getsolara/solara.js using @discordjs/voice

31 lines (30 loc) 1.84 kB
const { AudioResource } = require('@discordjs/voice'); module.exports = { name: "$voiceSetVolume", description: "Sets the playback volume (0-200). Note: Applies to newly created resources or if an InlineVolumeTransformer is used.", takesBrackets: true, execute: async (context, args) => { if (context.client.voiceInitialized === false) { return "[Error: $voiceSetVolume requires voice features to be enabled. Ensure @getsolara/solara.voice is installed and configured correctly.]"; } if (!context.guild) return "[Error: $voiceSetVolume can only be used in a server.]"; if (!args[0]) return "[Error: $voiceSetVolume requires a volume level (0-200)]"; const volumeLevel = parseInt(args[0], 10); if (isNaN(volumeLevel) || volumeLevel < 0 || volumeLevel > 200) { return "[Error: Volume for $voiceSetVolume must be a number between 0 and 200]"; } const guildId = context.guild.id; context.client.solaraVoiceVolumes = context.client.solaraVoiceVolumes || new Map(); context.client.solaraVoiceVolumes.set(guildId, volumeLevel / 100); const player = context.client.solaraAudioPlayers?.get(guildId); if (player && player.state.status === AudioPlayerStatus.Playing && player.state.resource) { if (player.state.resource.volume) { player.state.resource.volume.setVolume(volumeLevel / 100); return `Volume set to ${volumeLevel}%.`; } else { return `Volume setting stored (${volumeLevel}%), but current track cannot have volume adjusted dynamically. Will apply to next track if it supports it.`; } } return `Volume setting stored (${volumeLevel}%). Will apply to future playback.`; } };