summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-10-04 02:15:13 -0700
committerFuwn <[email protected]>2025-10-04 02:15:13 -0700
commitb1fca7bc38a57bcf60afaba5719b98b9457be668 (patch)
tree631ef84c8819cf666e1b353e43fb5cf96d7cb902
parentfeat(gateway:listeners): Multi-guild support for messageDeletion and messageE... (diff)
downloadumabotdiscord-b1fca7bc38a57bcf60afaba5719b98b9457be668.tar.xz
umabotdiscord-b1fca7bc38a57bcf60afaba5719b98b9457be668.zip
feat(gateway:listeners): Multi-guild support for messageCreate and umagramCatchup
-rw-r--r--packages/gateway/src/listeners/clientReady/umagramCatchup.ts118
-rw-r--r--packages/gateway/src/listeners/messageCreate/index.ts3
2 files changed, 62 insertions, 59 deletions
diff --git a/packages/gateway/src/listeners/clientReady/umagramCatchup.ts b/packages/gateway/src/listeners/clientReady/umagramCatchup.ts
index 07ea08b..384e5db 100644
--- a/packages/gateway/src/listeners/clientReady/umagramCatchup.ts
+++ b/packages/gateway/src/listeners/clientReady/umagramCatchup.ts
@@ -1,80 +1,80 @@
import { Client } from "discord.js";
+import { GUILD_ID } from "../../constants";
import { ROLEPLAY_UMAGRAM_CHANNEL_ID } from "../constants";
export const handleUmagramCatchup = async (client: Client) => {
try {
const channel = client.channels.cache.get(ROLEPLAY_UMAGRAM_CHANNEL_ID);
- if (channel && channel.isTextBased()) {
- const processChannelMessages = async (
- targetChannel: any,
- channelName: string,
- ) => {
- let lastMessageId: string | undefined;
- let messageCount = 0;
- let heartCount = 0;
-
- while (true) {
- const messages = await targetChannel.messages.fetch({
- limit: 100,
- before: lastMessageId,
- });
-
- if (messages.size === 0) break;
-
- for (const message of messages.values()) {
- messageCount += 1;
-
- const existingReaction = message.reactions.cache.get("❤️");
-
- if (
- existingReaction &&
- existingReaction.users.cache.has(client.user!.id)
- )
- continue;
-
- try {
- await message.react("❤️");
-
- heartCount += 1;
-
- await new Promise((resolve) => setTimeout(resolve, 100));
- } catch (error) {
- console.error(
- `Failed to heart message ${message.id} in ${channelName}:`,
- error,
- );
- }
- }
+ if (!channel || !channel.isTextBased() || !("guildId" in channel) || channel.guildId !== GUILD_ID) return;
- lastMessageId = messages.last()?.id;
+ const processChannelMessages = async (
+ targetChannel: any,
+ channelName: string,
+ ) => {
+ let lastMessageId: string | undefined;
+ let messageCount = 0;
+ let heartCount = 0;
- await new Promise((resolve) => setTimeout(resolve, 500));
- }
+ while (true) {
+ const messages = await targetChannel.messages.fetch({
+ limit: 100,
+ before: lastMessageId,
+ });
+
+ if (messages.size === 0) break;
- return { messageCount, heartCount };
- };
+ for (const message of messages.values()) {
+ messageCount += 1;
- await processChannelMessages(channel, "Main Channel");
+ const existingReaction = message.reactions.cache.get("❤️");
- try {
- const activeThreads = await (channel as any).threads?.fetchActive();
- const archivedThreads = await (channel as any).threads?.fetchArchived();
- const allThreads = [
- ...activeThreads.threads.values(),
- ...archivedThreads.threads.values(),
- ];
+ if (
+ existingReaction &&
+ existingReaction.users.cache.has(client.user!.id)
+ )
+ continue;
- for (const thread of allThreads) {
try {
- await processChannelMessages(thread, `Thread: ${thread.name}`);
+ await message.react("❤️");
+
+ heartCount += 1;
+
+ await new Promise((resolve) => setTimeout(resolve, 100));
} catch (error) {
- console.error(`Error processing thread ${thread.name}:`, error);
+ console.error(
+ `Failed to heart message ${message.id} in ${channelName}:`,
+ error,
+ );
}
}
- } catch (error) {
- console.error("Error fetching threads:", error);
+
+ lastMessageId = messages.last()?.id;
+
+ await new Promise((resolve) => setTimeout(resolve, 500));
}
+
+ return { messageCount, heartCount };
+ };
+
+ await processChannelMessages(channel, "Main Channel");
+
+ try {
+ const activeThreads = await (channel as any).threads?.fetchActive();
+ const archivedThreads = await (channel as any).threads?.fetchArchived();
+ const allThreads = [
+ ...activeThreads.threads.values(),
+ ...archivedThreads.threads.values(),
+ ];
+
+ for (const thread of allThreads)
+ try {
+ await processChannelMessages(thread, `Thread: ${thread.name}`);
+ } catch (error) {
+ console.error(`Error processing thread ${thread.name}:`, error);
+ }
+ } catch (error) {
+ console.error("Error fetching threads:", error);
}
} catch (error) {
console.error("Error adding hearts to existing messages:", error);
diff --git a/packages/gateway/src/listeners/messageCreate/index.ts b/packages/gateway/src/listeners/messageCreate/index.ts
index b294a30..1fb185f 100644
--- a/packages/gateway/src/listeners/messageCreate/index.ts
+++ b/packages/gateway/src/listeners/messageCreate/index.ts
@@ -1,4 +1,5 @@
import { Client, Events, Message } from "discord.js";
+import { GUILD_ID } from "../../constants";
import { handleIqdbModeration } from "./iqdbModeration";
import { handleRoleplayUmagram } from "./roleplayUmagram";
// import { handleArtMediaModeration } from "./artMediaModeration";
@@ -8,6 +9,8 @@ import { handleAICommand } from "./aiCommandHandler";
export const handleMessageCreate = (client: Client) => {
client.on(Events.MessageCreate, async (message: Message) => {
+ if (message.guildId !== GUILD_ID) return;
+
await Promise.allSettled([
handleIqdbModeration(message),
handleRoleplayUmagram(message),