Plus tard : ctx.later et module.task
module.command('rappel', async (ctx) => {
await ctx.later('rappel', Number(ctx.args.minutes), { texte: ctx.args.texte });
await ctx.reply('C’est noté !');
});
module.task('rappel', async (ctx) => {
await ctx.dm(ctx.member, 'Rappel : ' + ctx.task.texte);
});De 1 minute à 7 jours. La tâche survit aux redémarrages et garde le membre d’origine (ctx.member). ctx.task contient les données passées.
Régulièrement : module.every
| Écriture | Fréquence |
|---|---|
'15m' | Toutes les 15 minutes (5 minimum) |
'2h' | Toutes les 2 heures |
{ every: 'day', at: '20:00' } | Chaque jour à 20 h (Paris) |
{ every: 'week', day: 1, at: '09:00' } | Chaque lundi à 9 h (0 = dimanche … 6 = samedi) |
{ every: 'minutes', interval: 30 } | Toutes les 30 minutes |
{ every: 'hours', interval: 6 } | Toutes les 6 heures |
Aucun membre n’est concerné : ctx.member est vide. Travaille avec les réglages et les salons.
Attendre un peu : ctx.sleep
await ctx.reply('3…');
await ctx.sleep(1000);
await ctx.followUp('2…');5 secondes au maximum par appel. Pour plus long, utilise ctx.later.
Dates
Date fonctionne normalement (heure UTC). Pour afficher l’heure de Paris :
const heure = new Date().toLocaleTimeString('fr-FR', { timeZone: 'Europe/Paris', hour: '2-digit', minute: '2-digit' });Discord sait aussi afficher une date dans le fuseau de chaque lecteur : <t:${Math.floor(Date.now() / 1000)}:f>.