poixpixel-discord-bot/src/events/ready.ts

50 lines
1.5 KiB
TypeScript

import { Client, Events } from 'discord.js';
import { ensureDbInitialized, setMembers } from '@/db/db.js';
import { loadConfig } from '@/util/configLoader.js';
import { Event } from '@/types/EventTypes.js';
import { scheduleFactOfTheDay } from '@/util/factManager.js';
import { scheduleGiveaways } from '@/util/giveaways/giveawayManager.js';
import {
ensureRedisConnection,
setDiscordClient as setRedisDiscordClient,
} from '@/db/redis.js';
import { setDiscordClient as setDbDiscordClient } from '@/db/db.js';
import { loadActiveBans } from '@/util/helpers.js';
export default {
name: Events.ClientReady,
once: true,
execute: async (client: Client) => {
try {
const config = loadConfig();
setRedisDiscordClient(client);
setDbDiscordClient(client);
await ensureDbInitialized();
await ensureRedisConnection();
const guild = client.guilds.cache.find(
(guilds) => guilds.id === config.guildId,
);
if (!guild) {
console.error(`Guild with ID ${config.guildId} not found.`);
return;
}
const members = await guild.members.fetch();
const nonBotMembers = members.filter((m) => !m.user.bot);
await setMembers(nonBotMembers);
await loadActiveBans(client, guild);
await scheduleFactOfTheDay(client);
await scheduleGiveaways(client);
console.log(`Ready! Logged in as ${client.user?.tag}`);
} catch (error) {
console.error('Failed to initialize the bot:', error);
}
},
} as Event<typeof Events.ClientReady>;