Skip to content

Repository files navigation

README.md

Ce dépôt contient les sources du bot EPLBot présent sur le discord de l'École Polytechnique de Louvain-la-Neuve (EPL).


Installation

Prérequis

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

Procédure

  1. Clonez ce dépôt sur votre machine :

    git clone https://github.com/Hokkaydo/EPLBot.git
  2. Accédez au répertoire du projet :

    cd EPLbot/
  3. Créez un répertoire pour la persistence:

    mkdir data/
  4. Renommez le fichier variables.env.example en variables.env et renseignez-y vos variables d'environnement suivant :

    • DISCORD_BOT_TOKEN: Jeton d'identification de votre bot Discord
    • TEST_DISCORD_ID: Identifiant du discord sur lequel vous souhaitez tester le bot
    • GITHUB_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 Hastebin
    • CONTRIBUTIONS_REMOTE: Dossier des contributions du Drive EPL au format rclone, ex. onedrive:<Dossier partagé>/<Dossier des contributions> (Optionnel, module contributions)
  5. Lancez le projet avec Docker :

    docker-compose up

Veille des contributions du Drive EPL (optionnel)

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 :

  1. 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"
  2. Sur le serveur, créer le remote avec ce token (type onedrive, même option access_scopes) via le rclone de l'image, qui écrit dans data/rclone.conf :
    docker-compose run --rm --entrypoint rclone eplbot config
    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.
  3. Renseigner CONTRIBUTIONS_REMOTE dans variables.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>:.


Configuration du bot Discord

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.

Contribution

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

Ressources

Licence

Ce projet est sous licence GNU GPLv3.

About

EPLBot sources repository

Topics

Resources

Stars

8 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages