generated from nhcarrigan/template
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
import { Client, GatewayIntentBits, Events, Partials } from "discord.js";
|
||||
import { scheduleJob } from "node-schedule";
|
||||
import { handleMessageCreate } from "./events/handleMessageCreate.js";
|
||||
import { cacheData } from "./modules/cacheData.js";
|
||||
import {
|
||||
postFreeCodeCampNews,
|
||||
postHackerNews,
|
||||
@@ -35,10 +36,16 @@ const amari: Amari = {
|
||||
amari.discord.once(Events.ClientReady, () => {
|
||||
void logger.log("debug",
|
||||
`Authenticated to Discord as ${amari.discord.user?.username ?? "unknown"}`);
|
||||
void cacheData(amari);
|
||||
scheduleJob("post news", "0 * * * *", async() => {
|
||||
await logger.log("debug", "Fetching tech news.");
|
||||
await postFreeCodeCampNews(amari);
|
||||
await postHackerNews(amari);
|
||||
});
|
||||
scheduleJob("check guild tags", "0 0 * * *", async() => {
|
||||
await logger.log("debug", "Auditing guild tags.");
|
||||
await cacheData(amari);
|
||||
});
|
||||
});
|
||||
|
||||
amari.discord.on(Events.MessageCreate, (message) => {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @copyright NHCarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
|
||||
import { ids } from "../config/ids.js";
|
||||
import { logger } from "../utils/logger.js";
|
||||
import { processUserGuildTag } from "./processUserGuildTag.js";
|
||||
import type { Amari } from "../interfaces/amari.js";
|
||||
|
||||
/**
|
||||
* To run on boot. Loads and caches our home guild members/users.
|
||||
* @param amari - Amari's instance.
|
||||
*/
|
||||
export const cacheData = async(amari: Amari): Promise<void> => {
|
||||
try {
|
||||
const guild = amari.discord.guilds.cache.get(ids.guilds.nhcarrigan)
|
||||
?? await amari.discord.guilds.fetch(ids.guilds.nhcarrigan).catch(() => {
|
||||
return null;
|
||||
});
|
||||
if (guild === null) {
|
||||
throw new Error("Cannot find home guild. Amari will not function.");
|
||||
}
|
||||
const members = await guild.members.fetch();
|
||||
await logger.log("info", `Cached ${members.size.toString()} guild members.`);
|
||||
await Promise.all([ ...members.values() ].map(async(member) => {
|
||||
await processUserGuildTag(amari, member.user);
|
||||
}));
|
||||
} catch (error) {
|
||||
if (error instanceof Error) {
|
||||
await logger.error("cache data module", error);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -35,6 +35,11 @@ export const processUserGuildTag = async(
|
||||
if (member === null) {
|
||||
return;
|
||||
}
|
||||
if (user.primaryGuild?.identityEnabled !== true
|
||||
&& member.roles.cache.has(ids.roles.representing)) {
|
||||
await member.roles.remove(ids.roles.representing);
|
||||
return;
|
||||
}
|
||||
if (user.primaryGuild?.identityGuildId === ids.guilds.nhcarrigan
|
||||
&& !member.roles.cache.has(ids.roles.representing)) {
|
||||
await member.roles.add(ids.roles.representing);
|
||||
|
||||
Reference in New Issue
Block a user