palico-bot/src/features/utilities.js

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,
};