Documentation

Installer et héberger ton bot.

Le site vitrine est statique; le worker WhatsApp doit tourner séparément sur un environnement persistant.

Prérequis

  • Node.js ≥ 18.
  • Un numéro WhatsApp secondaire est fortement conseillé.
  • ffmpeg est fourni via ffmpeg-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.

PlateformeFichierLancer avec
VPS / serveur maisondocker-compose.ymldocker compose up -d --build
Docker génériqueDockerfiledocker build -t djousse . puis docker run --env-file .env -v ./sessions:/app/sessions -v ./data:/app/data -d djousse
Renderrender.yamlNew → Blueprint (service worker)
Fly.iofly.tomlfly launch --copy-config puis créer le volume djousse_state
HerokuProcfile + app.jsonheroku 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

  1. Persistance : monte sessions/ et data/ 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.
  2. Code d’appairage : utilise CONNECT_METHOD=pairing et PAIRING_PHONE dans les variables d’environnement; le code apparaît dans les logs de la plateforme.
  3. Une seule instance : garde un seul déploiement actif par numéro.
  4. QR : le QR brut n’est jamais lisible depuis un log; préfère le mode pairing.
ImportantLe worker Baileys doit être exécuté dans un environnement persistant. Les fonctions serverless de Vercel servent au site et au relais sécurisé du jumelage, pas au worker WhatsApp.