Initial Commit

This commit is contained in:
Shinuwa 2026-06-28 22:44:04 +02:00
commit 6d2e379a0c
41 changed files with 5064 additions and 0 deletions

View file

@ -0,0 +1,59 @@
import {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
channelMention,
codeBlock,
} from "discord.js";
import { config } from "../config.js";
function sendMessage(client, type) {
const channel = client.channels.cache.get(config.textChannelId);
var message = { content: "Message réservé" };
if (type && type === "invitation") {
message.content = inviteMessage();
} else if (type && type === "jukebox") {
message = jukeboxMessage();
}
channel.send(message);
}
function inviteMessage() {
var message =
"Pour inviter quelqu'un, il faut utiliser cette invitation temporaire !\n";
message = message + codeBlock(config.inviteLink);
message =
message +
"*Pour une invitation permanente, il suffit d'attribuer le role*" +
" ***Hangaround*** " +
"*à la personne concernée.*\n\n" +
"";
return message;
}
function jukeboxMessage() {
const description =
"Yo ! 😺\n\n" +
`J'ai installé un jukebox dans ${channelMention(config.voiceChannelId)} !\n` +
"Tu peux le contrôler facilement via une petite interface ! 😽.\n\n" +
"Clique sur le bouton ci-dessous pour ouvrir le tableau de bord.\n\n";
const buttonRow = new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setLabel("Ouvrir le Jukebox 🎵")
.setStyle(ButtonStyle.Link)
.setURL("https://palico-bot.shinuwa.fr/jukebox/")
);
return {
content: description,
components: [buttonRow],
};
}
export { sendMessage, inviteMessage, jukeboxMessage };

View file

@ -0,0 +1,64 @@
import { config } from "../config.js";
import { getJSONData } from "./utilities.js";
var currentStatus = [];
function checkServersStatus(client) {
const data = getJSONData("src/static/gameservers-list.json");
const newStatus = data.servers.map((server) => server.active);
if (JSON.stringify(newStatus) === JSON.stringify(currentStatus)) {
return;
}
updateMessage(client, data);
currentStatus = newStatus;
return true;
}
function updateMessage(client, data) {
var newMessage = `Hello 😺 ! Voila les serveurs de jeux qu'on a chez nous :\n\n`;
data.servers.forEach((server) => {
newMessage =
newMessage +
"```ansi\n" +
`${server.game} : ` +
`${server.active ? "Online" : "Offline"}\n` +
`${server.address}\n` +
"```";
});
newMessage =
newMessage +
"\nAh d'ailleurs ! Si le serveur est sécurisé, le mot de passe c'est surement **0117**.";
newMessage =
newMessage +
`\nPour mettre en ligne un serveur, faut voir avec <@${config.shinuwaUserId}> , c'est lui qui gère ca !\n`;
const channel = client.channels.cache.get(config.textChannelId);
channel.messages
.fetch(config.gameServersMessageId)
.then((message) => {
message
.edit(newMessage)
.then(
console.log(
`[${new Date().toLocaleString()}] showGameServers: Game servers message updated`
)
)
.catch(console.error);
})
.catch(console.error);
}
function showGameServers(client) {
const data = getJSONData("src/static/gameservers-list.json");
currentStatus = data.servers.map((server) => server.active);
updateMessage(client, data);
setInterval(checkServersStatus, 120000, client);
}
export { showGameServers };

74
src/features/utilities.js Normal file
View file

@ -0,0 +1,74 @@
import fs from "fs";
import { config } from "../config.js";
function changeVoiceStatus(client, status, members) {
const changeStatus = (type, value, members) => {
switch (type) {
case "mute":
for (let member of members) {
member[1].voice.setMute(value);
}
break;
case "deaf":
for (let member of members) {
member[1].voice.setDeaf(value);
}
break;
}
};
var voiceChannel = client.channels.cache.get(config.voiceChannelId);
var connectedMembers = voiceChannel.members;
if (members == "all") {
members = connectedMembers;
}
switch (status) {
case "mute":
changeStatus("mute", true, members);
break;
case "unmute":
changeStatus("mute", false, members);
break;
case "deaf":
changeStatus("deaf", true, members);
break;
case "undeaf":
changeStatus("deaf", false, members);
break;
}
}
function getJSONData(file) {
const jsonFile = fs.readFileSync(file);
const data = JSON.parse(jsonFile);
return data;
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
function isConnectedToVoiceChannel(client, userId) {
var voiceChannel = client.channels.cache.get(config.voiceChannelId);
var connectedMembers = voiceChannel.members;
var selectedMember = connectedMembers.filter(
(member) => member.user.id === userId
);
if (selectedMember.size === 1) {
return true;
}
return false;
}
export {
changeVoiceStatus,
getJSONData,
getRandomInt,
isConnectedToVoiceChannel,
};