import { EmbedBuilder } from 'discord.js'; import { abEmbedColour } from '../storage/consts.js'; import { quote as quoteDB } from '../db/models/quote.js'; import { guildSettings } from '../db/models/guild-settings.js'; import { schedule } from 'node-cron'; export function QuoteOfTheDay(client) { schedule('0 0 * * *', async () => { const enabledGuilds = await guildSettings.findAll({ where: { qotdToggle: true }, attributes: ['guildID', 'qotdChannelID'] }); const channels = enabledGuilds .filter(guild => guild.qotdChannelID) .map(guild => guild.qotdChannelID); const quoteList = await quoteDB.findAll({ attributes: ['id'] }); const random = crypto.getRandomValues(new Uint32Array(1)); let quoteID = quoteList[random[0] % quoteList.length].id; const quote = await quoteDB.findOne({ where: { id: quoteID } }); let userSubmitter = await client.users.fetch(quote.submitter); const quoteEmbed = new EmbedBuilder() .setAuthor({ name: quote.author, iconURL: quote.authorImage }) .setDescription(quote.quote) .setColor(abEmbedColour) .setFooter({ text: `- ${quote.year}\nSubmitted by ${userSubmitter.username}` }); for (const channel of channels) { let qotdChannel = client.channels.cache.get(channel); await qotdChannel.send({ content: 'New Quote of the Day!', embeds: [quoteEmbed ] }); } }); }