Melodix Player est mon projet personnel qui diffuse de l'audio depuis YouTube et des liens de diffusion audio vers les salons vocaux Discord.
- 🎶 Ajout d'un seul morceau par titre ou lien YouTube.
- 🎶 Ajout de plusieurs morceaux via plusieurs liens YouTube (séparés par des espaces).
- 🎶 Morceaux de listes de lecture publiques d'utilisateurs.
- 🎶 Morceaux de listes de lecture "MIX".
- 📻 Liens de diffusion (par exemple, stations de radio).
- 🌐 Fonctionnement sur plusieurs serveurs Discord (gestion des guildes).
- 📜 Accès à l'historique des morceaux précédemment joués avec options de tri.
- 💾 Téléchargement de morceaux depuis YouTube au format mp3 pour mise en cache.
- 🎼 Chargement latéral de fichiers audio mp3.
- 🎬 Chargement latéral de fichiers vidéo avec extraction audio au format mp3.
- 🔄 Prise en charge de la reprise automatique de la lecture en cas d'interruption de connexion.
- 🛠️ Prise en charge de l'API REST (limitée pour le moment).
- 🚫 Le bot ne peut pas diffuser en continu depuis YouTube.
- ⏸️ La reprise automatique de la lecture crée des pauses perceptibles.
- ⏩ Parfois, la vitesse de lecture est légèrement plus rapide que prévu.
- 🐞 Il n'est pas exempt de bugs.
Vous pouvez tester Melodix de deux manières :
-
🖥️ Téléchargez les binaires compilés (disponibles uniquement pour Windows). Assurez-vous que FFMPEG est installé sur votre système et ajouté à la variable d'environnement PATH globale (ou spécifiez le chemin vers FFMPEG directement dans le fichier de configuration
.env
). Suivez la section "Créer un bot dans le portail des développeurs Discord" pour configurer le bot dans Discord. -
🎙️ Rejoignez le serveur Discord officiel et utilisez les canaux vocaux et
#bot-spam
.
Melodix Player prend en charge diverses commandes avec des alias respectifs (si applicable). Certaines commandes nécessitent des paramètres supplémentaires.
!play [titre|url|flux|id]
(alias :!p ..
,!> ..
) — Paramètres : nom du morceau, URL YouTube, URL de diffusion audio, ID de l'historique.!skip
(alias :!next
,!>>
) — Passer au morceau suivant dans la file d'attente.!pause
(alias :!!
) — Mettre la lecture en pause.!resume
(alias :!r
,!!>
) — Reprendre la lecture en pause ou démarrer la lecture si un morceau a été ajouté via!add ..
.!stop
(alias :!x
) — Arrêter la lecture, vider la file d'attente et quitter le salon vocal.
!add [titre|url|flux|id]
(alias :!a
,!+
) — Paramètres : nom du morceau, URL YouTube, URL de diffusion audio, ID de l'historique (identique à celui de!play ..
).!list
(alias :!queue
,!l
,!q
) — Afficher la file d'attente actuelle des morceaux.
!history
(alias :!time
,!t
) — Afficher l'historique des morceaux récemment joués. Chaque morceau dans l'historique a un ID unique pour la lecture/file d'attente.!history count
(alias :!time count
,!t count
) — Trier l'historique par nombre de lectures.!history duration
(alias :!time duration
,!t duration
) — Trier l'historique par durée des morceaux.
!help
(alias :!h
,!?
) — Afficher une aide sous forme de mémo.!help play
— Informations supplémentaires sur les commandes de lecture.!help queue
— Informations supplémentaires sur les commandes de file d'attente.!about
(alias :!v
) — Afficher la version (date de construction) et les liens associés.whoami
— Envoyer des informations liées à l'utilisateur dans le journal. Nécessaire pour configurer le superadmin dans le fichier.env
.
Ces commandes sont uniquement disponibles pour les superadmins (propriétaires de serveur hôte).
!curl [URL YouTube]
— Télécharger sous forme de fichier mp3 pour une utilisation ultérieure.!cached
— Afficher les fichiers actuellement mis en cache (du répertoirecached
). Chaque serveur opère ses propres fichiers.!cached sync
— Synchroniser les fichiers mp3 ajoutés manuellement dans le répertoirecached
.!uploaded
— Afficher les clips vidéo téléchargés dans le répertoireuploaded
.!uploaded extract
— Extraire les fichiers mp3 des clips vidéo et les stocker dans le répertoirecached
.
!register
— Activer l'écoute des commandes Melodix (à exécuter une fois pour chaque nouveau serveur Discord).!unregister
— Désactiver l'écoute des commandes.melodix-prefix
— Afficher le préfixe actuel (!
par défaut, voir le fichier.env
).melodix-prefix-update "[new_prefix]"
— Définir un préfixe personnalisé pour une guilde afin d'éviter les collisions avec d'autres bots.melodix-prefix-reset
— Revenir au préfixe par défaut défini dans le fichier.env
.
Pour utiliser la commande play
, fournissez le titre d'une vidéo YouTube, son URL ou son ID d'historique :
!play Never Gonna Give You Up
!p https://www.youtube.com/watch?v=dQw4w9WgXcQ
!> 5 (en supposant que 5 est un ID de l'historique à partir de `!history`)
Pour ajouter un morceau à la file d'attente, utilisez :
!add Never Gonna Give You Up
!resume
Pour ajouter Melodix à un serveur Discord, suivez ces étapes :
- Créez une application dans le portail des développeurs Discord et obtenez l'
APPLICATION_ID
(dans la section Général). - Dans la section Bot, activez les
INTENTIONS DE PRÉSENCE
,INTENTIONS DE MEMBRES DU SERVEUR
etINTENTIONS DE CONTENU DES MESSAGES
. - Utilisez le lien suivant pour autoriser le bot :
discord.com/oauth2/authorize?client_id=YOUR_APPLICATION_ID&scope=bot&permissions=36727824
- Remplacez
YOUR_APPLICATION_ID
par l'ID de votre application de bot obtenu à l'étape 1.
- Remplacez
- Sélectionnez un serveur et cliquez sur "Autoriser".
- Accordez les autorisations nécessaires à Melodix pour qu'il fonctionne correctement (accès aux canaux de texte et de voix).
Après avoir ajouté le bot, compilez-le à partir des sources ou téléchargez les binaires compilés. Les instructions de déploiement Docker sont disponibles dans docker/README.md
.
Ce projet est écrit en Go, assurez-vous donc que votre environnement est prêt. Utilisez les scripts fournis pour compiler Melodix Player à partir des sources :
bash-and-run.bat
(ou.sh
pour Linux) : Compilez la version de débogage et exécutez-la.build-release.bat
(ou.sh
pour Linux) : Compilez la version de release.assemble-dist.bat
: Compilez la version de release et assemblez-la comme un package de distribution (Windows uniquement).
Renommez .env.example
en .env
et stockez votre token de bot Discord dans la variable DISCORD_BOT_TOKEN
. Installez FFMPEG (seules les versions récentes sont prises en charge). Si vous utilisez un FFMPEG portable, spécifiez le chemin dans DCA_FFMPEG_BINARY_PATH
dans le fichier .env
.
Pour le déploiement Docker, référez-vous à docker/README.md
pour des instructions spécifiques.
Melodix Player fournit plusieurs routes API, susceptibles de changer.
GET /guild/ids
: Récupérer les IDs de guilde actives.GET /guild/playing
: Obtenir des informations sur le morceau en cours de lecture dans chaque guilde active.
GET /history
: Accéder à l'historique global des morceaux joués.GET /history/:guild_id
: Récupérer l'historique des morceaux joués pour une guilde spécifique.
GET /avatar
: Liste des images disponibles dans le dossier d'avatar.GET /avatar/random
: Récupérer une image aléatoire dans le dossier d'avatar.
GET /log
: Afficher le journal actuel.GET /log/clear
: Effacer le journal.GET /log/download
: Télécharger le journal sous forme de fichier.
Pour toute question, obtenez de l'aide dans le serveur Discord officiel.
Je me suis inspiré de Muzikas, un bot Discord convivial de Fabijan Zulj.
Melodix est sous licence MIT.