| Outil | Pour | Visible dans le dashboard |
|---|---|---|
ctx.storage | Des valeurs propres au serveur : compteurs, réglages internes, identifiants | Non |
ctx.memory | Des valeurs par membre (ou du serveur) au nom simple | Oui, page Mémoire |
ctx.collection(nom) | Une liste d’éléments : candidatures, tickets, inscriptions | Oui, si une page liste existe |
ctx.points(classement) | Des points et un classement | Oui, page Classement |
ctx.coins | La monnaie du module Économie d’Opale | Dans Économie |
ctx.storage
const compteur = await ctx.storage.increment('arrivees');
await ctx.storage.set('dernier', { id: ctx.member.id, quand: Date.now() });
const dernier = await ctx.storage.get('dernier');Toute valeur JSON (texte, nombre, objet, liste). 1 000 clés, 16 000 caractères par valeur.
ctx.memory
await ctx.memory.set('ville', 'Lyon');
const ville = await ctx.memory.get('ville');
const visites = await ctx.memory.add('visites', 1);
await ctx.memory.set('ville', 'Paris', autreMembre);
await ctx.memory.delete('ville');Le nom : minuscules, chiffres et _. Par défaut la valeur appartient au membre courant ; passe un membre en dernier argument pour un autre.
ctx.collection
const demandes = ctx.collection('demandes');
const ajout = await demandes.add({ membre: ctx.member.id, nom: ctx.member.name, statut: 'nouveau' });
const enCours = await demandes.find({ membre: ctx.member.id, statut: 'nouveau' });
await demandes.update(ajout.id, { statut: 'accepté' });
const page = await demandes.list({ where: { statut: 'nouveau' }, limit: 20 });
const total = await demandes.count({ statut: 'accepté' });
await demandes.delete(ajout.id);Chaque élément reçoit id, createdAt, updatedAt. 5 000 éléments par liste. Pour l’afficher dans le dashboard, déclare la liste dans Commandes et listes › Listes et choisis ses colonnes ; tu peux y ajouter des boutons de ligne repris par module.row.
ctx.points
const total = await ctx.points('xp').add(ctx.member, 10);
const { points, rank } = await ctx.points('xp').get(ctx.member);
const top = await ctx.points('xp').top(10);
await ctx.reply({ title: 'Classement', text: top.text });ctx.coins
const solde = await ctx.coins.add(ctx.member, 50, 'Victoire au quiz');