const { createAudioResource, createAudioPlayer, joinVoiceChannel, NoSubscriberBehavior, AudioPlayerStatus, generateDependencyReport } = require('@discordjs/voice'); const { Pause } = NoSubscriberBehavior; const { Idle } = AudioPlayerStatus; const { join } = require('node:path'); const { Readable } = require('node:stream'); const fs = require('fs'); module.exports.playAudio = playAudio; module.exports.getConnections = getConnections; console.log(generateDependencyReport()); async function playAudio(channel, guild, fileName) { const connection = await joinVoiceChannel({ channelId: channel.id, guildId: guild.id, adapterCreator: guild.voiceAdapterCreator }); const buffer = fs.readFileSync(join(__dirname, fileName)); const readable = Readable.from(buffer); if (!buffer) { console.log("No buffer."); } if (!readable) { console.log("no readable"); } const resource = createAudioResource(readable, { inlineVolume: true }); if (!resource) { console.log("no resource"); } resource.volume.setVolume(0.5); const player = createAudioPlayer({ behaviors: { noSubscriber: Pause } }); connection.subscribe(player); player.play(resource); player.on('error', async () => { console.log("error"); player.stop(); connection.destroy(); }); player.on(Idle, () => { console.log("idle"); player.stop(); connection.destroy(); }); } function getConnections(guildId) { const connection = DiscordVoice.getVoiceConnection(guildId); console.log(connection); }