Bot Discord officiel développé en JavaScript avec discord.js, conçu pour la gestion interne d'une entreprise GTA RP sur un serveur Discord (gestion RH, candidatures, absences, avertissements, réunions, etc.).
- Fonctionnalités
- Prérequis
- Installation
- Configuration
- Lancement
- Commandes
- Structure du projet
- Technologies utilisées
- Auteur
- 📨 Candidatures — Système complet de gestion des candidatures avec boutons interactifs, historique des refus et résultats dans des salons dédiés
- 🏖️ Absences — Déclaration et suivi des absences avec dates de début/fin, attribution automatique du rôle absent, et notifications staff
⚠️ Avertissements — Attribution d'avertissements (niveaux 1, 2 et 3) avec notifications dans un salon dédié et gestion des rôles associés- 👋 Événement d'arrivée — Message de bienvenue automatique lors de l'arrivée d'un nouveau membre sur le serveur
- 📊 Organigramme — Mise à jour automatique d'un message d'organigramme dans un salon dédié
- 🎮 Présence — Gestion de l'activité affichée par le bot
- 📅 Réunions — Planification et annonce de réunions avec timestamps Discord, réactions de présence
- 💰 Paie — Notification aux membres que leur paie est disponible (confirmation par bouton)
- 🔴 Démission / Licenciement — Gestion des départs (volontaires ou non) avec mise à jour des rôles et base de données
- 🔁 Auto-join des threads — Le bot rejoint automatiquement les nouveaux fils de discussion
- 🔧 Redémarrage — Commande de redémarrage du bot réservée à la direction
- ❓ Aide — Commande
/helppaginée listant toutes les commandes disponibles - 🏓 Ping — Affiche la latence entre Discord et le bot
- Node.js v18 ou supérieur
- npm
- Une base de données MySQL
- Un token de bot Discord (via le Discord Developer Portal)
# Cloner le dépôt
git clone https://github.com/SuperCraft3M/Tropical.git
cd Tropical
# Installer les dépendances
npm installCopier le fichier d'exemple de configuration et le remplir avec vos valeurs :
cp config.exemple.json config.jsonPuis éditer config.json :
{
"token": "VOTRE_TOKEN_BOT_DISCORD",
"database": {
"host": "HOTE_BDD",
"user": "UTILISATEUR_BDD",
"password": "MOT_DE_PASSE_BDD",
"database": "NOM_BDD"
},
"guildId": "ID_DU_SERVEUR",
"startMessageChannelId": "ID_DU_SALON_DE_DEMARRAGE",
"tropicalRoleId": "ID_DU_ROLE_TROPICAL",
"directionRoleId": "ID_DU_ROLE_DIRECTION",
"washingtonRoleId": "ID_DU_ROLE_WASHINGTON",
"blacklistRoleId": "ID_DU_ROLE_BLACKLIST",
"absenceRoleId": "ID_DU_ROLE_ABSENCE",
"absenceChannelId": "ID_DU_SALON_ABSENCES",
"absenceStaffChannelId": "ID_DU_SALON_STAFF_ABSENCES",
"demissionRoleId": "ID_DU_ROLE_DEMISSION",
"licenciementRoleId": "ID_DU_ROLE_LICENCIEMENT",
"avertissement1RoleId": "ID_DU_ROLE_AVERT_1",
"avertissement2RoleId": "ID_DU_ROLE_AVERT_2",
"avertissement3RoleId": "ID_DU_ROLE_AVERT_3",
"avertissementsChannelId": "ID_DU_SALON_AVERTISSEMENTS",
"candidature1RoleId": "ID_DU_ROLE_CANDIDATURE_REFUSE_1",
"candidature2RoleId": "ID_DU_ROLE_CANDIDATURE_REFUSE_2",
"candidatureChannelId": "ID_DU_SALON_CANDIDATURES",
"candidatureMessageId": "ID_DU_MESSAGE_CANDIDATURE",
"candidatureResultsChannelId": "ID_DU_SALON_RESULTATS_CANDIDATURES",
"candidatureResultGlobalChannelId": "ID_DU_SALON_RESULTATS_GLOBAL",
"enAttenteEntretienRoleId": "ID_DU_ROLE_EN_ATTENTE_ENTRETIEN",
"responsableSectionsRoleId": "ID_DU_ROLE_RESPONSABLE_SECTIONS",
"annonceChannelId": "ID_DU_SALON_ANNONCES",
"annonceGlobalChannelId": "ID_DU_SALON_ANNONCES_GLOBAL",
"payeChannelId": "ID_DU_SALON_PAYE",
"organigrammeChannelId": "ID_DU_SALON_ORGANIGRAMME",
"organigrammeMessageId": "ID_DU_MESSAGE_ORGANIGRAMME"
}
⚠️ Ne jamais committer votre fichierconfig.json— il est déjà ignoré par.gitignore.
node index.jsLe bot se connectera d'abord à la base de données MySQL, puis à Discord. Un message de confirmation sera envoyé dans le salon configuré via startMessageChannelId.
Toutes les commandes sont des slash commands Discord (/commande).
| Commande | Description | Permission requise |
|---|---|---|
/help |
Affiche la liste paginée de toutes les commandes | Tout le monde |
/ping |
Affiche la latence entre Discord et le bot | Tout le monde |
/absence add |
Déclare une absence pour un membre | Secrétaire / Direction / Washington |
/absence remove |
Supprime l'absence d'un membre | Secrétaire / Direction / Washington |
/avertissement add |
Attribue un avertissement (1, 2 ou 3) à un membre | Direction / Secrétaire / Responsable / Chef de section |
/avertissement remove |
Retire un avertissement d'un membre | Direction / Secrétaire / Responsable / Chef de section |
/candidature refuse add |
Ajoute un refus de candidature à un membre | Recruteur / Direction / Secrétaire |
/candidature refuse remove |
Retire un refus de candidature à un membre | Recruteur / Direction / Secrétaire |
/demission info |
Consulte les infos de démission d'un membre | Direction / Chef de section |
/demission modify |
Applique ou annule une démission | Direction / Secrétaire / Washington |
/licenciement info |
Consulte les infos de licenciement d'un membre | Direction / Chef de section |
/licenciement modify |
Applique ou annule un licenciement | Direction / Secrétaire / Washington |
/reunion |
Planifie et annonce une réunion | Direction / Secrétaire / Washington |
/paye |
Notifie les membres que la paie est disponible | Direction / Washington |
/restart |
Redémarre le bot | Direction / Washington |
Tropical/
├── index.js # Point d'entrée principal
├── config.json # Configuration (ignorée par git)
├── config.exemple.json # Exemple de configuration
├── package.json
└── src/
├── candidature.js # Système de candidatures (interactions, boutons)
├── guildJoinEvent.js # Événement d'arrivée d'un membre
├── organigrame.js # Mise à jour de l'organigramme
├── presence.js # Gestion de la présence du bot
├── registerSlashCommands.js # Enregistrement des slash commands
├── threadAutoJoiner.js # Rejoindre automatiquement les threads
├── images/ # Ressources images
└── commands/
├── absence.js # Commande /absence
├── avertissement.js # Commande /avertissement
├── candidature.js # Commande /candidature
├── demission.js # Commande /demission
├── help.js # Commande /help
├── licenciement.js # Commande /licenciement
├── paye.js # Commande /paye
├── ping.js # Commande /ping
├── restart.js # Commande /restart
└── reunion.js # Commande /reunion
| Technologie | Version | Usage |
|---|---|---|
| discord.js | ^14.13.0 | Interaction avec l'API Discord |
| mysql | ^2.18.1 | Connexion à la base de données MySQL |
| moment.js | ^2.29.4 | Formatage des dates |
| raraph84-lib | ^2.16.4 | Utilitaires (config, pool de requêtes, TaskManager) |
Développé avec ❤️ par SuperCraft3M
Ce projet est destiné à un usage interne. N'oubliez pas de ne jamais exposer votre token Discord ou vos identifiants de base de données.
Ce projet est distribué sous licence personnalisée. Voir le fichier LICENSE pour plus d'informations.