whatsapp-universal
v1.0.4
Published
Un package WhatsApp universel qui fonctionne sur tous les systèmes sans dépendre du navigateur
Downloads
17
Maintainers
Readme
WhatsApp Universal 📱
Un package WhatsApp universel qui fonctionne sur tous les systèmes sans dépendre du navigateur. Conçu pour être léger, rapide et compatible avec Node.js sur Windows, Linux et macOS.
🚀 Caractéristiques
- ✅ Multi-plateforme : Fonctionne sur Windows, Linux et macOS
- 🚫 Sans navigateur : Aucune dépendance à Puppeteer ou navigateur
- 🔄 Reconnexion automatique : Gestion intelligente des déconnexions
- 📱 QR Code intégré : Authentification simple via QR code
- 🎯 Événements avancés : Système d'événements complet avec middlewares
- 📨 Gestion complète : Messages, contacts, groupes et médias
- 🛡️ Sécurisé : Gestion sécurisée des sessions et données
- 📊 Statistiques : Suivi des événements et performances
📦 Installation
npm install whatsapp-universal🔧 Configuration requise
- Node.js >= 14.0.0
- Aucune dépendance système supplémentaire
🚀 Utilisation rapide
Exemple basique
import WhatsAppUniversal from 'whatsapp-universal';
// Créer une instance
const whatsapp = new WhatsAppUniversal();
// Configurer les événements
whatsapp.on('ready', () => {
console.log('WhatsApp est prêt!');
});
whatsapp.on('qr', (qrData) => {
console.log('Scannez ce QR code avec votre téléphone');
// Le QR code s'affiche automatiquement dans le terminal
});
whatsapp.on('authenticated', (session) => {
console.log('Authentifié avec succès!');
});
whatsapp.on('message', (message) => {
console.log('Nouveau message:', message.body);
});
// Initialiser la connexion
whatsapp.initialize();Envoi de messages
// Message texte
await whatsapp.sendMessage('[email protected]', 'Bonjour!');
// Message avec média
await whatsapp.sendMedia('[email protected]', './image.jpg', 'Voici une image');
// Vérifier si un numéro est enregistré
const isRegistered = await whatsapp.isRegisteredUser('1234567890');
if (isRegistered) {
await whatsapp.sendMessage('[email protected]', 'Message envoyé!');
}📚 Documentation complète
Initialisation avec options
const whatsapp = new WhatsAppUniversal({
autoReconnect: true, // Reconnexion automatique
reconnectInterval: 5000, // Intervalle de reconnexion (ms)
maxReconnectAttempts: 10 // Nombre max de tentatives
});Gestion des événements
Événements principaux
// Connexion et authentification
whatsapp.on('ready', () => {});
whatsapp.on('qr', (qrData) => {});
whatsapp.on('authenticated', (session) => {});
whatsapp.on('disconnected', () => {});
// Messages
whatsapp.on('message', (message) => {});
whatsapp.on('message_sent', (message) => {});
// Contacts et chats
whatsapp.on('contacts_loaded', (contacts) => {});
whatsapp.on('chats_loaded', (chats) => {});
// Erreurs
whatsapp.on('error', (error) => {});Événements avancés avec options
// Listener avec priorité
whatsapp.addListener('message', (message) => {
console.log('Message prioritaire:', message.body);
}, { priority: 100 });
// Listener conditionnel
whatsapp.onCondition('message',
(message) => !message.isFromMe, // Condition
(message) => {
console.log('Message reçu:', message.body);
}
);
// Listener avec délai
whatsapp.onDelayed('message', 1000, (message) => {
console.log('Message traité après 1 seconde');
});Gestion des contacts
import { searchContacts, sortContactsByName } from 'whatsapp-universal/utils/contactUtils';
// Récupérer tous les contacts
const contacts = await whatsapp.getContacts();
// Rechercher des contacts
const results = searchContacts(contacts, 'John');
// Trier les contacts
const sorted = sortContactsByName(contacts, 'asc');
// Créer un contact
const newContact = createContactFromNumber('+1234567890', 'John Doe');Gestion des messages
import { formatPhoneNumber, validateMessageContent } from 'whatsapp-universal/utils/messageUtils';
// Formater un numéro
const chatId = formatPhoneNumber('+1234567890'); // Retourne: [email protected]
// Valider un message
const validation = validateMessageContent('Mon message');
if (validation.isValid) {
await whatsapp.sendMessage(chatId, 'Mon message');
}
// Détecter les mentions
const mentions = detectMentions('Salut @1234567890 comment ça va?');Middlewares
// Middleware de logging
whatsapp.addMiddleware('message', (args) => {
const [message] = args;
console.log(`[LOG] ${message.from}: ${message.body}`);
return args;
});
// Middleware de filtrage
whatsapp.addMiddleware('message', (args) => {
const [message] = args;
if (message.body.includes('spam')) {
return null; // Annule le traitement
}
return args;
});🤖 Exemples d'utilisation
Bot de réponse automatique
const commands = {
'/help': 'Commandes: /time, /ping, /info',
'/time': () => new Date().toLocaleString(),
'/ping': 'Pong! 🏓',
'/info': 'Bot WhatsApp Universal v1.0.0'
};
whatsapp.on('message', async (message) => {
if (message.isFromMe) return;
const command = message.body.toLowerCase().trim();
if (commands[command]) {
const response = typeof commands[command] === 'function'
? commands[command]()
: commands[command];
await whatsapp.sendMessage(message.chatId, response);
}
});Gestionnaire de groupes
whatsapp.on('message', async (message) => {
// Seulement dans les groupes
if (!message.chatId.includes('@g.us')) return;
// Commandes d'administration
if (message.body === '/membres') {
const chat = await whatsapp.getChatById(message.chatId);
const count = chat.participants?.length || 0;
await whatsapp.sendMessage(message.chatId, `Ce groupe a ${count} membres`);
}
});Sauvegarde automatique
import fs from 'fs';
whatsapp.on('message', (message) => {
// Sauvegarde tous les messages
const logEntry = {
timestamp: new Date().toISOString(),
from: message.from,
chatId: message.chatId,
body: message.body,
type: message.type
};
fs.appendFileSync('messages.log', JSON.stringify(logEntry) + '\n');
});🔍 Méthodes disponibles
Connexion
initialize()- Initialise la connexiondisconnect()- Déconnecte WhatsAppreconnect()- Reconnecte manuellementgetConnectionStatus()- Obtient le statut de connexion
Messages
sendMessage(chatId, message)- Envoie un message textesendMedia(chatId, mediaPath, caption)- Envoie un médiaisRegisteredUser(number)- Vérifie si un numéro est enregistré
Contacts et Chats
getContacts()- Récupère tous les contactsgetChats()- Récupère tous les chatsgetChatById(chatId)- Récupère un chat spécifique
Événements avancés
addListener(event, callback, options)- Ajoute un listener avec optionsaddMiddleware(event, middleware)- Ajoute un middlewarewaitForEvent(event, timeout)- Attend un événementemitAsync(event, ...args)- Émet un événement de manière asynchrone
🛠️ Utilitaires
Messages (utils/messageUtils.js)
formatPhoneNumber(number)- Formate un numéro pour WhatsAppvalidateMessageContent(content)- Valide le contenu d'un messagedetectMentions(content)- Détecte les mentions dans un messagecreateReplyMessage(original, reply)- Crée un message de réponse
Contacts (utils/contactUtils.js)
createContact(data)- Crée un objet contactvalidatePhoneNumber(number)- Valide un numéro de téléphonesearchContacts(contacts, query)- Recherche dans les contactssortContactsByName(contacts, order)- Trie les contacts par nom
📊 Statistiques et débogage
// Obtenir les statistiques d'événements
const stats = whatsapp.getEventStats();
console.log('Statistiques:', stats);
// Obtenir l'historique des événements
const history = whatsapp.getEventHistory('message', 50);
console.log('Derniers 50 messages:', history);
// Informations de débogage
const debug = whatsapp.getDebugInfo();
console.log('Debug:', debug);🚨 Gestion d'erreurs
whatsapp.on('error', (error) => {
console.error('Erreur WhatsApp:', error.message);
// Gestion spécifique selon le type d'erreur
switch (error.code) {
case 'CONNECTION_LOST':
console.log('Tentative de reconnexion...');
whatsapp.reconnect();
break;
case 'AUTH_FAILURE':
console.log('Échec d\'authentification, nouveau QR requis');
break;
default:
console.log('Erreur inconnue:', error);
}
});🔒 Sécurité
- Les sessions sont gérées de manière sécurisée
- Aucune donnée sensible n'est stockée en plain text
- Validation automatique des entrées utilisateur
- Protection contre les attaques par déni de service
🤝 Contribution
Les contributions sont les bienvenues! Veuillez:
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request
📄 Licence
MIT License - voir le fichier LICENSE pour plus de détails.
🆘 Support
Pour obtenir de l'aide:
- 📖 Consultez cette documentation
- 🐛 Ouvrez une issue sur GitHub
- 💬 Rejoignez notre communauté
🔄 Changelog
v1.0.0
- ✨ Version initiale
- 🚀 Support multi-plateforme
- 📱 Authentification QR Code
- 📨 Envoi/réception de messages
- 👥 Gestion des contacts
- 🎯 Système d'événements avancé
WhatsApp Universal - Un package moderne pour intégrer WhatsApp dans vos applications Node.js 🚀
