# đŸŒŠïž Discord MĂ©tĂ©o Bot Bot Discord ultra-complet avec mĂ©tĂ©o temps rĂ©el, graphiques et donnĂ©es marines. **Aucune API payante.** ## ✹ FonctionnalitĂ©s | FonctionnalitĂ© | DĂ©tails | |---|---| | `/meteo` | Rapport complet Ă  la demande | | ⏰ Message quotidien | Heure configurable via `.env` | | 📊 5 graphiques | TempĂ©rature, vent, pluie, pression, nuages | | 🌊 DonnĂ©es marines | Vagues, houle, direction (si cĂŽtier) | | 🌙 Phase lunaire | Calcul local, illumination | | 🌅 Astronomie | Lever/coucher soleil, durĂ©e du jour | | ⚠ Alertes mĂ©tĂ©o | Vent fort, pluie intense, orage, brouillard | | 📊 Comparaison J-1 | TempĂ©rature, pluie, vent vs hier | | 🔧 Mode debug | DonnĂ©es brutes + diagnostics | | đŸ’Ÿ Cache 10 min | Évite le spam API | ## 🚀 Installation ### 1. PrĂ©requis - **Node.js >= 18** — [tĂ©lĂ©charger](https://nodejs.org) - Un bot Discord (token + permissions) ### 2. Cloner / tĂ©lĂ©charger ```bash # Placer tous les fichiers dans un dossier cd discord-meteo-bot npm install ``` ### 3. Configurer le bot Discord 1. Aller sur [discord.com/developers/applications](https://discord.com/developers/applications) 2. CrĂ©er une nouvelle application → **Bot** → **Reset Token** → copier le token 3. Dans **OAuth2 → URL Generator** : - Scopes : `bot`, `applications.commands` - Bot Permissions : `Send Messages`, `Embed Links`, `Attach Files` 4. Utiliser le lien gĂ©nĂ©rĂ© pour inviter le bot sur votre serveur ### 4. Configurer le `.env` ```bash cp .env.example .env # Puis Ă©diter .env avec vos valeurs ``` ```env DISCORD_TOKEN=MTUx... # Token du bot Discord CHANNEL_ID=1234567890123456789 # ID du channel (clic droit → Copier l'ID) SEND_HOUR=7 # Heure d'envoi du message quotidien SEND_MINUTE=30 # Minute d'envoi LAT=44.6310 # Latitude LON=-1.0215 # Longitude LOCATION_NAME=Lacanau-OcĂ©an # Nom affichĂ© dans Discord DEBUG_METEO=false # true pour le mode debug CACHE_MINUTES=10 # DurĂ©e du cache API ``` > **Activer l'ID Discord** : ParamĂštres Discord → AvancĂ© → Mode dĂ©veloppeur ✅ ### 5. Lancer le bot ```bash # Production npm start # DĂ©veloppement (rechargement auto) npm run dev ``` ## 📩 APIs utilisĂ©es | API | Usage | ClĂ© requise | |---|---|---| | [Open-Meteo](https://open-meteo.com/) | MĂ©tĂ©o complĂšte (temp, vent, pluie
) | ❌ Gratuit | | [Open-Meteo Marine](https://open-meteo.com/en/docs/marine-weather-api) | Vagues, houle | ❌ Gratuit | | [Sunrise-Sunset.org](https://sunrise-sunset.org/api) | Lever/coucher soleil | ❌ Gratuit | | [QuickChart.io](https://quickchart.io/) | GĂ©nĂ©ration des graphiques | ❌ Gratuit | | Phase lunaire | Calcul mathĂ©matique local | ❌ Aucune | ## đŸ—ïž Architecture ``` discord-meteo-bot/ ├── index.js # Bot principal, cron, routing ├── commands/ │ └── meteo.js # Commande /meteo + buildEmbed + sendReport ├── services/ │ ├── weather.js # Open-Meteo API, cache, helpers │ ├── astronomy.js # Sunrise-Sunset API, phase lunaire │ └── charts.js # GĂ©nĂ©ration graphiques via QuickChart ├── .env # Configuration (ne pas committer!) ├── .env.example # Template └── package.json ``` ## 🎹 Aperçu de l'embed ``` ⛅ Partiellement nuageux — Lacanau-OcĂ©an 22.4°C · Ressenti 20.1°C · 🌞 Jour đŸŒĄïž TempĂ©ratures 💹 Vent đŸŒ§ïž PrĂ©cipitations Actuelle : 22.4°C Vitesse : 28 km/h Actuelle : 0.2 mm/h Ressentie : 20.1°C Rafales : 41 km/h Proba. : 30% Max / Min : 26°C/14°C Dir. : OSO (255°) Pluie : 0.2 mm/h HumiditĂ© : 72% Max : 52 km/h Total : 3.4 mm đŸ”” AtmosphĂšre ☁ Nuages đŸ‘ïž VisibilitĂ© Pression : 1012 hPa ↓ Total : 45% 18.0 km UV Index : 6 — 🟠 ÉlevĂ© Bas : 30% 👍 Bonne UV max : 8 Moyen : 10% Haut : 5% 🌅 Astronomie 🌅 Lever : 07:24 🌇 Coucher : 20:48 ☀ ZĂ©nith : 14:06 ⏱ DurĂ©e : 13h24min 🌙 Phase lunaire 🌊 DonnĂ©es marines 🌒 Croissant montant Hauteur : 1.4 m Illumination : 38% PĂ©riode : 8.5 s Jour J+4.3 Dir. : NO (325°) 📊 Comparaison avec hier Temp max : +1.8°C ↑ Pluie : -2.1 mm ↓ Vent max : +8 km/h ↑ ``` Suivi des **5 graphiques** (image sĂ©parĂ©e) : - đŸŒĄïž TempĂ©ratures sur 24h - 💹 Vent sur 24h (vitesse + rafales) - đŸŒ§ïž PrĂ©cipitations sur 24h (mm + probabilitĂ©) - đŸ”” Pression atmosphĂ©rique sur 24h - ☁ Couverture nuageuse sur 24h (total + bas/moyen/haut) ## ⚙ Mode Debug Mettre `DEBUG_METEO=true` dans le `.env` pour ajouter un champ debug Ă  l'embed : - Heure de mise en cache - Index horaires courants - Source des donnĂ©es astronomiques - Nombre de graphiques gĂ©nĂ©rĂ©s ## 🔧 Personnalisation rapide **Changer la frĂ©quence du cache :** ```env CACHE_MINUTES=15 ``` **Forcer deux messages par jour :** Dupliquer le bloc `cron.schedule()` dans `index.js` avec un deuxiĂšme horaire. **Ajouter une autre localisation :** CrĂ©er un second `.env` ou passer les coordonnĂ©es en argument. ## 🐛 DĂ©pannage | ProblĂšme | Solution | |---|---| | `Missing Access` | VĂ©rifier les permissions du bot dans le channel | | Commandes non visibles | Les commandes globales prennent jusqu'Ă  1h. RĂ©inviter le bot. | | Graphiques manquants | QuickChart peut ĂȘtre temporairement indisponible — rĂ©essayez | | Marine non disponible | Normal pour les localisations Ă©loignĂ©es des cĂŽtes | | `Unknown Channel` | VĂ©rifier le CHANNEL_ID dans .env | ## 📝 DĂ©pendances ```json { "discord.js": "^14.14.1", "axios": "^1.6.8", "node-cron": "^3.0.3", "dotenv": "^16.4.5" } ```