96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
import { botId, cache, DiscordActivityTypes, editBotNickname, editBotStatus, sendMessage } from '@discordeno';
|
|
import { log, LogTypes as LT } from '@Log4Deno';
|
|
|
|
import config from '~config';
|
|
import { LOCALMODE } from '~flags';
|
|
|
|
import { successColor } from 'embeds/colors.ts';
|
|
|
|
import intervals from 'utils/intervals.ts';
|
|
import utils from 'utils/utils.ts';
|
|
|
|
export const readyHandler = () => {
|
|
log(LT.INFO, `${config.name} Logged in!`);
|
|
editBotStatus({
|
|
activities: [
|
|
{
|
|
name: 'Booting up . . .',
|
|
type: DiscordActivityTypes.Game,
|
|
createdAt: new Date().getTime(),
|
|
},
|
|
],
|
|
status: 'online',
|
|
});
|
|
|
|
// Interval to rotate the status text every 30 seconds to show off more commands
|
|
setInterval(async () => {
|
|
log(LT.LOG, 'Changing bot status');
|
|
try {
|
|
// Wrapped in try-catch due to hard crash possible
|
|
editBotStatus({
|
|
activities: [
|
|
{
|
|
name: await intervals.getRandomStatus(),
|
|
type: DiscordActivityTypes.Game,
|
|
createdAt: new Date().getTime(),
|
|
},
|
|
],
|
|
status: 'online',
|
|
});
|
|
} catch (e) {
|
|
log(LT.ERROR, `Failed to update status: ${JSON.stringify(e)}`);
|
|
}
|
|
}, 30000);
|
|
|
|
// Interval to update bot list stats every 24 hours
|
|
LOCALMODE ? log(LT.INFO, 'updateListStatistics not running') : setInterval(() => {
|
|
log(LT.LOG, 'Updating all bot lists statistics');
|
|
intervals.updateListStatistics(botId, cache.guilds.size + cache.dispatchedGuildIds.size);
|
|
}, 86400000);
|
|
|
|
// Interval to update hourlyRates every hour
|
|
setInterval(() => {
|
|
log(LT.LOG, 'Updating all command hourlyRates');
|
|
intervals.updateHourlyRates();
|
|
}, 3600000);
|
|
|
|
// Interval to update heatmap.png every hour
|
|
setInterval(() => {
|
|
log(LT.LOG, 'Updating heatmap.png');
|
|
intervals.updateHeatmapPng();
|
|
}, 3600000);
|
|
|
|
// setTimeout added to make sure the startup message does not error out
|
|
setTimeout(() => {
|
|
LOCALMODE && editBotNickname(config.devServer, `LOCAL - ${config.name}`);
|
|
LOCALMODE ? log(LT.INFO, 'updateListStatistics not running') : intervals.updateListStatistics(botId, cache.guilds.size + cache.dispatchedGuildIds.size);
|
|
intervals.updateHourlyRates();
|
|
intervals.updateHeatmapPng();
|
|
editBotStatus({
|
|
activities: [
|
|
{
|
|
name: 'Booting Complete',
|
|
type: DiscordActivityTypes.Game,
|
|
createdAt: new Date().getTime(),
|
|
},
|
|
],
|
|
status: 'online',
|
|
});
|
|
sendMessage(config.logChannel, {
|
|
embeds: [
|
|
{
|
|
title: `${config.name} is now Online`,
|
|
color: successColor,
|
|
fields: [
|
|
{
|
|
name: 'Version:',
|
|
value: `${config.version}`,
|
|
inline: true,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}).catch((e: Error) => utils.commonLoggers.messageSendError('ready.ts:93', 'Startup', e));
|
|
}, 1000);
|
|
};
|