Kora/developer documentation/Clocks

Clocks

Run a task on a schedule.

A clock runs run() on a cron schedule. Put clocks in src/clocks/.

modules/example/src/clocks/cleanup.js
import { Clocks } from "#kora/modules";

export class Cleanup extends Clocks {
    constructor(kora) {
        super(kora, { name: "cleanup", schedule: "0 0 * * *" });
    }

    async run() {
        const removed = await this.kora.modules.handlers.get(this.module, "items").purge();
        if (removed > 0) this.kora.console.log(this.kora.console.levels.info, `Removed ${removed} old items.`);
    }
}
KeyWhat it does
nameThe clock name.
scheduleA 5-field cron expression: minute, hour, day, month, weekday.
timezoneOptional IANA zone for the schedule, such as UTC or Europe/Berlin. Without it the server's zone is used.
ScheduleRuns
*/10 * * * *Every 10 minutes.
0 * * * *Every hour.
0 0 * * *Every day at midnight.
0 0 * * 0Every Sunday at midnight.

Clocks start once Kora has finished starting and stop when the module is turned off. Core uses them to expire licenses every 10 minutes and remove old validation logs every hour.