# WhatsApp Poll Relay Bot

Bot WhatsApp basé sur `whatsapp-web.js` pour suivre des sondages dans des groupes ciblés, compter les votes, relancer en privé les personnes qui n'ont pas répondu, et exporter les votes dans Google Sheets.

## Fonctionnalités

- Détection des messages de type sondage dans des groupes configurés
- Comptage des réponses par option
- Relances privées automatiques aux non-répondants après un délai configurable
- Plusieurs relances espacées dans le temps
- Export optionnel des votes vers Google Sheets
- Persistance locale des sondages pour redémarrer sans perte d'état

## Installation

```bash
npm install
```

## Configuration

1. Crée `config/groups.js` et remplace l'identifiant du groupe par le vrai JID du groupe WhatsApp, par exemple `1234567890-123456@g.us`.
2. Option recommandée: lance le scan interactif pour lister tous les groupes et en ajouter plusieurs automatiquement:

```bash
npm run groups:scan
```

3. Crée un fichier `.env` avec au minimum :

```env
WWEBJS_CLIENT_ID=survey-bot
PUPPETEER_HEADLESS=true
SCAN_INTERVAL_MINUTES=1
BOOTSTRAP_RECENT_POLLS=true
BOOTSTRAP_LOOKBACK_DAYS=30
```

Le bot recharge automatiquement les sondages historiques du groupe sur `BOOTSTRAP_LOOKBACK_DAYS` jours (30 par défaut).

4. Si tu veux Google Sheets :

```env
GOOGLE_SHEETS_SPREADSHEET_ID=ton_id_de_sheet
GOOGLE_SHEETS_TAB_NAME=Votes
GOOGLE_APPLICATION_CREDENTIALS=C:\chemin\vers\service-account.json
```

Le scan te propose des index (ex: `1,3,5`) ou des plages (ex: `2-6`) pour ajouter plusieurs groupes en une fois.
Par défaut, ce scan utilise un `WWEBJS_CLIENT_ID` dédié (`survey-bot-scan`) pour éviter le conflit avec le bot principal déjà lancé.

Pour chercher un groupe précis (ex: `RdB_Projet_Bot`):

```bash
$env:TARGET_GROUP_NAME="RdB_Projet_Bot"; npm run groups:scan
```

Si tu as un timeout Puppeteer/ProtocolError sur machine lente:

```bash
$env:PUPPETEER_PROTOCOL_TIMEOUT_MS="600000"; $env:WWEBJS_AUTH_TIMEOUT_MS="180000"; npm run groups:scan
```

## Lancement

```bash
npm start
```

Au premier lancement, le bot affiche un QR code dans le terminal. Une fois la session enregistrée, il peut redémarrer tout seul grâce à `LocalAuth`.

## Comment ça marche

- Le bot surveille les groupes définis dans `config/groups.js`.
- Dès qu'un sondage est détecté, il crée un suivi local dans `data/state.json`.
- Au démarrage, il tente aussi de retrouver les sondages des 30 derniers jours dans les groupes configurés.
- Toutes les minutes, il recalcule les votes et envoie des relances privées aux contacts qui n'ont pas encore répondu.
- Quand le nombre maximum de relances est atteint, il envoie un récapitulatif et arrête le suivi de ce sondage.

## Commande de relance immédiate

Depuis ton propre compte dans le groupe surveillé, envoie:

```text
!relance-now
```

Le bot force alors une relance immédiate sur les sondages actifs du groupe, sans attendre l'automatisation (pratique pour les tests et les relances ponctuelles).

## Limites

- WhatsApp ne permet pas de fermer proprement un sondage via cette bibliothèque; le bot gère les relances et le suivi, pas la fermeture native du sondage.
- L'envoi de messages privés dépend de la visibilité des contacts et des règles de WhatsApp.
- `whatsapp-web.js` reste une surcouche non officielle de WhatsApp Web, donc il existe un risque de blocage.
