Git Product home page Git Product logo

eplbot's Introduction

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).


Prérequis

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  • Java Development Kit (JDK) 21 installé sur votre machine.
  • Un compte Discord pour créer un bot et obtenir un jeton d'authentification.
  • Gradle installé (ou vous pouvez utiliser la version fournie avec le projet).

Installation

  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 persistence
  4. Compilez le projet en exécutant la commande :

    ./gradlew shadowJar
  5. 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
  6. Lancez le bot :

     ./gradlew run

Docker

Pour exécuter le bot dans un conteneur Docker, voici la marche à suivre.

  1. Build l'image Docker

    docker build . -t eplbot
  2. Lancer le docker

        docker run --rm -e docker run --rm  -e DISCORD_BOT_TOKEN=token -e TEST_DISCORD_ID=id-de-votre-discord-de-test -t eplbot

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>.

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.

eplbot's People

Contributors

hokkaydo avatar kaporos avatar wiauxb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

eplbot's Issues

Compet interculte

Système de points par culte, peuvent être gagnés à travers les messages, les réactions, les jours d'activité de suite.

Formatage d'exos/exams pour les threads discord

Quand quelqu'un pose une question, trouver un moyen de comprendre (a l'aide d'une ia/ algo relou a coder) de quel exam/exo il parle, afin créer automatiquement un thread avec un nom formatté

Utilités:

  • Facilement retrouver les conversations
  • Pouvoir instaurer un système qui évite d'avoir des discussions sur une question en doublon
  • Avoir une meilleure adoption des threads de la part de tout le monde
  • ? réussir a avoir un format standardisé sur discord et le drive amen

(serait peut-être bien de bien réfléchir au format du coup haha)
Exams : EXA-yyyy-mmm marche bien pour les exams (triés alphabétiquement, sont dans le bon ordre (jan→juil→sep))
APE : APEnn est pas mal, mais je vois 2 soucis:

  • juste problématique si on a APEnn_S/E qui cohabitent avec APEnn, les APEnn se retrouve après APEnn_E pour le même APE
  • y cours qui ont les ape en plusieures parties, comment gérer ça

Ensuite, comment gérer quand EPLbot n'arrive pas a retrouver l'exam? il peut demander a la personne qui a poster le message de réexprimer (ça serait aussi un moyen d'alpha tester cette feature)

[Mirror] Quotes are not mirrored

When a user sends a link to a discord message, the quoteModule tries to quote the message. However, the quote is not mirrored because the bot ignores message sent by bot
=> Add mirroring for quotes

[Mirror] Use only one webhook

The bot should not create a new webhook each time a user sends a message.
Instead it should simply keep one per channel and change its nickname a profile picture before sending a message.
It would simplify the message deletion & modification timeout as well as the webhook will be always present in the channel

/contribute

Affiche la liste des contributeurs et le lien du repo

/serverstatus

Affiche différentes informations sur le serveur (à travailler) :

  • Channels les plus actifs
  • Nombre de messages sur la journée
  • Réaction la plus utilisée
  • Date de création du serveur
  • Nombre de membres
  • Nombre de messages postés
  • Nombre de join/leave

[LogModule] Add proper loggin

  • Add custom logger with the format "time [LEVEL] : [Module] Message"
  • Add a web interface providing access to logs for allowed users. The interface should provide a way to filter logs based on the severity, timestamp, or custom keywords (such as module names)
  • Additionally, the web interface could give buttons to stop, start and restart the bot

Fix message quoting

Lien actuellement supporté : https://discord.com/channels/server/channel/message
Subdomains à ajouter:

  • ptb.discord.com
  • canary.discord.com

alphanumerical usertags

Le bot ne gère pas les usertag quand c'est pas les 4 chiffres standards:
image

après on est sur un degré d'importance assez faible la

/addcommand <name> <text>

Allow moderators to add new commands on the fly.
The new commands could be used to send a short message like no spam, more info needed, ...

Fix flux RSS

La feature ne fonctionne pas correctement

  • Mauvaise sauvegarde du dernier article (=> recopie les anciens déjà postés)
  • N'envoie qu'une fois et la boucle s'arrête après (fonctionnait lors des premiers tests)

Add notices about courses

The bot should provide a way to add notices about courses we had.
Users could then check the notices registered for a particular course to know where they're going.

This feature may be implemented using modals. However, feature #15 should be implemented first due to the potential big amount of information to store

Signet feature

L'idée serait qu'un utilisateur puisse réagir avec 🕐 a un message pour le mettre en "lire plus tard" et pourrais accéder a cette liste avec /signet

Cela permettrait de noter des messages sans pour autant les épingler.

Some cmd -> non ephemeral

Checker si certaines commandes ne pourraient pas voir le message de retour être envoyé pour tout le monde

Showing the outage of the service of ucl

Have a command that display which services are online right now and dipslay outage. Another improvement would be sending and pinning a message when an outage occurs and remain it pinged the whole outage duration.

[Confession] Some proposals

  • If a confession author uses /confessfollow (hence creating a thread), the author could be notified when a message is sent just after the confessFollowMessage, i.e. if someone answers the confession
  • Use a basic LLM to resume intent of a confession and name the thread accordingly

Fix pin config

Si on change la valeur dans la config de treshold puis qu'on la remet à une seconde valeur, un message dont le compteur augmentait pendant ce temps et dépassant la seconde valeur n'est pas pin (fonctionnait en pré-prod)

Confessions en thread

Ajouter la commande /confessmore qui crée un thread à partir de la dernière confession de l'auteur (si existe) / récupère celui qui est déjà créé sous ce message et envoie les confessions dans ce thread permettant de faire une discussion "instantanée" anonyme (-> à voir pour éventuellement ne pas requérir l'intervention de validation d'un mod mais à réfléchir)

Envoyer /confession par après empêche de revenir au thread précédent

Rework mirroring

As already said, the mirroring has to be reworked.
We should implement it using webhooks

Sondages interserveurs

Pouvoir créer un sondage interserveur
L'embed possèderait les boutons correspondants aux emojis de choix et le compteur de chaque vote est update dans l'embed miroir de chaque serveur

/suggestion

Permet d'envoyer une suggestion qui est envoyée dans un channel à validation (idem confessions).
Si suggestion validée, issue automatique sur le repo
-> Envisager 4 boutons sous la validation ("refus", "feature", "bugfix", "changes")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.