Skip to main content

Interface: Giveaway

Flashcore-backed data model representing a single giveaway lifecycle.

Giveaway records are written when a giveaway is created, mutated as entries are collected and winners announced, and stored in the giveaways:data namespace for durability across restarts.

Properties​

allowRoleIds​

allowRoleIds: string[];

Whitelist of role IDs; empty array allows all roles to enter.


channelId​

channelId: string;

Discord channel ID where the giveaway message lives.


createdAt​

createdAt: number;

Epoch timestamp (ms) when the giveaway record was created.


cronJobId?​

optional cronJobId: null | string;

Optional cron job identifier when scheduled via @robojs/cron.


denyRoleIds​

denyRoleIds: string[];

Blacklist of role IDs prohibited from entering.


endsAt​

endsAt: number;

Epoch timestamp (ms) at which the giveaway should end.


entries​

entries: Record<string, number>;

Entrant weighting map keyed by Discord user ID.


finalizedAt​

finalizedAt: null | number;

Epoch timestamp (ms) when the giveaway ended or was cancelled.


guildId​

guildId: string;

Discord guild ID hosting the giveaway.


id​

id: string;

Unique giveaway identifier, currently a ULID string.


messageId​

messageId: string;

Discord message ID for the giveaway announcement.


minAccountAgeDays​

minAccountAgeDays: null | number;

Minimum required account age for entrants, or null to disable.


prize​

prize: string;

Prize description that appears in embeds and DMs.


rerolls​

rerolls: string[][];

Historical reroll batches, newest appended to the array.


startedBy​

startedBy: string;

Discord user ID of the moderator that started the giveaway.


status​

status: "active" | "ended" | "cancelled";

Current lifecycle state of the giveaway.


winners​

winners: string[];

User IDs selected as winners when the giveaway finalized.


winnersCount​

winnersCount: number;

Number of winners that should be selected when the giveaway ends.