Initial Commit
This commit is contained in:
commit
6d2e379a0c
41 changed files with 5064 additions and 0 deletions
59
src/features/sendMessage.js
Normal file
59
src/features/sendMessage.js
Normal 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 };
|
||||
64
src/features/showGameServers.js
Normal file
64
src/features/showGameServers.js
Normal 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 ? "[2;32mOnline[0m" : "[2;31mOffline[0m"}\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
74
src/features/utilities.js
Normal 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,
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue