BotGee est mon bot Discord personnel. Son rôle principal : faire écouter de la musique dans un salon vocal, à partir d’un simple nom de chanson ou d’un lien Apple Music, Spotify, YouTube ou SoundCloud. Il gère les files d’attente, le mélange, la répétition et les playlists complètes. Le bot est volontairement privé : moi seul peux l’ajouter à un serveur, ce qui en fait un outil pour mon cercle proche plutôt qu’un service public. Il sert aussi de point d’entrée à mon jeu musical Hitster entre potes, qu’on peut lancer directement depuis Discord.

Le bot repose sur Node.js et discord.js v14 ; la lecture audio passe par l’écosystème discord-player. Plutôt que de payer l’accès à l’API officielle d’Apple Music, BotGee lit les métadonnées (titre, artiste) d’un lien Apple Music ou Spotify, puis retrouve et diffuse l’équivalent sur YouTube. Quand l’extracteur intégré échouait sur certaines playlists Apple Music, j’ai codé un système de secours : il analyse la page publique de la playlist (données JSON-LD, puis balises meta en repli) et relance une recherche précise, avec l’artiste, pour chaque titre. La commande /play offre une autocomplétion native : pendant la frappe, une recherche en temps réel propose jusqu’à cinq morceaux cliquables. Le bot tourne 24 h sur 24 sur mon VPS, géré par PM2 avec redémarrage automatique.

Commandes

  • /play : joue un morceau ou une playlist, avec autocomplétion
  • /queue, /skip, /shuffle, /stop : gestion de la file d’attente
  • /loop : répétition du morceau ou de toute la file
  • /hitster : crée une partie de Hitster entre potes et envoie à chaque joueur son lien personnel

Défis techniques

Pour éviter la compilation native sous Windows, j’ai remplacé @discordjs/opus par opusscript, un encodeur écrit entièrement en JavaScript. J’ai aussi changé d’extracteur YouTube quand l’ancien ne parvenait plus à déchiffrer les flux. Enfin, j’ai corrigé des résultats imprécis en ajoutant systématiquement le nom de l’artiste aux recherches.

  • Code source BotGee :
    Dépôt privé, disponible sur demande
  • Projet lié :
    Hitster entre potes