summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-10-20 21:25:01 -0700
committerFuwn <[email protected]>2025-10-20 21:25:01 -0700
commit3b5df0e0588fc153b5dabf3429fd6acf9254148f (patch)
treebd8cae23c5c2f87c3602b7409d618ab658f0d9b2
parentfeat(gateway:roleMentionCooldown): Use Discord Blurple colour for embed (diff)
downloadumabotdiscord-3b5df0e0588fc153b5dabf3429fd6acf9254148f.tar.xz
umabotdiscord-3b5df0e0588fc153b5dabf3429fd6acf9254148f.zip
feat(gateway:messageCreate): Add dmForwarder
-rw-r--r--packages/gateway/src/index.ts4
-rw-r--r--packages/gateway/src/listeners/messageCreate/dmForwarder.ts32
-rw-r--r--packages/gateway/src/listeners/messageCreate/index.ts2
3 files changed, 37 insertions, 1 deletions
diff --git a/packages/gateway/src/index.ts b/packages/gateway/src/index.ts
index 0bb9597..e0d55f5 100644
--- a/packages/gateway/src/index.ts
+++ b/packages/gateway/src/index.ts
@@ -1,4 +1,4 @@
-import { GatewayIntentBits, Client } from "discord.js";
+import { GatewayIntentBits, Client, Partials } from "discord.js";
import dotenv from "dotenv";
import { handleCommands } from "./commands";
import { handleListeners } from "./listeners";
@@ -12,7 +12,9 @@ const client = new Client({
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildVoiceStates,
+ GatewayIntentBits.DirectMessages,
],
+ partials: [Partials.Channel],
});
handleCommands(client);
diff --git a/packages/gateway/src/listeners/messageCreate/dmForwarder.ts b/packages/gateway/src/listeners/messageCreate/dmForwarder.ts
new file mode 100644
index 0000000..d9c7ee1
--- /dev/null
+++ b/packages/gateway/src/listeners/messageCreate/dmForwarder.ts
@@ -0,0 +1,32 @@
+import { Message } from "discord.js";
+
+const DM_FORWARD_CHANNEL_ID = "1430036877120897044";
+const TRIGGER_STRING = "tracen_academy_trainer_oc";
+
+export const handleDmForwarder = async (message: Message) => {
+ if (!message.channel.isDMBased()) return;
+
+ if (message.author.bot) return;
+
+ if (!message.content.includes(TRIGGER_STRING)) return;
+
+ try {
+ const forwardChannel = message.client.channels.cache.get(
+ DM_FORWARD_CHANNEL_ID,
+ );
+
+ if (
+ !forwardChannel ||
+ !forwardChannel.isTextBased() ||
+ forwardChannel.isDMBased()
+ ) {
+ console.error("DM forward channel not found or not accessible");
+
+ return;
+ }
+
+ await forwardChannel.send(`<@${message.author.id}>\n\n${message.content}`);
+ } catch (error) {
+ console.error("Failed to forward DM:", error);
+ }
+};
diff --git a/packages/gateway/src/listeners/messageCreate/index.ts b/packages/gateway/src/listeners/messageCreate/index.ts
index bb42191..ed27859 100644
--- a/packages/gateway/src/listeners/messageCreate/index.ts
+++ b/packages/gateway/src/listeners/messageCreate/index.ts
@@ -8,6 +8,7 @@ import { handleRoleMentionCooldown } from "./roleMentionCooldown";
import { handleAICommand } from "./aiCommandHandler";
import { handleRandomEyesReaction } from "./randomEyesReaction";
import { handleRoleplayThumbsUpReaction } from "./roleplayThumbsUpReaction";
+import { handleDmForwarder } from "./dmForwarder";
// import { handleBotMentionAutoDelete } from "./botMentionAutoDelete";
import { recordMessageForStatistics } from "../messageStatistics";
// import { handlePersonaRandomMessage } from "./personaRandomMessage";
@@ -16,6 +17,7 @@ import { handleDailyConversationStarter } from "./dailyConversationStarter";
export const handleMessageCreate = (client: Client) => {
client.on(Events.MessageCreate, async (message: Message) => {
recordMessageForStatistics(message);
+ await handleDmForwarder(message);
await handleRoleplayUmagram(message);
await handleRandomEyesReaction(message);
await handleRoleplayThumbsUpReaction(message);