Garder des données

Mode code

Cinq outils selon ce que tu veux garder : une valeur du serveur, une valeur par membre, une liste d’éléments, un classement, des pièces.

OutilPourVisible dans le dashboard
ctx.storageDes valeurs propres au serveur : compteurs, réglages internes, identifiantsNon
ctx.memoryDes valeurs par membre (ou du serveur) au nom simpleOui, page Mémoire
ctx.collection(nom)Une liste d’éléments : candidatures, tickets, inscriptionsOui, si une page liste existe
ctx.points(classement)Des points et un classementOui, page Classement
ctx.coinsLa monnaie du module Économie d’OpaleDans Économie

ctx.storage

JavaScript
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

JavaScript
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

JavaScript
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

JavaScript
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

JavaScript
const solde = await ctx.coins.add(ctx.member, 50, 'Victoire au quiz');
Garder des données · Documentation Opale