Prérequis
- Node.js ≥ 18.
- Un numéro WhatsApp secondaire est fortement conseillé.
ffmpegest fourni viaffmpeg-static; rien à installer à l’extérieur.
Cloner et installer
git clone https://github.com/Beaute-Gar/DJOUSSE-TECH-MD.git cd DJOUSSE-TECH-MD npm install
Configurer l’instance
Crée un fichier .env à la racine. Les valeurs d’identité indiquées sont des exemples; remplace-les. Le fichier est ignoré par git. Ne colle jamais de clé réelle dans le site ou dans un dépôt public.
# ── Identité ───────────────────────────────────── BOT_NAME=DJOUSSE TECH OWNER_NAME=Ton Nom OWNER_NUMBER=237XXXXXXXXX AUTO_OWNER=1 # ── Commandes ──────────────────────────────────── PREFIX=. # ── Connexion ──────────────────────────────────── # Le pairing code est utilisé par défaut ; CONNECT_METHOD=qr pour le QR SESSION_DIR=sessions/djsession CONNECT_METHOD=pairing PAIRING_PHONE= # ── Image du menu ──────────────────────────────── # random = photo aléatoire (Picsum) · local = image fixe · off = bannière générée MENU_PICTURE_MODE=local MENU_PICTURE_PATH=assets/menu-hacker.jpg # Régénérer : node scripts/menu-image.js "DJOUSSE TECH" assets/menu-hacker.jpg # ── IA (optionnel) ─────────────────────────────── # Sans clé, .ai renvoie un message explicite. # Gemini = provider principal ; repli automatique sur OpenRouter # (liste ordonnée de modèles séparés par des virgules). GEMINI_KEY= OPENROUTER_API_KEY= # OPENROUTER_MODEL=nvidia/nemotron-3-super-120b-a12b:free,nvidia/nemotron-3.5-lightning:free,google/gemma-4-31b-it:free # ── Protections par défaut ─────────────────────── ANTILINK=0 ANTI_DELETE=0 WELCOME=0 ANTI_LEFT=0 # WELCOME et ANTI_LEFT = valeurs par défaut des NOUVEAUX groupes. # Pour les groupes existants : .welcome on all / .goodbye on all # ── DJOUSSE GUARD ──────────────────────────────── GUARD_TZ=Africa/Douala GUARD_LOG=0 GUARD_DB=guard.json # ── Auto-Statuts ───────────────────────────────── AUTO_STATUS_SEEN=true AUTO_STATUS_REACT=true AUTO_STATUS_REPLY=false AUTO_STATUS_MSG=Statut vu par DJOUSSE TECH MD ✅ CUSTOM_REACT_EMOJIS=❤️,🔥,💯,😍,👏 # ── Modes ──────────────────────────────────────── # public = tout le monde peut commander (commandes owner protégées) # self = seul le propriétaire peut commander MODE=public # PUBLIC_MODE=on REJECT_CALL=1 AUTO_READ=1 LINK_PREVIEW=1 MSG_CACHE_MAX=800 # ── API de jumelage (optionnelle, désactivée) ──── PAIRING_API=off # PAIRING_API_PORT=8089 # PAIRING_API_TOKEN= # SERVE_SITE=on
Les clés IA sont facultatives. Sans clé configurée, la commande IA affiche un message explicite. Le jeton d’API de jumelage, s’il est configuré, reste uniquement côté bot ou fonction serveur; il ne doit jamais apparaître dans le JavaScript du navigateur.
Démarrer
npm start
Au premier lancement, le terminal affiche le code de jumelage. Dans WhatsApp : Appareils connectés → Connecter un appareil → Associer avec un numéro de téléphone. Les identifiants sont écrits dans sessions/djsession/, ignoré par git. npm run audit s’exécute avant chaque démarrage; npm run check vérifie la syntaxe des fichiers principaux.
Service détaché sous Windows
Le service survit à la fermeture du terminal et écrit dans logs/bot.log.
node scripts/service.js start node scripts/service.js status node scripts/service.js stop
Suivi en direct : Get-Content logs\bot.log -Tail 20 -Wait.
Hébergement multiplateforme
Le bot est un worker sans port, sauf si l’API de jumelage est activée. Il tourne sur un VPS, Docker, Render, Fly.io, Railway, Heroku ou Replit.
| Plateforme | Fichier | Lancer avec |
|---|---|---|
| VPS / serveur maison | docker-compose.yml | docker compose up -d --build |
| Docker générique | Dockerfile | docker build -t djousse . puis docker run --env-file .env -v ./sessions:/app/sessions -v ./data:/app/data -d djousse |
| Render | render.yaml | New → Blueprint (service worker) |
| Fly.io | fly.toml | fly launch --copy-config puis créer le volume djousse_state |
| Heroku | Procfile + app.json | heroku create, puis déploiement git |
| Replit | .replit | ▶ Run; Always On recommandé |
Le site peut être hébergé séparément de ce worker. Vercel convient au site statique et à ses fonctions de relais; il ne remplace pas un processus WhatsApp persistant.
Règles d’or du cloud
- Persistance : monte
sessions/etdata/sur un volume; sans lui, chaque redémarrage impose un réappairage. Heroku et le plan gratuit de Render n’ont pas de disque persistant. - Code d’appairage : utilise
CONNECT_METHOD=pairingetPAIRING_PHONEdans les variables d’environnement; le code apparaît dans les logs de la plateforme. - Une seule instance : garde un seul déploiement actif par numéro.
- QR : le QR brut n’est jamais lisible depuis un log; préfère le mode pairing.