generated from nhcarrigan/template
46 lines
1.8 KiB
TypeScript
46 lines
1.8 KiB
TypeScript
import { scheduleJob } from "node-schedule";
|
|
|
|
import { ExtendedClient } from "../interface/ExtendedClient";
|
|
import { checkAirtableRecords } from "../modules/checkAirtableRecords";
|
|
import { fetchMessages } from "../modules/messages/fetchMessages";
|
|
import { sendUnclaimedArt } from "../modules/reminders/sendUnclaimedArt";
|
|
import { sendUnclaimedDistros } from "../modules/reminders/sendUnclaimedDistros";
|
|
import { sendUnfinishedArt } from "../modules/reminders/sendUnfinishedArt";
|
|
import { sendUnfinishedDistros } from "../modules/reminders/sendUnfinsihedDistros";
|
|
import { getNewsFeed } from "../utils/getNewsFeed";
|
|
import { serve } from "../server/serve";
|
|
|
|
/**
|
|
* Handles the logic when the bot is ready to receive Discord events.
|
|
*
|
|
* @param {ExtendedClient} bot The bot's Discord instance.
|
|
*/
|
|
export const onReady = async (bot: ExtendedClient) => {
|
|
try {
|
|
await bot.debug.send("Bot is online and ready to help!");
|
|
// donor channel
|
|
await fetchMessages(bot, "1172568787330019340");
|
|
// delivery channel
|
|
await fetchMessages(bot, "1173061747737903315");
|
|
await bot.debug.send("Fetching initial news feed...");
|
|
await getNewsFeed(bot);
|
|
await bot.debug.send("Fetching news posts every 10 minutes.");
|
|
setInterval(async () => await getNewsFeed(bot), 1000 * 60 * 10);
|
|
await bot.debug.send("Fetching new airtable submissions every 60 minutes.");
|
|
setInterval(async () => await checkAirtableRecords(bot), 1000 * 60 * 60);
|
|
|
|
scheduleJob("0 9 * * 1,3,5", async () => {
|
|
await sendUnclaimedArt(bot);
|
|
await sendUnclaimedDistros(bot);
|
|
});
|
|
|
|
scheduleJob("0 9 * * 6", async () => {
|
|
await sendUnfinishedArt(bot);
|
|
await sendUnfinishedDistros(bot);
|
|
});
|
|
await serve(bot);
|
|
} catch (err) {
|
|
await bot.debug.send(`Error on ready event: ${(err as Error).message}`);
|
|
}
|
|
};
|