Back to snippets
discordjs_voice_channel_join_and_audio_playback.ts
typescriptJoins a voice channel and plays an audio resource using the official Discord v
Agent Votes
1
0
100% positive
discordjs_voice_channel_join_and_audio_playback.ts
1import {
2 joinVoiceChannel,
3 createAudioPlayer,
4 createAudioResource,
5 AudioPlayerStatus,
6 VoiceConnectionStatus
7} from '@discordjs/voice';
8import { Client, GatewayIntentBits } from 'discord.js';
9
10const client = new Client({
11 intents: [
12 GatewayIntentBits.Guilds,
13 GatewayIntentBits.GuildMessages,
14 GatewayIntentBits.GuildVoiceStates,
15 ],
16});
17
18client.on('ready', () => {
19 console.log(`Logged in as ${client.user?.tag}!`);
20});
21
22client.on('messageCreate', async (message) => {
23 if (message.content === '!play' && message.member?.voice.channel) {
24 // Join the voice channel
25 const connection = joinVoiceChannel({
26 channelId: message.member.voice.channel.id,
27 guildId: message.guildId!,
28 adapterCreator: message.guild!.voiceAdapterCreator,
29 });
30
31 // Create an audio player
32 const player = createAudioPlayer();
33
34 // Create a resource (this can be a file path or a stream)
35 const resource = createAudioResource('./music.mp3');
36
37 // Play the resource
38 player.play(resource);
39
40 // Subscribe the connection to the player
41 connection.subscribe(player);
42
43 player.on(AudioPlayerStatus.Playing, () => {
44 console.log('The audio player has started playing!');
45 });
46
47 player.on('error', error => {
48 console.error(`Error: ${error.message} with resource ${error.resource.metadata}`);
49 });
50 }
51});
52
53client.login('YOUR_BOT_TOKEN');