{"id":22834690,"url":"https://github.com/decryptu/retardio","last_synced_at":"2026-01-23T19:07:21.749Z","repository":{"id":275019049,"uuid":"924812065","full_name":"Decryptu/retardio","owner":"Decryptu","description":"retardio","archived":false,"fork":false,"pushed_at":"2025-02-28T17:14:55.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T20:51:44.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Decryptu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-30T17:38:10.000Z","updated_at":"2025-02-28T17:14:58.000Z","dependencies_parsed_at":"2025-01-30T18:47:51.101Z","dependency_job_id":null,"html_url":"https://github.com/Decryptu/retardio","commit_stats":null,"previous_names":["decryptu/retardio"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decryptu%2Fretardio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decryptu%2Fretardio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decryptu%2Fretardio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decryptu%2Fretardio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Decryptu","download_url":"https://codeload.github.com/Decryptu/retardio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246408101,"owners_count":20772228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","coingecko","coingecko-api","crypto","crypto-bot","cryptobot","cryptocurrency","cryptocurrency-bot","discord","discord-bot","discord-js","ethereum"],"created_at":"2024-12-12T22:07:15.232Z","updated_at":"2026-01-23T19:07:21.738Z","avatar_url":"https://github.com/Decryptu.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Retardio Discord Bot\n\nBot Discord multifonction avec gestion de boissons, anniversaires et système de collection de cartes Pokémon.\n\n## Fonctionnalités\n\n### 🍵 Gestion de Boissons\n\nGestion de listes de thés, infusions, cafés et sirops avec sélection aléatoire.\n\n**Commandes:**\n\n- `/ajouter \u003ctype\u003e \u003cnom\u003e` - Ajouter une boisson à la liste\n- `/supprimer \u003ctype\u003e \u003cnom\u003e` - Supprimer une boisson de la liste\n- `/aleatoire \u003ctype\u003e [sirop]` - Choisir une boisson au hasard (avec option sirop)\n- `/liste \u003ctype\u003e` - Afficher la liste complète d'un type de boisson\n\n**Types disponibles:** thé, infusion, café, sirop\n\n**Stockage:** `data/boissons.json`\n\n### 🎂 Anniversaires\n\nSystème de rappel d'anniversaires avec vérification quotidienne automatique.\n\n**Commandes:**\n\n- `/anniversaire_ajouter \u003cjour\u003e \u003cmois\u003e [membre|nom]` - Ajouter un anniversaire\n- `/anniversaire_supprimer \u003cnom\u003e` - Supprimer un anniversaire\n- `/anniversaire_liste` - Afficher tous les anniversaires enregistrés\n\n**Fonctionnalités:**\n\n- Vérification quotidienne à minuit (timezone Paris)\n- Mention automatique dans le canal configuré\n- Support membres Discord et noms personnalisés\n- Stockage: `data/anniversaires.json`\n\n### 🎴 Pokémon Boosters\n\nSystème de collection de cartes avec boosters quotidiens, échanges, boutique et God Packs.\n\n**Commandes:**\n\n- `/booster` - Ouvrir un booster (quotidien gratuit ou depuis l'inventaire)\n- `/collection [utilisateur] [booster]` - Voir une collection avec menu de sélection\n- `/echange \u003cutilisateur\u003e` - Échanger des cartes via menu interactif\n- `/boutique` - Acheter des boosters et cartes promo\n- `/solde [utilisateur]` - Voir son solde de Poké Dollars (Ꝑ)\n- `/inventaire` - Voir ses boosters en stock\n- `/team` - Gérer son équipe de 3 Pokémon pour les raids\n- `/giftbooster \u003cutilisateur\u003e` - [ADMIN] Offrir un booster (reset cooldown)\n- `/forceraid` - [ADMIN] Déclencher un raid manuellement\n\n**Caractéristiques:**\n\n- 5 cartes par booster avec garantie Peu commun minimum\n- God Pack: 1/256 chance (toutes cartes Rare+)\n- Raretés: Commun (54%), Peu commun (28%), Rare (14%), Légendaire (4%), Promo\n- Économie: Gagnez des Ꝑ en discutant (5-15 Ꝑ/message, anti-spam)\n- Cartes Promo exclusives (achat en boutique, certaines limitées)\n- Images générées avec police pixel (PixelOperator8-Bold.ttf)\n- Admin whitelist configurable dans `tradeHandler.js` ligne 10\n\n### ⚔️ Système de Raids\n\nCombattez des boss Pokémon en équipe pour gagner des cartes rares !\n\n**Équipe:**\n\n- Utilisez `/team` pour configurer votre équipe de 3 Pokémon\n- Sélectionnez vos cartes via un menu avec pagination\n- Au moins 1 Pokémon requis pour rejoindre un raid\n\n**Raids:**\n\n- Apparition aléatoire (0.05% par message)\n- Niveaux: 50 (Peu commun), 75 (Rare), 100 (Légendaire)\n- Probabilités: 50% Peu commun, 40% Rare, 10% Légendaire\n- 5 minutes pour rejoindre avant le combat\n- Combat simulé par IA (stratégies Pokémon réalistes)\n\n**Récompenses (victoire):**\n\n- Carte du boss pour tous les participants\n- Bonus Ꝑ: 250 (Nv.50), 100 (Nv.75), 0 (Nv.100 - carte légendaire suffit !)\n\n**Stockage:**\n\n- Configuration: `data/boosters.json`, `data/rarities.json`, `data/godpack.json`\n- Cartes: `data/cards.json`\n- Utilisateurs: `data/db/{userId}.json` (1 fichier par utilisateur)\n- Assets: `assets/cards/`, `assets/backgrounds/`, `assets/fonts/`\n\n## Configuration\n\n**Fichiers requis:**\n\n- `config.js` - Token Discord, IDs client/guild, canal anniversaires\n- `data/boissons.json` - Listes de boissons\n- `data/anniversaires.json` - Anniversaires enregistrés\n- `data/cards.json` - Base de données des cartes\n- `data/boosters.json` - Configuration des boosters\n- `data/rarities.json` - Définition des raretés\n- `data/godpack.json` - Configuration God Pack\n\n**Variables d'environnement:**\n\n- `DISCORD_TOKEN` - Token du bot\n- `CLIENT_ID` - ID de l'application Discord\n- `GUILD_ID` - (Optionnel) ID du serveur pour commandes instantanées\n- `BIRTHDAY_CHANNEL_ID` - Canal pour les annonces d'anniversaires\n- `API_KEY` - Clé API OpenAI (pour les combats de raids)\n\n## Installation\n\n```bash\nbun install\nnode index.js\n```\n\n**Dépendances principales:**\n\n- discord.js - Framework Discord\n- canvas - Génération d'images\n- crypto - Nombres aléatoires sécurisés\n\n## Structure\n\n```tree\n/\n├── index.js                    # Point d'entrée\n├── commandHandler.js           # Commandes boissons\n├── birthdayHandler.js          # Système anniversaires\n├── pokemonHandler.js           # Système Pokémon\n├── shopHandler.js              # Boutique et économie\n├── cardGenerator.js            # Génération de cartes\n├── imageGenerator.js           # Création d'images\n├── userManager.js              # Gestion utilisateurs et économie\n├── messageHandler.js           # Traitement messages + récompenses\n├── config.js                   # Configuration\n├── data/\n│   ├── boissons.json\n│   ├── anniversaires.json\n│   ├── cards.json\n│   ├── boosters.json\n│   ├── rarities.json\n│   ├── godpack.json\n│   └── db/                     # Données utilisateurs (cartes, argent, inventaire)\n└── assets/\n    ├── cards/                  # Images cartes (300x363px)\n    ├── boosters/               # Images boosters\n    ├── backgrounds/            # Fonds (opening: 1600x543, collection: 1370x1100)\n    └── fonts/                  # PixelOperator8-Bold.ttf\n```\n\n## Notes Techniques\n\n- Timezone: Europe/Paris pour tous les resets\n- Cooldowns: Stockés par utilisateur dans fichiers JSON individuels\n- Sécurité: crypto.randomInt() pour God Pack et tirages de cartes\n- Cache: cardIds groupés par booster/rareté au démarrage\n- Images: Génération dynamique avec node-canvas, ombres sharp 3px\n- Interactions: Support menus déroulants et boutons Discord\n\n## Personnalisation\n\n**Admin Pokémon:** Modifier `ADMIN_WHITELIST` dans `tradeHandler.js` (ligne 10)\n\n**Économie:** Ajuster `ECONOMY_CONFIG` dans `userManager.js` (récompenses, cooldown, anti-spam)\n\n**Probabilités God Pack:** Éditer `data/godpack.json`\n\n**Raretés:** Ajuster probabilités dans `data/rarities.json`\n\n**Cartes:** Ajouter dans `data/cards.json` + images dans `assets/cards/`\n\n**Boosters:** Ajouter dans `data/boosters.json` + image dans `assets/boosters/`\n\n**Raids:** Ajuster `triggers.raidChance` dans `src/config/index.js` et `raidChannelId` pour le canal\n\n## Assets Images\n\nImages placées dans `assets/`. Le système utilise le center-crop (pas d'étirement).\n\n| Type | Fichier | Personnalisé | Taille recommandée |\n|------|---------|--------------|-------------------|\n| Cartes | `cards/card_{id}.png` | - | 300 x 363 px |\n| Boosters | `boosters/booster_{id}.png` | - | 200 x 280 px |\n| Ouverture | `backgrounds/opening_bg.png` | - | 1640 x 643 px |\n| Collection | `backgrounds/collection_bg.png` | `collection_{nom}.png` ou `collection_booster_{id}.png` | 1370 x variable |\n| Détail carte | `backgrounds/carddetail_bg.png` | `carddetail_card_{id}.png` (per-card) ou `carddetail_{nom}.png` (per-booster) | 380 x 563 px |\n| Équipe | `backgrounds/team_bg.png` | - | 1000 x 563 px |\n| Raid | `backgrounds/raid_bg.png` | - | 800 x 500 px |\n\n**Priorité détail carte:** per-card → per-booster → générique → dégradé\n\n**Nommage per-booster:** Le nom est en minuscules, caractères spéciaux remplacés par `_` (ex: \"Puissance Génétique\" → `collection_puissance_g_n_tique.png`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptu%2Fretardio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecryptu%2Fretardio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptu%2Fretardio/lists"}