Enhance giveaway job handling and update environment configuration

- Added support for a new `giveawayCreate` job in the bot's job processing, allowing for giveaways to be created via the WebUI.
- Introduced `runGiveawayCreateJob` function to handle the creation of giveaways, ensuring consistent behavior with existing commands.
- Updated `.env.example` to clarify the usage of `BOT_TOKEN` for both the bot and WebUI, enhancing documentation for environment variables.
- Added `bullmq` dependency in the WebUI package for job management capabilities.
This commit is contained in:
smueller
2026-07-22 15:19:04 +02:00
parent 2ef6b23136
commit 677142672f
7 changed files with 133 additions and 5 deletions

View File

@@ -408,6 +408,31 @@ export async function deleteGiveaway(context: BotContext, giveawayId: string): P
await context.prisma.giveaway.delete({ where: { id: giveawayId } });
}
/**
* Entry point for the `giveawayCreate` BullMQ job, enqueued by the WebUI
* dashboard (which has no discord.js Client to post the giveaway message
* itself). Resolves the guild's locale and delegates to {@link startGiveaway}
* so dashboard-created giveaways behave identically to `/giveaway start`.
*/
export async function runGiveawayCreateJob(
context: BotContext,
params: {
guildId: string;
channelId: string;
hostId: string;
prize: string;
winnerCount: number;
durationMs: number;
requiredRoleId?: string | null;
requiredLevel?: number | null;
requiredMemberDays?: number | null;
}
): Promise<{ id: string }> {
const locale = await getGuildLocale(context.prisma, params.guildId);
const giveaway = await startGiveaway(context, params, locale);
return { id: giveaway.id };
}
export async function listActiveGiveaways(
context: BotContext,
guildId: string