Aller au contenu principal

Guidelines

Certains éléments sont à respecter lorsque vous codez un module. Malgré que ces "règles" n'ont pas à but d'être obligatoires, il est fortement recommandé de les suivre.

Utiliser l'API de Bachero au maximum

Certains éléments peuvent être rendus plus compliqué en utilisant des APIs internes (vous pouvez ouvrir une issue/PR si vous jugez que ce problème mérite d'être réglé), mais cela peut aider à rendre le module plus rapide, plus fonctionnel ou plus optimisé. Exemple :

/*
Cet exemple permet d'obtenir la liste des valeurs dans la base de donnée.
Cependant, l'utilisation de `.JSON()` ne fonctionne que lorsque la base de donnée utilise le type JSON.
*/

const bacheroFunctions = require('../../functions')
const database = bacheroFunctions.database.getDatabase('bachero.module.databaseTest')
database.JSON().then(json => console.log(json))

/*
Au lieu de cela, vous pourriez utiliser une fonction Bachero pour obtenir le contenu au format JSON.
Cette alternative est faite pour fonctionner avec tous les types de bases de données, et même lorsque la compression des valeurs est activée.
*/
const bacheroFunctions = require('../../functions')
const database = bacheroFunctions.database.getDatabase('bachero.module.databaseTest')
bacheroFunctions.database.getAll(database).then(json => console.log(json))

Modules NodeJS

L'accès aux modules NodeJS peut parfois s'avérer essentiel pour un module, vérifiez dans le fichier package.json qu'une librairie similaire à ce que vous souhaitez n'est pas déjà installée par défaut, au lieu de forcer l'utilisateur à installer une dépendance manuellement (en l'inscrivant le fichier manifest.jsonc).

Utiliser le bon nom

Si vos modules doivent utiliser le nom du bot, il est fortement recommandé d'utiliser la valeur spécifiée dans la configuration (bacheroFunctions.config.getValue('bachero', 'botName')) ou celle obtenue dans le client ((bacheroFunctions.botClient.get()).user.username).

Requêtes

Les modules peuvent effectuer des requêtes vers des sites ou APIs via le module node-fetch, cependant, il est recommandé d'éviter l'utilisation abusive de ce genre de requêtes car :

  • Elles peuvent ralentir le bot
  • Elles peuvent être annulées (le site est inaccessible, l'hébergeur bloque l'accès, etc.)
  • L'IP de l'hébergeur peut fuiter

Ne pas abuser de whitelistedGuildIds

Cette valeur dans le fichier manifeste permet d'empêcher l'exécution d'une commande sur tous les serveurs, à l'exception de quelque uns, en affichant un message d'erreur lors de l'exécution.

Le problème est que la commande reste visible dans la liste des commands slash côté client, essayer donc de ne pas abuser de cette option pour éviter de gâcher l'expérience utilisateur.

Nom de packet

Chaque module a besoin d'un nom de packet unique. Tenter d'utiliser un nom que personne d'autre n'utilisera, le nom de domaine de votre site à l'envers par exemple (com.example.helloworld).

Les modules préinstallés par Bachero utiliseront un nom de packet commençant par bachero.module., vous ne devez pas utiliser ce genre de nom.

Ne pas créer de fichiers

Vos modules peuvent créer des fichiers, mais cela est fortement déconseillé. Certains hébergeurs risquent de les supprimer automatiquement, vous pouvez tout de même l'utiliser pour sauvegarder quelques fichiers temporaires, en faisant attention à ce qu'ils restent plutôt légers.

Si vous avez besoin de sauvegarder des données de façon persistante, vous pouvez utiliser la base de données incluse.

Ne pas respecter les TOS

Tous les modules doivent respecter les TOS de Discord, exemple de modules pouvant enfreindre ces règles :

  • Modules visant à spam, raid ou d'autres types d'attaques
  • Exploit dans l'API de Discord
  • Envoi de contenu malicieux (virus)
  • et n'importe quel élément pouvant faire supprimer le bot ou le compte de son propriétaire

Tenter de contribuer au lieu de copier

Si vous avez découvert un module fait par quelqu'un de la communauté, mais que celui-ci manque de quelques fonctionnalités et que vous aimeriez apporter une ou plusieurs modifications, tentez plutôt de contribuer au projet au lieu de le recréé.

Un module ne doit pas accéder à autre chose que lui-même

Le fait que votre module tente d'accéder à des fichiers/dossiers autres que le sien (le dossier config et database sont exclus) peut poser des problèmes de sécurités, il est donc recommandé de ne pas effectuer ce genre d'actions.

Le code doit rester compréhensible

(s'applique également aux contributions en générales)

Tout le monde a le droit d'avoir un style de code différent (oui, même ceux qui indentent avec des espaces), mais les modifications que vous proposez doivent rester facilement lisible. Le fait d'utiliser un obfuscateur ou autre outil visant à complexifier la lecture risque d'être problématique. Tenter d'utiliser un style que la plupart des gens peuvent rencontrer au quotidien.

Vos modules ne doivent pas empêcher les autres de lancer Bachero

(s'applique également aux contributions en générales)

Si le/les modules que vous créez peuvent empêcher un utilisateur de démarrer le bot (exemple : lorsqu'il utilise un certain OS, ou une certaine version de NodeJS), cela peut s'avérer très problématique, surtout pour le genre de personnes qui pourrait installer beaucoup de modules et se rendre compte qu'un d'entre eux fait tout planter.