generated from nhcarrigan/template
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
import { Client, GatewayIntentBits, Events, Partials } from "discord.js";
|
import { Client, GatewayIntentBits, Events, Partials } from "discord.js";
|
||||||
import { scheduleJob } from "node-schedule";
|
import { scheduleJob } from "node-schedule";
|
||||||
import { handleMessageCreate } from "./events/handleMessageCreate.js";
|
import { handleMessageCreate } from "./events/handleMessageCreate.js";
|
||||||
|
import { cacheData } from "./modules/cacheData.js";
|
||||||
import {
|
import {
|
||||||
postFreeCodeCampNews,
|
postFreeCodeCampNews,
|
||||||
postHackerNews,
|
postHackerNews,
|
||||||
@@ -35,10 +36,16 @@ const amari: Amari = {
|
|||||||
amari.discord.once(Events.ClientReady, () => {
|
amari.discord.once(Events.ClientReady, () => {
|
||||||
void logger.log("debug",
|
void logger.log("debug",
|
||||||
`Authenticated to Discord as ${amari.discord.user?.username ?? "unknown"}`);
|
`Authenticated to Discord as ${amari.discord.user?.username ?? "unknown"}`);
|
||||||
|
void cacheData(amari);
|
||||||
scheduleJob("post news", "0 * * * *", async() => {
|
scheduleJob("post news", "0 * * * *", async() => {
|
||||||
|
await logger.log("debug", "Fetching tech news.");
|
||||||
await postFreeCodeCampNews(amari);
|
await postFreeCodeCampNews(amari);
|
||||||
await postHackerNews(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) => {
|
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) {
|
if (member === null) {
|
||||||
return;
|
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
|
if (user.primaryGuild?.identityGuildId === ids.guilds.nhcarrigan
|
||||||
&& !member.roles.cache.has(ids.roles.representing)) {
|
&& !member.roles.cache.has(ids.roles.representing)) {
|
||||||
await member.roles.add(ids.roles.representing);
|
await member.roles.add(ids.roles.representing);
|
||||||
|
|||||||
Reference in New Issue
Block a user