Aller au contenu principal

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 :

NomTypeDescription
packageNamestringLe 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 :

NomTypeDescription
packageNamestringLe nom du packet auquel obtenir la configuration
propertystringNom 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.

attention

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 :

NomTypeDescription
packageNamestringLe 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 :

NomTypeDescription
databaseBDDLa base de données
propertyanyNom 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 :

NomTypeDescription
databaseBDDLa base de données
propertyanyNom de la propriété
valueanyValeur à 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 :

NomTypeDescription
databaseBDDLa base de données
propertyanyNom 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 :

NomTypeDescription
databaseBDDLa base de données
propertyanyNom 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 :

NomTypeDescription
databaseBDDLa 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 :

NomTypeDescription
cooldownIdstringIdentifiant du cooldown, doit être unique
userIdnumberIdentifiant 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.

astuce

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 :

NomTypeDescription
cooldownIdstringIdentifiant du cooldown, doit être unique
userIdnumberIdentifiant de l'utilisateur à limiter
cooldownTimenumberDuré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 :

NomTypeDescription
cooldownIdstringIdentifiant du cooldown, doit être unique
userIdnumberIdentifiant de l'utilisateur à limiter
waitForDeletebooleanAttend 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 :

NomTypeDescription
interactionanyInteraction DiscordJS
cooldownIdnumberIdentifiant 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 :

NomTypeDescription
contextstringContexte rencontré lors de l'erreur
erroranyErreur qui sera enregistrée dans le rapport
moreInfosobjectObjet qui contiendra des informations en plus
interactionanyInteraction 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 :

NomTypeDescription
contextstringContexte rencontré lors de l'erreur
erroranyErreur qui sera enregistrée dans le rapport
moreInfosobjectObjet qui contiendra des informations en plus
interactionanyInteraction 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 :

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

astuce

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.

info

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 :

NomTypeDescription
identifierstringIdentifiant pour dinstindre ce message des autres
contentstringContenu 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.

astuce

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 :

NomTypeDescription
typestringType de message (ok, info, warn, error)
contentstringContenu du message à afficher
idstringIdentifiant du message, fortement recommandé
showInConsolestringSi le message s'affiche dans la console, true par défaut
hideDetailsstringSi 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 :

NomTypeDescription
argumentanyAutant 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 :

NomTypeDescription
stringstringUtilisateur (identifiant, mention, user DiscordJS)
returnTypeid, mentionRetourne 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