Add .livestream stop command

This commit is contained in:
Wizzard 2024-02-05 23:07:41 -05:00
parent fd0aa70556
commit d8951ebdd7
1 changed files with 32 additions and 5 deletions

View File

@ -2,10 +2,22 @@ const { DiscordStreamClient } = require('discord-stream-client');
module.exports = { module.exports = {
name: 'livestream', 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) { 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) { if (args.length < 2) {
return message.channel.send('Usage: .livestream <channelId> <videoLink>') return message.channel.send('Usage: .livestream <channelId> <videoLink> | .livestream stop')
.then(msg => setTimeout(() => msg.delete().catch(console.error), deleteTimeout)); .then(msg => setTimeout(() => msg.delete().catch(console.error), deleteTimeout));
} }
@ -19,6 +31,10 @@ module.exports = {
} }
try { try {
if (message.client.currentPlayer) {
message.client.currentPlayer.stop();
}
const connection = await message.client.streamClient.joinVoiceChannel(channel, { const connection = await message.client.streamClient.joinVoiceChannel(channel, {
selfDeaf: true, selfDeaf: true,
selfMute: true, selfMute: true,
@ -27,9 +43,20 @@ module.exports = {
const stream = await connection.createStream(); const stream = await connection.createStream();
const player = message.client.streamClient.createPlayer(videoLink, stream.udp); const player = message.client.streamClient.createPlayer(videoLink, stream.udp);
message.client.currentPlayer = player;
player.on('error', err => console.error(err)); player.on('error', err => console.error(err));
player.on('end', () => {
player.play({
kbpsVideo: 7000,
fps: 60,
hwaccel: true,
kbpsAudio: 128,
volume: 1,
});
});
player.play({ player.play({
kbpsVideo: 7000, kbpsVideo: 7000,
fps: 60, fps: 60,