From d8951ebdd77027db8e58920016cf793f4eb6572b Mon Sep 17 00:00:00 2001 From: Wizzard Date: Mon, 5 Feb 2024 23:07:41 -0500 Subject: [PATCH] Add .livestream stop command --- commands/livestream.js | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/commands/livestream.js b/commands/livestream.js index 8280f11..6b76db2 100644 --- a/commands/livestream.js +++ b/commands/livestream.js @@ -2,13 +2,25 @@ const { DiscordStreamClient } = require('discord-stream-client'); module.exports = { name: 'livestream', - description: 'Starts a live stream in a voice channel with a provided video link.', + description: 'Starts or stops a live stream in a voice channel with a provided video link.', async execute(message, args, deleteTimeout) { + if (args[0] === 'stop') { + const voiceState = message.guild.me.voice; + if (voiceState.channel) { + voiceState.disconnect(); + return message.channel.send('Livestream stopped.') + .then(msg => setTimeout(() => msg.delete().catch(console.error), deleteTimeout)); + } else { + return message.channel.send('No active livestream to stop.') + .then(msg => setTimeout(() => msg.delete().catch(console.error), deleteTimeout)); + } + } + if (args.length < 2) { - return message.channel.send('Usage: .livestream ') + return message.channel.send('Usage: .livestream | .livestream stop') .then(msg => setTimeout(() => msg.delete().catch(console.error), deleteTimeout)); } - + const channelId = args[0]; const videoLink = args[1]; const channel = message.client.channels.cache.get(channelId); @@ -19,17 +31,32 @@ module.exports = { } try { + if (message.client.currentPlayer) { + message.client.currentPlayer.stop(); + } + const connection = await message.client.streamClient.joinVoiceChannel(channel, { selfDeaf: true, selfMute: true, selfVideo: false, }); - + const stream = await connection.createStream(); const player = message.client.streamClient.createPlayer(videoLink, stream.udp); + message.client.currentPlayer = player; player.on('error', err => console.error(err)); - + + player.on('end', () => { + player.play({ + kbpsVideo: 7000, + fps: 60, + hwaccel: true, + kbpsAudio: 128, + volume: 1, + }); + }); + player.play({ kbpsVideo: 7000, fps: 60,