Ajout du Bot

This commit is contained in:
2022-01-04 01:35:59 +00:00
parent 23765f669d
commit deb56874f4
61 changed files with 3749 additions and 0 deletions

27
util/LanBot.js Normal file
View File

@@ -0,0 +1,27 @@
exports.canModifyQueue = (member) => {
const { channelID } = member.voice;
const botChannel = member.guild.voice.channelID;
if (channelID !== botChannel) {
return;
}
return true;
};
let config;
try {
config = require("../config");
} catch (error) {
config = null;
}
exports.TOKEN = config.TOKEN;
exports.YOUTUBE_API_KEY = config.YOUTUBE_API_KEY;
//exports.SOUNDCLOUD_CLIENT_ID = config.SOUNDCLOUD_CLIENT_ID;
exports.MAX_PLAYLIST_SIZE = config.MAX_PLAYLIST_SIZE;
exports.PRUNING = config.PRUNING;
exports.STAY_TIME = config.STAY_TIME;
exports.DEFAULT_VOLUME = config.DEFAULT_VOLUME;
//exports.LOCALE = config.LOCALE;

357
util/constants.js Normal file
View File

@@ -0,0 +1,357 @@
const MESSAGES = {
COMMANDS: {
ADMIN: {
CONFIG: {
name: "config",
aliases: ['config'],
category: 'admin',
description: "Modifier la base de données !\n<key> disponible : **prefix** / **logChannel** / **welcomeMessage**\nAttention pour le **logChannel** merci de mettre l'ID du salon !",
cooldown: 3,
usage: ['<key> <value> '],
isUserAdmin: false,
permissions: true,
args: true,
},
CHARGEMENT: {
name: "chargement",
aliases: ['chargement', 'init'],
category: 'admin',
description: "Config à faire pour le premier lancement du bot !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: true,
args: false,
},
},
DEVELOPPEUR: {
EVAL: {
name: "eval",
aliases: ['eval'],
category: 'developpeur',
description: "Renvoie un code javascript testé !",
cooldown: 3,
usage: ['<code_to_test>'],
isUserAdmin: false,
permissions: false,
args: true,
},
RELOAD: {
name: "reload",
aliases: ['reload'],
category: 'developpeur',
description: "Reboot le bot !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
},
INFORMATIONS: {
BOTINFO: {
name: "botinfo",
aliases: ['botinfo', 'bi'],
category: 'informations',
description: "Renvoie des informations concernant le bot !",
cooldown: 4,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
SERVERINFO: {
name: "serverinfo",
aliases: ['serverinfo', 'si'],
category: 'informations',
description: "Renvoie des informations concernant le serveur !",
cooldown: 4,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
STATS: {
name: "stats",
aliases: ['stats'],
category: 'informations',
description: "Renvoie des Statistiques !",
cooldown: 4,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
USERINFO: {
name: "userinfo",
aliases: ['userinfo', 'ui'],
category: 'informations',
description: "Permet d'avoir les informations de la personne mentionnée",
cooldown: 10,
usage: ['[<@user>]'],
isUserAdmin: false,
permissions: false,
args: false,
},
},
MUSIQUE: {
JOIN: {
name: "join",
aliases: ['join'],
category: 'musique',
description: "Connecte le bot au canal vocal !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
LEAVE: {
name: "leave",
aliases: ['leave'],
category: 'musique',
description: "Déconnecte le bot du canal vocal !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
LOOP: {
name: "loop",
aliases: ['loop'],
category: 'musique',
description: "Rejoue la musique lancé !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
LYRICS: {
name: "lyrics",
aliases: ['lyrics'],
category: 'musique',
description: "Envoie les paroles de la musique joué",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
MOVE: {
name: "Move",
aliases: ['move'],
category: 'musique',
description: "Déplacez les chansons de la file d'attente",
cooldown: 3,
usage: ['<numéro de la musique> <nouvel emplacement'],
isUserAdmin: false,
permissions: false,
args: true,
},
NOWPLAYING: {
name: "NowPlaying",
aliases: ['nowplaying', 'np'],
category: 'musique',
description: "Afficher la chanson en cours de lecture",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
PAUSE: {
name: "pause",
aliases: ['pause'],
category: 'musique',
description: "Met en pause la musique actuelle !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
PLAY: {
name: "play",
aliases: ['play'],
category: 'musique',
description: "Lance une musique",
cooldown: 3,
usage: ['URL'],
isUserAdmin: false,
permissions: false,
args: true,
},
PLAYLIST: {
name: "playlist",
aliases: ['playlist'],
category: 'musique',
description: "Lance une playlist",
cooldown: 3,
usage: ['URL'],
isUserAdmin: false,
permissions: false,
args: false,
},
PRUNING: {
name: "pruning",
aliases: ['pruning'],
category: 'musique',
description: "Possibilité de supprimer les messages du bot",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
QUEUE: {
name: "queue",
aliases: ['q'],
category: 'musique',
description: "Affiche la liste de lecture actuelle",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
RADIOZEBRE: {
name: "radiozebre",
aliases: ['rz', 'radiozebre'],
category: 'musique',
description: "Lance la playlist radiozebre",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
REMOVE: {
name: "remove",
aliases: ['rm'],
category: 'musique',
description: "Supprimer la chanson de la file d'attente",
cooldown: 3,
usage: ['numéro de la musique'],
isUserAdmin: false,
permissions: false,
args: true,
},
RESUME: {
name: "resume",
aliases: ['r'],
category: 'musique',
description: "Relance la musique mis en pause",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
SEARCH: {
name: "search",
aliases: ['search'],
category: 'musique',
description: "Recherchez et sélectionnez des vidéos à écouter",
cooldown: 3,
usage: ['<URL> <nom de la vidéo / musique>'],
isUserAdmin: false,
permissions: false,
args: true,
},
SHUFFLE: {
name: "shuffle",
aliases: ['shuffle'],
category: 'musique',
description: "Lance la liste de lecture en aléatoire",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
SKIP: {
name: "skip",
aliases: ['skip'],
category: 'musique',
description: "Lance la prochaine musique de la liste d'attente",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
SKIPTO: {
name: "skipto",
aliases: ['skipto'],
category: 'musique',
description: "Passer au numéro de file d'attente sélectionné",
cooldown: 3,
usage: ['numéro de la musique'],
isUserAdmin: false,
permissions: false,
args: true,
},
STOP: {
name: "stop",
aliases: ['stop'],
category: 'musique',
description: "Arrête la musique et fait quitter le bot du salon vocal",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
VOLUME: {
name: "VOLUME",
aliases: ['volume', 'vol'],
category: 'musique',
description: "Règle le volume du bot !",
cooldown: 3,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
},
UTILITAIRE: {
HELP: {
name: "help",
aliases: ['help'],
category: 'utilitaire',
description: "Renvoie une liste de commandes ou les informations sur une seule !",
cooldown: 3,
usage: ['<command_name>'],
isUserAdmin: false,
permissions: false,
args: false,
},
PING: {
name: "ping",
aliases: ['ping'],
category: 'utilitaire',
description: "Renvoie pong ! + la latence",
cooldown: 10,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
YT: {
name: "yt",
aliases: ['yt'],
category: 'utilitaire',
description: "Youtube Together",
cooldown: 10,
usage: [''],
isUserAdmin: false,
permissions: false,
args: false,
},
},
},
};
exports.MESSAGES = MESSAGES;

33
util/functions.js Normal file
View File

@@ -0,0 +1,33 @@
const mongoose = require("mongoose");
const { Guild, User, Ticket } = require("../models/index");
module.exports = client => {
client.createGuild = async guild => {
const merged = Object.assign({ _id: mongoose.Types.ObjectId() }, guild);
const createGuild = await new Guild(merged);
createGuild.save()
.then(g => console.log(`Nouveau serveur -> ${g.guildName}`));
};
client.getGuild = async guild => {
const data = await Guild.findOne({ guildID: guild.id });
if (data) return data;
return client.config.DEFAULTSETTINGS;
};
client.updateGuild = async (guild, settings) => {
let data = await client.getGuild(guild);
if (typeof data !== "object") data = {};
for (const key in settings) {
if (data[key] !== settings[key]) data[key] = settings[key];
}
return data.updateOne(settings);
};
client.deleteGuild = async guild => {
const guilde = await client.getGuild(guild)
await guilde.delete()
};
};

33
util/loader.js Normal file
View File

@@ -0,0 +1,33 @@
const fs = require("fs");
//Fonction pour récupérer les fichiers dans les sous-dossier
const loadCommands = (client, dir = "./commands/") => {
fs.readdirSync(dir).forEach(dirs => {
const commands = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));
for(const file of commands) {
const getFileName = require(`../${dir}/${dirs}/${file}`);
client.commands.set(getFileName.help.name, getFileName);
console.log(`Commande chargée: ${getFileName.help.name}`);
};
});
};
//Fonction pour les Events
const loadEvents = (client, dir = "./events/") => {
fs.readdirSync(dir).forEach(dirs => {
const events = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));
for(const event of events) {
const evt = require(`../${dir}/${dirs}/${event}`);
const evtName = event.split(".")[0];
client.on(evtName, evt.bind(null, client));
console.log(`Evenement chargé: ${evtName}`);
};
});
};
module.exports = {
loadCommands,
loadEvents,
}

22
util/mongoose.js Normal file
View File

@@ -0,0 +1,22 @@
const mongoose = require("mongoose");
const { DBCONNECTION } = require("../config");
module.exports = {
init: () => {
const mongOptions = {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
autoIndex: false, // Don't build indexes
poolSize: 10, // Maintain up to 10 socket connections
serverSelectionTimeoutMS: 5000, // Keep trying to send operations for 5 seconds
socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
family: 4 // Use IPv4, skip trying IPv6
}
mongoose.connect(DBCONNECTION, mongOptions);
mongoose.Promise = global.Promise;
mongoose.connection.on("connected", () => console.log("Mongoose est connecté !"));
}
}