Files
Dat_Boi/dmCommands/joinvc.js
2024-05-05 13:22:35 +02:00

125 lines
4.7 KiB
JavaScript

const fs = require("fs");
const { MessageEmbed } = require("discord.js");
const config = require("../botconfig/config.json");
const ee = require("../botconfig/embed.json");
const { choose } = require("../handlers/functions");
const { createAudioPlayer, joinVoiceChannel, createAudioResource, StreamType } = require('@discordjs/voice');
const { VoiceConnectionStatus } = require('@discordjs/voice');
const player = createAudioPlayer();
const ffmpeg = require("ffmpeg-static");
module.exports = {
name: "joinvc",
isPrivate: false,
usage: "joinvc <ID_DE_LA_VOC>",
description: "Rejoins le salon vocal spécifié à l'aide de son id (activer le mode développeur → clic droit sur la voc → copier l'identifiant).",
run: async (client, message, text, args) => {
try {
if (!args[0]) {
message.channel.send({embeds: [
new MessageEmbed()
.setColor(ee.wrongcolor)
.setTitle(`❌ ERREUR | Pas assez d'arguments`)
.setDescription("`[help joinvc` pour plus d'informations")
]})
return;
}
let channel = client.channels.cache.find(channel => channel.id == `${args[0]}`)
if (
!channel || !channel.isVoice()
|| !channel.permissionsFor(channel.guild.me).has("CONNECT")
|| !channel.permissionsFor(channel.guild.me).has("SPEAK")
) {
// message.react("❌")
return message.channel.send({embeds : [
new MessageEmbed()
.setColor(ee.wrongcolor)
.setTitle(`❌ ERREUR | Pas de voc trouvée :(`)]}
);
}
player.on('error', error => {
// subscription.unsubscribe()
if (connection.state.status != "destroyed") {
connection.destroy();
}
});
player.on('idle', () => {
// subscription.unsubscribe()
if (connection.state.status != "destroyed") {
connection.destroy();
}
console.log('Info : Ended track');
});
let videos = fs.readdirSync(`./sounds/`).filter((file) => file.endsWith(".mp3"))
// voiceState.setSelfMute(0);
// var channel = voiceState.channel
const connection = joinVoiceChannel({
channelId: channel.id,
guildId: channel.guild.id,
adapterCreator: channel.guild.voiceAdapterCreator,
});
// const subscription = connection.subscribe(player);
var rdVideoLink = choose(videos)
try {
connection.on(VoiceConnectionStatus.Ready, async() => {
connection;
let subscription = connection.subscribe(player);
const resource = createAudioResource("./sounds/" + rdVideoLink, {
inputType: StreamType.Arbitrary
});
resource.playStream.on("finish", () => {
setTimeout(() => {
// subscription.unsubscribe()
if (connection.state.status != "destroyed") {
connection.destroy();
}
}, 2000)
})
// if (subscription) {
// // Unsubscribe after 5 seconds (stop playing audio on the voice connection)
// setTimeout(() => subscription.unsubscribe(), 5_000);
// }
player.play(resource);
})
// setTimeout(() => {
// subscription.unsubscribe()
// if (connection.state.status != "destroyed") {
// connection.destroy();
// }
// }, 60 * 1000)
message.channel.send(`Je joue *${rdVideoLink.split('.')[0]}* dans le salon ${channel} du serveur **${channel.guild.name}**`);
} catch (error) {
console.log(error.message)
}
} catch (e) {
console.log(String(e.stack).bgRed);
return message.channel.send({embeds : [
new MessageEmbed()
.setColor(ee.wrongcolor)
.setTitle(`❌ ERREUR | Une erreur est survenue : `)
.setDescription(`\`\`\`${e.stack}\`\`\``)]}
);
}
},
};