Files
kaczynski-bot/src/index.ts
T

46 lines
1.3 KiB
TypeScript

import { Client, Events, GatewayIntentBits } from 'discord.js';
import RoleService from './services/role';
import CommandService from './services/command';
import DataService from './services/data';
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent]
});
client.once(Events.ClientReady, async (readyClient) => {
// Initialize services
await DataService.init();
await CommandService.init();
await RoleService.init(client.guilds.cache);
// Ready!
console.log(`Ready! Logged in as ${readyClient.user.tag}`);
});
client.on("guildMemberAdd", async (guildMember) => {
await RoleService.giveStarterRoles(guildMember);
});
client.on("messageCreate", async (message) => {
if (message.author.bot) return;
try {
const command = CommandService.parse(message);
if (command) command.execute(message);
}
catch (err) {
console.error(err);
}
});
Bun.cron("0 */6 * * *", async () => {
for (const guild of client.guilds.cache.values()) {
const lurkerRole = RoleService.getRoleByName(guild, RoleService.ROLES["LURKER"]?.name);
if (!lurkerRole) continue;
await guild.members.prune({ days: 5, roles: [lurkerRole] });
}
});
client.login(Bun.env.DISCORD_TOKEN);