Cyber

Chapitre 3 · Choix techniques

Architecture générale

Les briques du projet

Brique Technologie Pourquoi ce choix
Bot Node.js 20+ et discord.js 14 Bibliothèque la plus utilisée pour Discord, très documentée, gère les commandes slash, boutons, menus et Components V2
Panel Express (serveur web Node) + HTML/CSS/JS sans framework Léger, tout dans le même processus que le bot, aucune dépendance lourde
Données Fichiers JSON (dossier data/) Suffisant pour quelques serveurs, lisible, sauvegardable en un fichier ; pas de base SQL à sécuriser
Site HTML/CSS/JS statique généré par un script Python (build.py) Hébergement gratuit et en HTTPS sur GitHub Pages
Domaine cyberbot.fr acheté chez OVH Un .fr pour un bot francophone, prix bas, coordonnées masquées dans le Whois pour un particulier
DNS, HTTPS, accès Cloudflare (offre gratuite) DNS rapide, tunnel sortant, Access (connexion par code + 2FA)
Code source GitHub : dépôt public pour le site, dépôt privé pour le bot Le site n’a aucun secret ; le code du bot reste privé
IA (option) API Anthropic (commande /ia) Activée seulement si une clé API est présente, avec des limites d’usage

Organisation des dossiers

Sur le PC d’Enzo, tout est regroupé dans un dossier Cyber :

Dossier Contenu Public ?
bot-cyber Le bot, le panel, les outils (générateurs de l’Académie et du site) Privé (contient le .env)
cyber-site Le site vitrine et le panel de démonstration Public : ce dépôt, publié sur https://cyberbot.fr

Structure du bot :

src/index.js              démarrage (instance unique, événements, arrêt propre)
src/deploy-commands.js    enregistre les commandes sur tous les serveurs
src/loader.js             charge src/commands/<catégorie>/*.js
src/commands/             une commande = un fichier
src/events/               interactions, messages (automod, XP, AFK), arrivée/départ de serveur…
src/utils/                store (JSON), modules, planificateur, sécurité, sauvegardes, tunnel, bio…
src/academie/             contenu de l'Académie (fiches, quiz, glossaire) + moteur du défi du jour
src/dashboard/            serveur Express du panel (OAuth2, CSRF, CSP) + interface
src/check.js              vérifie toutes les commandes avant chaque livraison
outils/academie/          sources des textes de l'Académie + générateur
outils/site/              sources du site (*.main.html) + build.py + panel_css.py

Les scripts « un double-clic »

Enzo ne code pas : chaque opération courante tient dans un fichier .bat Windows.

Script Rôle
DEMARRER.bat Vérifie Node, installe les dépendances, lance npm audit, enregistre les commandes, ferme les anciennes copies et démarre le bot
PUBLIER.bat Envoie le site sur GitHub (commit, récupération des changements faits en ligne, puis push)
ENVOYER-GITHUB.bat Envoie le code du bot sur le dépôt privé, après avoir vérifié qu’aucun secret ni donnée ne part
RESTAURER.bat Restaure une sauvegarde : il suffit de glisser le fichier .json.gz dessus

DEMARRER.bat (illustration)

Choix structurants et leurs raisons