Manifest
Chaque module doit contenir un fichier manifest.jsonc
, ce fichier indique à Bachero comment votre module fonctionne.
Il contient des valeurs obligatoires telles que la liste des fichiers à charger, mais aussi des valeurs facultatives telles qu'un message à afficher dans la console lorsqu'il a fini de démarrer.
Cette page de la documentation recouvre la liste de tout ce que votre fichier manifest.jsonc
doit avoir, ainsi que certaines indications.
Liste
disabled
Type :
boolean
Choix :true
,false
Si défini sur true
, Bachero ignora ce module au démarrage, et ne le chargera pas.
packageName
Obligatoire
Type :string
Choix : n'importe quelle chaîne de caractères
Un nom fait pour rendre le module unique, aucun module ne doit avoir la même valeur.
Similaire à ce que Java utilise, en savoir plus.
name
Obligatoire
Type :string
Choix : n'importe quelle chaîne de caractères
Le nom de votre module, affiché un peu partout (API listant les modules, dans la console).
Il est conseillé d'utiliser un nom assez court (en dessous de 32 caractères) indiquant ce que votre module fait. Un module servant à rajouter des commandes pour gérer les messages pourrait s'appeler "Gestion des messages".
shortDescription
Obligatoire
Type :string
Choix : n'importe quelle chaîne de caractères
Une description assez courte de ce que votre module fait, cette description sera affichée aux autres modules via l'API dédié. Si votre module sert à envoyer une photo de bassine dans un salon Discord à 9h tous les jours, votre description pourrait être "Module servant à envoyer une photo de bassine tous les jours à 9h".
longDescription
Type :
string
Choix : n'importe quelle chaîne de caractères
Une description assez longue de ce que votre module fait, rentrant un peu plus dans les détails.
Cette description n'aura jamais eu d'utilité, et n'est plus requise depuis la v0.10.0
onloadMessage
Type :
string
Choix : n'importe quelle chaîne de caractères
Un message affiché dans la console lorsque votre module aura fini de charger, tenter de garder un message court et simple.
Noter également que si beaucoup de modules affichent des messages, le contenu de la console risque d'être dégradé, n'afficher des messages que lorsqu'ils sont vraiment nécessaires.
source
Type :
string
Choix : lien vers le code source de votre module
Le lien vers le code source de votre module, un repo GitHub par exemple. Cela peut être utile lorsqu'un utilisateur veut trouver là où il a téléchargé un module. Malgré que cela peut être utile et est donc recommandé, vous pouvez ne pas fournir de lien.
files
Obligatoire
Type :array
Choix : liste des fichiers à charger
Cette option permet de définir quels fichiers doivent être chargés au démarrage de Bachero, le/les fichiers doivent être disponible sur le disque et ne peuvent pas être téléchargé via internet par Bachero. Nous conseillons de mettre vos fichiers au même endroit que le fichier manifest.jsonc.
Exemple : "files": ["hello.js", "world.js"]
whitelistedGuildIds
Type :
array
Choix : liste des fichiers à charger
Empêche l'utilisation de toute les commandes slash et menus contextuels du module sur l'ensemble des serveurs, à l'exception de ceux dans la liste.
Si la liste est vide, tout les serveurs pourront utiliser les commandes slash.
Exemple : "whitelistedGuildIds": ["945448443801903114"]
authors
Obligatoire
Type :array
Choix : liste des personnes ayant contribué à ce module
La liste des auteurs ou personnes ayant participé à la création, garder des noms simple et court si possible, sans inclure beaucoup de personnes.
Chaque valeur dans l'array doit être un objet contenant un nom (name
), il est recommandé d'ajouter l'identifiant d'un profil Discord (discordId
) ou le lien vers un site personnel (link
). Exemple :
"authors": [
{
"name": "Frédéric de chez carglass",
"discordId": "012345678901234567",
"link": "https://example.com"
}
]
dependencies
Type :
array
Choix : liste de dépendances NodeJS
Certains modules peuvent avoir besoin de dépendances NodeJS, Bachero en a déjà certaines préinstallées (voir le package.json) mais si vous avez besoin d'une dépendance spécifique et qui n'est pas déjà installée, vous pouvez l'ajouter dans cet array.
Bachero ne démarrera pas tant que la dépendance n'aura pas été installée, et aidera l'utilisateur à l'installer. Exemple :
// Avec version spécifique : vérifiera si `screenshothtml` est installé, conseillera la version 2.0.1 si ce n'est pas le cas
"dependencies": ["screenshothtml@2.0.1"]
// Sans version spécifique : vérifiera si `screenshothtml` est installé, conseillera la dernière version si ce n'est pas le cas
"dependencies": ["screenshothtml"]
config
Type :
array
Choix : liste de configurations
Permets de créér un fichier de configuration pour le module, ce fichier sera généré automatiquement par Bachero au démarrage et se trouvera dans le dossier config
.
Chaque valeur dans l'array doit être un objet avec un nom (name
), un type (type
), une valeur par défaut (default
) et une description (description
). Exemple :
"config": [
{
"name": "name",
"type": "string", // boolean, string, number, array, object
"default": "world",
"description": "La commande /helloworld affichera quel nom ?"
}
]
Exemple
Un exemple de ce qui pourrait être le fichier manifest d'un module, cet exemple contient toutes les valeurs qui peuvent être utilisés.
{
// Le plugin est désactivé
"disabled": true,
// Nom unique, plusieurs modules ne peuvent pas avoir le même nom
"packageName": "com.example.helloworld",
// Nom du module
"name": "Hello World",
// Description du module
"shortDescription": "Ce module ajoute la commande /helloworld"
// Message affiché lorsque le module finit de charger (recommandé de laisser vide)
"onloadMessage": "je suis totalement inutile oui",
// Source (par exemple, lien du module sur GitHub),
"source": "https://bachero.johanstick.fr/docs/modules/guide",
// Liste des fichiers à charger
"files": [
"hello.js"
],
// Sur quels serveurs le module doit fonctionner (fonctionnera partout si la liste est vide)
"whitelistedGuildIds": [
"702539839626674277"
],
// Liste du/des auteurs du module
"authors": [
{
"name": "Johan",
"discordId": "277825082334773251",
"link": "https://johanstick.fr"
}
],
// Liste des dépendances NodeJS
"dependencies": [
"screenshothtml@2.0.1"
],
// Configuration du module
"config": [
{
"name": "name",
"type": "string", // boolean, string, number, array, object
"default": "world",
"description": "La commande /helloworld affichera quel nom ?"
}
]
}