diff --git a/src/core/getIntentsFromModules.ts b/src/core/getIntentsFromModules.ts new file mode 100644 index 0000000..1499726 --- /dev/null +++ b/src/core/getIntentsFromModules.ts @@ -0,0 +1,6 @@ +import type { BotModule } from '../types/bot'; + +export const getIntentsFromModules = (modules: Record) => { + const intents = Object.values(modules).flatMap((module) => module.intents ?? []); + return [...new Set(intents)] as const; +}; diff --git a/src/main.ts b/src/main.ts index c0a4e63..025cf9a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,14 @@ import { Client } from 'discord.js'; import { config } from './config'; +import { getIntentsFromModules } from './core/getIntentsFromModules'; import { loadModules } from './core/loadModules'; import { modules } from './modules/modules'; const { discord } = config; + const client = new Client({ - intents: ['Guilds', 'GuildVoiceStates', 'GuildMembers', 'GuildMessages', 'MessageContent'], + intents: getIntentsFromModules(modules), }); await client.login(discord.token); diff --git a/src/modules/coolLinksManagement/coolLinksManagement.module.ts b/src/modules/coolLinksManagement/coolLinksManagement.module.ts index e4cedb5..e13f37f 100644 --- a/src/modules/coolLinksManagement/coolLinksManagement.module.ts +++ b/src/modules/coolLinksManagement/coolLinksManagement.module.ts @@ -77,4 +77,5 @@ export const coolLinksManagement: BotModule = { } }, }, + intents: ['GuildMessages', 'MessageContent', 'GuildMessageReactions'], }; diff --git a/src/modules/patternReplace/patternReplace.module.ts b/src/modules/patternReplace/patternReplace.module.ts index 9a313e5..238550b 100644 --- a/src/modules/patternReplace/patternReplace.module.ts +++ b/src/modules/patternReplace/patternReplace.module.ts @@ -38,4 +38,5 @@ export const patternReplace: BotModule = { await message.delete(); }, }, + intents: ['GuildMessages', 'MessageContent'], }; diff --git a/src/modules/quoiFeur/quoiFeur.module.ts b/src/modules/quoiFeur/quoiFeur.module.ts index 6e7c638..d24837d 100644 --- a/src/modules/quoiFeur/quoiFeur.module.ts +++ b/src/modules/quoiFeur/quoiFeur.module.ts @@ -32,4 +32,5 @@ export const quoiFeur: BotModule = { ready: deleteRoleMutedOnCoubeh, messageCreate: reactOnEndWithQuoi, }, + intents: ['Guilds', 'GuildMessages', 'MessageContent', 'GuildMessageReactions'], }; diff --git a/src/modules/voiceOnDemand/voiceOnDemand.module.ts b/src/modules/voiceOnDemand/voiceOnDemand.module.ts index 532c4d7..df5d4e4 100644 --- a/src/modules/voiceOnDemand/voiceOnDemand.module.ts +++ b/src/modules/voiceOnDemand/voiceOnDemand.module.ts @@ -93,4 +93,5 @@ export const voiceOnDemand: BotModule = { } }, }, + intents: ['GuildVoiceStates', 'GuildMembers'], }; diff --git a/src/types/bot.ts b/src/types/bot.ts index a26a2e5..efde7ad 100644 --- a/src/types/bot.ts +++ b/src/types/bot.ts @@ -1,6 +1,7 @@ import type { ChatInputCommandInteraction, ClientEvents, + ClientOptions, RESTPostAPIChatInputApplicationCommandsJSONBody, } from 'discord.js'; @@ -22,4 +23,5 @@ export type BotModule = { eventHandlers?: { [key in keyof ClientEvents]?: EventHandler; }; + intents?: ClientOptions['intents']; };