Curiosity-org / Gipsy

Gipsy is a multi-purpose discord bot which aim to be as modular and user-friendly as possible
CeCILL Free Software License Agreement v2.1
13 stars 6 forks source link

`Core` global system for webhooks #159

Open ascpial opened 1 year ago

ascpial commented 1 year ago

Ceci est une proposition de fonctionnalité pour le cœur.

Je proposes de rajouter un système lié au cœur du bot permettant de récupérer un webhook pour un salon depuis la base de données si un webhook a déjà été enregistré, ou d'en créer un nouveau si besoin et de le stocker dans la base de données.

Ce système devrait résister aux erreurs de suppression de webhook (si un webhook n'existe plus, le système en recréé un de manière transparente pour le développeur) pour l'envoie de message (en créant un classe customisée pour cet usage).

De plus, pour l'édition de messages, il faudrait ajouter une option (en paramètre de la fonction edit, désactivée par défaut pour plus de transparence) permettant de supprimer l'ancien message et d'en envoyer un nouveau si le webhook a été supprimé.

Cela permettrait d'éviter la création et suppression de webhooks fréquentes pour des systèmes comme le plugin messageManager avec la commande imitate, et d'éviter de devoir implémenter un système similaire dans un plugin comme wormhole.

Aeris1One commented 1 year ago

Plutôt que de le lier au coeur, pourquoi ne pas en fait un plugin "librairie" qui serait en dépendance du plugin webhook ?

ascpial commented 1 year ago

Mon idée avec cette fonctionnalité est de proposer avec le cœur de Gipsy des fonctionnalité par défaut que discord.py n'offre pas disponibles pour que le développeur gagne du temps en développant un plugin.

Dans cet ordre d'idée, les fonctionnalités mises dans le cœur ne se limitent pas au minimum pour que le bot fonctionne correctement, mais sont proposées à n'importe quel développeur avec un minimum d'effort, un peu comme Bookshelf.

Je précise cependant que cette fonctionnalité ne viendrait qu'après la stabilisation des systèmes existant (la configuration, les traduction, le système de base de données...).