Ce dépôt contient les sources du bot EPLBot présent sur le discord de l'École Polytechnique de Louvain-la-Neuve (EPL).
Avant de commencer, assurez-vous d'avoir les éléments suivants :
- Java Development Kit (JDK) 23
- Docker
- Un compte Discord pour créer un bot et obtenir un jeton d'authentification
- Gradle si vous souhaitez compiler le projet localement
-
Clonez ce dépôt sur votre machine :
git clone https://github.com/Hokkaydo/EPLBot.git
-
Accédez au répertoire du projet :
cd EPLbot/ -
Créez un répertoire pour la persistence:
mkdir data/
-
Renommez le fichier
variables.env.exampleenvariables.envet renseignez-y vos variables d'environnement suivant :DISCORD_BOT_TOKEN: Jeton d'identification de votre bot DiscordTEST_DISCORD_ID: Identifiant du discord sur lequel vous souhaitez tester le botGITHUB_APPLICATION_ID: Identifiant de l'application Github liée (permet de gérer les issues) (Optionnel)GITHUB_APPLICATION_INSTALLATION_ID: Identifiant d'installation de l'application Github liée (permet de gérer les issues) (Optionnel)HASTEBIN_TOKEN: Jeton d'identification auprès de l'API de HastebinCONTRIBUTIONS_REMOTE: Dossier des contributions du Drive EPL au format rclone, ex.onedrive:<Dossier partagé>/<Dossier des contributions>(Optionnel, modulecontributions)
-
Lancez le projet avec Docker :
docker-compose up
Le module contributions annonce chaque nouveau fichier du dossier des contributions dans le salon DRIVE_ADMIN_CHANNEL_ID (vérification toutes les heures, CONTRIBUTIONS_UPDATE_PERIOD), en mentionnant éventuellement le rôle CONTRIBUTIONS_ROLE_ID. La commande /contributions liste les fichiers pas encore importés ; elle est réservée aux membres ayant le rôle DRIVE_ADMIN_ROLE_ID et aux administrateurs. Le PDF de présentation du système de contributions, présent en permanence dans le dossier, est ignoré.
Il lit le Drive via rclone, inclus dans l'image Docker, dont la configuration est lue depuis data/rclone.conf :
- Sur une machine avec navigateur, créer un token en lecture seule :
rclone authorize "onedrive" --onedrive-access-scopes "Files.Read Files.Read.All Sites.Read.All offline_access"
- Sur le serveur, créer le remote avec ce token (type
onedrive, même optionaccess_scopes) via le rclone de l'image, qui écrit dansdata/rclone.conf:rclone crée ce fichier lisible uniquement par root (droits 600). Il donne accès au OneDrive du compte utilisé : ne jamais le committer ni le partager.docker-compose run --rm --entrypoint rclone eplbot config
- Renseigner
CONTRIBUTIONS_REMOTEdansvariables.env, puis/enable contributions.
Un fichier est considéré comme nouveau si sa date d'upload sur OneDrive est postérieure à celle du dernier fichier annoncé (état CONTRIBUTIONS_LAST_UPLOAD). Un fichier déplacé depuis un autre dossier du Drive garde sa date d'upload d'origine et peut donc ne pas être annoncé. Au premier passage, le bot enregistre la date du fichier le plus récent sans annoncer les fichiers existants un par un. Si CONTRIBUTIONS_REMOTE n'est pas définie, le module ne s'active pas et un avertissement est envoyé dans le salon administrateur. Si le token expire (90 jours sans usage, changement de mot de passe), une erreur est envoyée dans le salon administrateur : docker-compose run --rm --entrypoint rclone eplbot config reconnect <remote>:.
Le bot propose un système modulaire permettant d'activer et désactiver les modules via les commandes Discord /enable <module> et /disable <module>.
La commande /config permet de configurer les paramètres des modules.
Les contributions à ce projet sont les bienvenues. Si vous souhaitez apporter des améliorations, veuillez créer une branche à partir de la branche master, effectuer vos modifications et soumettre une Pull Request (PR).
Pensez à consulter CONTRIBUTION.md afin de comprendre la structure du projet
- Documentation JDA : https://github.com/DV8FromTheWorld/JDA
- Tutoriels Discord API : https://discord.com/developers/docs/intro
Ce projet est sous licence GNU GPLv3.