Références
Chaque module peut importer un fichier functions.js
, il contient des méthodes et propriétés fait pour aider dans le développement.
const bacheroFunctions = require('../../functions')
// ou alors
const bacheroFunctions = global.bacheroFunctions
Liste des méthodes
.config.getConfig(packageName)
Retourne la configuration entière d'un module par son nom de packet.
La configuration de Bachero peut être obtenue avec bachero
.
Exemple :
var bacheroConfig = bacheroFunctions.config.getConfig('bachero')
console.log(bacheroConfig.embedColor)
Paramètre :
Nom | Type | Description |
---|---|---|
packageName | string | Le nom du packet auquel obtenir la configuration |
Retourne : array
.config.getValue(packageName, property)
Retourne la valeur d'une propriété de la configuration
Exemple :
console.log(bacheroFunctions.config.getValue('bachero', 'embedColor'))
// Note: vous devriez plutôt utiliser `bacheroFunctions.colors.primary`
Paramètres :
Nom | Type | Description |
---|---|---|
packageName | string | Le nom du packet auquel obtenir la configuration |
property | string | Nom de la propriété à obtenir |
Retourne : any
.database.getDatabase(packageName)
Retourne une base de données par son nom de packet, la réponse pourra faire des opérations.
L'élément retourné n'est pas le contenu de la base de données, vous pouvez l'obtenir avec getAll
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
Paramètre :
Nom | Type | Description |
---|---|---|
packageName | string | Le nom du packet auquel obtenir la BDD |
Retourne : any
.database.get(database, property)
Retourne la valeur d'une propriété à partir d'une base de données.
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
const statistics = bacheroFunctions.database.get(database, 'statistics')
Paramètres :
Nom | Type | Description |
---|---|---|
database | BDD | La base de données |
property | any | Nom de la propriété à obtenir |
Retourne : any
, null
si introuvable
.database.set(database, property, value)
Modifie la valeur d'une propriété dans une base de données.
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
const statistics = bacheroFunctions.database.get(database, 'statistics')
bacheroFunctions.database.set(database, 'statistics', statistics + 1)
Paramètres :
Nom | Type | Description |
---|---|---|
database | BDD | La base de données |
property | any | Nom de la propriété |
value | any | Valeur à définir |
Retourne : null
.database.has(database, property)
Vérifie si une propriété existe dans la base de données
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
if(bacheroFunctions.database.has(database, 'statistics')){
console.log('Les statistiques existent !')
}
Paramètres :
Nom | Type | Description |
---|---|---|
database | BDD | La base de données |
property | any | Nom de la propriété |
Retourne : true
si trouvé, false
sinon
.database.delete(database, property)
Supprime une propriété d'une base de données
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
if(bacheroFunctions.database.has(database, 'statistics')){
console.log('Les statistiques existent !')
bacheroFunctions.database.delete(database, 'statistics')
console.log('plus maintenant :)')
}
Paramètres :
Nom | Type | Description |
---|---|---|
database | BDD | La base de données |
property | any | Nom de la propriété |
Retourne : null
.database.getAll(database)
Retourne la base de données entière sous la forme d'un objet
Exemple :
const database = bacheroFunctions.database.getDatabase('com.example.helloworld')
console.log(bacheroFunctions.database.getAll(database, 'statistics'))
Paramètre :
Nom | Type | Description |
---|---|---|
database | BDD | La base de données |
Retourne : object
.cooldown.check(cooldownId, userId, cooldownTime)
Vérifie si un utilisateur ne fais pas partie de la liste d'utilisateurs limités par un cooldown.
Exemple :
// Empêcher l'utilisateur avec l'identifiant "interaction.user.id" d'effectuer une action pendant les 5 prochaines secondes (5000 ms)
if(await bacheroFunctions.cooldown.check('helloworldUsage', interaction.user.id)) return interaction.reply('bonsoir non')
Paramètres :
Nom | Type | Description |
---|---|---|
cooldownId | string | Identifiant du cooldown, doit être unique |
userId | number | Identifiant de l'utilisateur limité |
Retourne : number
(temps restant en ms du cooldown avant son expiration)
.cooldown.set(cooldownId, userId, cooldownTime)
Sauvegarde l'utilisateur dans une liste. Les cooldowns sont utiles pour empêcher un utilisateur d'effectuer de nombreuses fois une commande.
Les cooldown au-dessus de 100 secondes sont persistants (reste après un redémarrage), et seront enregistrés dans une base de données.
Exemple :
// Empêcher l'utilisateur avec l'identifiant "interaction.user.id" d'effectuer une action pendant les 5 prochaines secondes (5000 ms)
if(await bacheroFunctions.cooldown.check('helloworldUsage', interaction.user.id)) return interaction.reply('bonsoir non')
else await bacheroFunctions.cooldown.set('helloworldUsage', interaction.user.id, 1000)
Paramètres :
Nom | Type | Description |
---|---|---|
cooldownId | string | Identifiant du cooldown, doit être unique |
userId | number | Identifiant de l'utilisateur à limiter |
cooldownTime | number | Durée (en ms) du cooldown |
Retourne : number
(temps du cooldown)
.cooldown.delete(cooldownId, userId, waitForDelete)
Supprime le cooldown d'un utilisateur, en supprimant la limite et le laissant effectuer des actions à nouveau. L'option waitForDelete
attend que le cooldown soit complètement supprimé (prend plus de temps si le cooldown était persistant).
Exemple :
bacheroFunctions.cooldown.delete('helloworldUsage', interaction.user.id, true)
Paramètres :
Nom | Type | Description |
---|---|---|
cooldownId | string | Identifiant du cooldown, doit être unique |
userId | number | Identifiant de l'utilisateur à limiter |
waitForDelete | boolean | Attend que le cooldown soit supprimé |
Retourne : null
.cooldown.checkAndReply(interaction, cooldownId)
Vérifie si un utilisateur est limité, et répond à l'interaction si c'est le cas.
Exemple :
// Vérifier et répondre si l'utilisateur est limité, sinon on le limite
var checkAndReply = await bacheroFunctions.cooldown.checkAndReply(interaction, 'helloworldUsage')
if(checkAndReply) return; else await bacheroFunctions.cooldown.set('helloworldUsage', interaction.user.id, 1000)
Paramètres :
Nom | Type | Description |
---|---|---|
interaction | any | Interaction DiscordJS |
cooldownId | number | Identifiant du cooldown, doit être unique |
Retourne : true
si l'utilisateur est limité, false
sinon
.allModulesDetails.allModulesDetails()
Retourne la liste des modules ainsi que quelques informations sur eux.
Retourne : Map
.allModulesDetails.allCommands()
Retourne la liste des commandes slashs
Retourne : Map
.allModulesDetails.allContextsMenus()
Retourne la liste des menus contextuels
Retourne : Map
.report.create(context, error, moreInfos, interaction)
Crée un rapport d'erreur et retourne l'identifiant de celui-ci, ou false
si le système est désactivé.
Exemple :
try {
var fetchedContent = await fetch('http://localhost').then(res => res.json())
} catch (error) {
var reportId = await bacheroFunctions.report.create('error', error, { url: 'http://localhost' }, interaction)
interaction.reply(`Une erreur est survenue, le rapport d'erreur a été créé avec l'identifiant \`${reportId}\`.`)
}
Paramètres :
Nom | Type | Description |
---|---|---|
context | string | Contexte rencontré lors de l'erreur |
error | any | Erreur qui sera enregistrée dans le rapport |
moreInfos | object | Objet qui contiendra des informations en plus |
interaction | any | Interaction DiscordJS |
Retourne : string
(identifiant du rapport), false
.report.createAndReply(context, error, moreInfos, interaction)
Crée un rapport d'erreur et réponds à l'interaction avec l'identifiant du rapport et le contenu raccourci de l'erreur.
Si le système est désactivé, la fonction répondra quand même à l'interaction, mais sans l'identifiant du rapport.
Exemple :
try {
var fetchedContent = await fetch('http://localhost').then(res => res.json())
} catch (error) {
await bacheroFunctions.report.createAndReply('error', error, { url: 'http://localhost' }, interaction)
}
Paramètres :
Nom | Type | Description |
---|---|---|
context | string | Contexte rencontré lors de l'erreur |
error | any | Erreur qui sera enregistrée dans le rapport |
moreInfos | object | Objet qui contiendra des informations en plus |
interaction | any | Interaction DiscordJS |
Retourne : réponse à l'interaction
.report.get(id)
Obtient un rapport d'erreur à partir de son identifiant.
Exemple :
console.log(await bacheroFunctions.report.get('0dR2aEuesjTc2c'))
Paramètre :
Nom | Type | Description |
---|---|---|
id | string | Identifiant du rapport d'erreur |
Retourne : string
.message.listener
Retourne un listener commun à tous les modules demandant à l'obtenir via cette fonction, utile si vous avez besoin de communiquer des données entre deux fichiers d'un module, ou entre plusieurs modules.
Comparé aux autres listeners/EventEmitter utilisé dans Bachero, celui étant retourné par cette fonction provient du module EventEmitter2, proposant des fonctionnalités plus avancées.
Exemple :
receive.js
bacheroFunctions.message.listener.on('test01', message => {
console.log('===========================')
console.log('Message reçu "test01" :')
console.log(message)
console.log('===========================')
})
Retourne : EventEmitter2
.message.send(identifier, content)
Envoie un message à tous les modules et fichiers écoutant l'identifiant spécifié sur ce listener.
Cette fonction n'est qu'un simple raccourci vers bacheroFunction.message.listener.emit(identifier, content)
, les deux fonctionnent de la même manière.
Exemple :
send.js
bacheroFunctions.message.send('test01', 'Ceci est un message provenant de send.js et destiné à tous les modules écoutant "test01"')
Paramètres :
Nom | Type | Description |
---|---|---|
identifier | string | Identifiant pour dinstindre ce message des autres |
content | string | Contenu du message, reçu par les autres modules |
.botClient.get()
Retourne le client DiscordJS, parfois null
si non initialisé.
Exemple :
console.log(bacheroFunctions.botClient.get())
Retourne : Client/null
.showLog(type, content, id, showInConsole, hideDetails)
Affiche un message dans la console, et l'enregistre dans un fichier si cela n'a pas été désactivé par l'administrateur de l'instance.
Pour une meilleure expérience utilisateur, il est très très fortement recommandé d'utiliser cette fonction pour afficher des messages dans la console, plutôt que d'utiliser console.log
/ console.warn
/ console.error
.
Exemple :
// Affiche un message avec l'identifiant "example-module-api-ok"
bacheroFunctions.showLog('ok', `L'API n'a rencontré aucun problème`, "example-module-api-ok")
// Affiche une information avec l'identifiant "example-module-api-success"
bacheroFunctions.showLog('info', `L'API a répondu avec succès`, "example-module-api-success")
// Affiche un avertissement avec l'identifiant "example-module-api-error"
bacheroFunctions.showLog('warn', `Un problème a été rencontré avec l'API`, "example-module-api-problem")
// Affiche un message d'erreur avec l'identifiant "example-module-api-error"
bacheroFunctions.showLog('error', `L'API a rencontré une erreur`, "example-module-api-error")
// Affiche un message avec l'identifiant "example-module-api-ok", mais ne l'affiche pas dans la console (uniquement dans le fichier)
bacheroFunctions.showLog('ok', `L'API n'a rencontré aucun problème`, "example-module-api-ok", false /* ne l'affiche pas dans la console */)
// Affiche un message avec l'identifiant "example-module-api-ok" et masque les détails (l'heure, le type)
bacheroFunctions.showLog('ok', `L'API n'a rencontré aucun problème`, "example-module-api-ok", true /* l'affiche dans la console */, true /* masque les détails, non recommandé */)
Paramètres :
Nom | Type | Description |
---|---|---|
type | string | Type de message (ok , info , warn , error ) |
content | string | Contenu du message à afficher |
id | string | Identifiant du message, fortement recommandé |
showInConsole | string | Si le message s'affiche dans la console, true par défaut |
hideDetails | string | Si les détails devraient ne pas s'afficher (heure, type) |
Retourne : true
si le message a été affiché, false
dans le cas contraire
.showDebug(...args)
Enregistre une information utile à des fins de débogage, elle sera incluse dans les rapports d'erreurs si nécessaire, et l'administrateur d'instance peut choisir de l'afficher dans la console.
Exemple :
var res = await fetch('...').then(res => res.json())
bacheroFunctions.showDebug('fetch result', res)
Paramètres :
Nom | Type | Description |
---|---|---|
argument | any | Autant d'arguments que nécessaire |
Retourne : true
.parseUserFromString(string, returnType)
Permet de "parser" et "convertir" un utilisateur, s'il est sous la forme d'une mention, d'un utilisateur (discord.js) ou d'un identifiant.
Exemple :
var user = await bacheroFunctions.parseUserFromString('277825082334773251')
console.log(user.username)
Paramètres :
Nom | Type | Description |
---|---|---|
string | string | Utilisateur (identifiant, mention, user DiscordJS) |
returnType | id , mention | Retourne une certaine information, ou l'utilisateur DiscordJS si aucun argument |
Retourne : En fonction de l'argument returnType
.foldersPath
Retourne un objet contenant plusieurs chemins vers des dossiers importants de Bachero.
Exemple :
var { config, modules } = bacheroFunctions.foldersPath
// var config = bacheroFunctions.foldersPath.config
// var modules = bacheroFunctions.foldersPath.modules
Retourne : object
.colors
Retourne un objet contenant plusieurs couleurs, y compris celles présentes dans la configuration du bot.
Exemple :
var primaryColor = bacheroFunctions.colors.primary
Retourne : object
.package
Retourne le contenu du fichier package.json
de Bachero, déjà parsé avec JSON.parse
.
Exemple :
console.log(bacheroFunctions.package.version)
Retourne : object
.ownerIds
Retourne la liste des propriétaires du bot, sous la forme d'un tableau d'identifiants.
Exemple :
if(bacheroFunctions.ownerIds.includes(interaction.user.id)){
console.log('L\'utilisateur est propriétaire du bot')
} else {
console.log('L\'utilisateur n\'est pas propriétaire du bot')
}
Retourne : array