"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const Discord = __importStar(require("discord.js")); const fs = __importStar(require("fs")); const { token, disableDaytimeAnnouncements } = JSON.parse(fs.readFileSync('./config.json', 'utf8')); const path = __importStar(require("path")); const morningHour = 8; const eveningHour = 21; function getNextMorning() { let now = new Date(); let next = new Date(); if (now.getUTCHours() >= morningHour) { next.setTime(next.getTime() + 1000 * 60 * 60 * 24); } next.setUTCHours(morningHour); next.setUTCMinutes(Math.floor(Math.random() * 60)); next.setUTCSeconds(Math.floor(Math.random() * 60)); console.log('next morning set to ' + next); return next.getTime(); } function getNextNight() { let now = new Date(); let next = new Date(); if (now.getUTCHours() >= eveningHour) { next.setTime(next.getTime() + 1000 * 60 * 60 * 24); } next.setUTCHours(eveningHour); next.setUTCMinutes(Math.floor(Math.random() * 60)); next.setUTCSeconds(Math.floor(Math.random() * 60)); console.log('next night set to ' + next); return next.getTime(); } let next; function save() { fs.writeFileSync('./next.json', JSON.stringify(next)); } if (fs.existsSync('./next.json')) { next = JSON.parse(fs.readFileSync('./next.json', 'utf8')); } else { next = { morning: getNextMorning(), night: getNextNight() }; save(); } const bot = new Discord.Client({ intents: [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_VOICE_STATES, Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, ], }); const channels = [ '587108210683412493' ]; const morning = [ 'goob morning', 'gm besties', 'morning !!!', 'it is Morning', 'gm', 'goom morbning' ]; const night = [ 'good night!!!!!!', 'nini all', 'goob night', 'goo night .....', 'sleep well everyone!!!!!', 'good night !! dont let the bugs bite' ]; bot.on('ready', async () => { setInterval(() => { let current = new Date().getTime(); // console.log(current, next.morning, next.night); if (current > next.morning && !disableDaytimeAnnouncements) { next.morning = getNextMorning(); channels.forEach(c => { bot.channels.fetch(c) .then(channel => channel.send(morning[Math.floor(Math.random() * morning.length)])) .catch(err => console.log('couldnt find channel ' + c + ': ' + err)); }); save(); } if (current > next.night && !disableDaytimeAnnouncements) { next.night = getNextNight(); channels.forEach(c => { bot.channels.fetch(c) .then(channel => channel.send(night[Math.floor(Math.random() * night.length)])) .catch(err => console.log('couldnt find channel ' + c + ': ' + err)); }); save(); } }, 1000); bot.commands = new Discord.Collection(); const cmdFiles = fs.readdirSync(path.join(__dirname, "./commands")).filter((file) => file.endsWith(".js")); for (const file of cmdFiles) { const cmd = (await Promise.resolve().then(() => __importStar(require(`./commands/${file}`)))); bot.commands.set(cmd.data.name, cmd); if (cmd.onClientReady) cmd.onClientReady(bot); } console.log('foggy online'); }); bot.on('interactionCreate', async (interaction) => { if (!interaction.isCommand()) return; const command = interaction.client.commands.get(interaction.commandName); if (!command) return; try { await command.execute(interaction, interaction.member); } catch (error) { interaction.reply({ content: "`ERROR`", ephemeral: true }); console.error(error); } }); bot.login(token);