diff options
| author | Fuwn <[email protected]> | 2025-10-20 21:25:01 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-10-20 21:25:01 -0700 |
| commit | 3b5df0e0588fc153b5dabf3429fd6acf9254148f (patch) | |
| tree | bd8cae23c5c2f87c3602b7409d618ab658f0d9b2 | |
| parent | feat(gateway:roleMentionCooldown): Use Discord Blurple colour for embed (diff) | |
| download | umabotdiscord-3b5df0e0588fc153b5dabf3429fd6acf9254148f.tar.xz umabotdiscord-3b5df0e0588fc153b5dabf3429fd6acf9254148f.zip | |
feat(gateway:messageCreate): Add dmForwarder
| -rw-r--r-- | packages/gateway/src/index.ts | 4 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/messageCreate/dmForwarder.ts | 32 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/messageCreate/index.ts | 2 |
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); |