67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
import fs from "fs";
|
|
import { config } from "../config.js";
|
|
|
|
async function changeVoiceStatus(client, status, members) {
|
|
const changeStatus = async (type, value, selectedMembers) => {
|
|
const operations = [];
|
|
switch (type) {
|
|
case "mute":
|
|
for (const member of selectedMembers.values()) {
|
|
operations.push(member.voice.setMute(value));
|
|
}
|
|
break;
|
|
case "deaf":
|
|
for (const member of selectedMembers.values()) {
|
|
operations.push(member.voice.setDeaf(value));
|
|
}
|
|
break;
|
|
}
|
|
await Promise.all(operations);
|
|
};
|
|
|
|
const voiceChannel = client.channels.cache.get(config.voiceChannelId);
|
|
if (!voiceChannel?.isVoiceBased()) {
|
|
throw new Error("Salon vocal configuré introuvable");
|
|
}
|
|
const connectedMembers = voiceChannel.members.filter(
|
|
(member) => !member.user.bot
|
|
);
|
|
|
|
if (members === "all") {
|
|
members = connectedMembers;
|
|
}
|
|
|
|
switch (status) {
|
|
case "mute":
|
|
await changeStatus("mute", true, members);
|
|
break;
|
|
case "unmute":
|
|
await changeStatus("mute", false, members);
|
|
break;
|
|
case "deaf":
|
|
await changeStatus("deaf", true, members);
|
|
break;
|
|
case "undeaf":
|
|
await changeStatus("deaf", false, members);
|
|
break;
|
|
default:
|
|
throw new Error(`Statut vocal inconnu : ${status}`);
|
|
}
|
|
}
|
|
|
|
function getJSONData(file) {
|
|
const jsonFile = fs.readFileSync(file);
|
|
const data = JSON.parse(jsonFile);
|
|
|
|
return data;
|
|
}
|
|
|
|
function getRandomInt(max) {
|
|
return Math.floor(Math.random() * max);
|
|
}
|
|
|
|
export {
|
|
changeVoiceStatus,
|
|
getJSONData,
|
|
getRandomInt,
|
|
};
|