paperclipai/paperclip · error · Error

Discord Message Content intent is not enabled for this appli

Error message

Discord Message Content intent is not enabled for this application

What it means

verifyDiscordBot checks the application's flags for the Message Content intent bit (MESSAGE_CONTENT_FLAGS). This error means the bot's application has not enabled the privileged Message Content intent, which Discord requires before message content is delivered to the bot.

Source

Thrown at server/src/services/chat-discord.ts:238

      "application lookup",
    ),
    discordJson<DiscordGuild>(
      input.fetch,
      input.botToken,
      `/guilds/${encodeURIComponent(guildId)}`,
      "server membership lookup",
    ),
  ]);
  if (!user.bot || !user.id || !user.username) {
    throw new Error("Discord token does not identify a bot user");
  }
  if (application.id !== applicationId || user.id !== applicationId) {
    throw new Error(
      "Discord Application ID does not match the supplied bot token",
    );
  }
  if (((application.flags ?? 0) & MESSAGE_CONTENT_FLAGS) === 0) {
    throw new Error(
      "Discord Message Content intent is not enabled for this application",
    );
  }
  if (guild.id !== guildId) {
    throw new Error("Discord bot is not installed in the selected server");
  }
  return {
    providerAccountId: guildId,
    providerAccountLabel: guild.name ?? guildId,
    botExternalId: user.id,
    botUsername: user.username,
    botLabel: user.global_name ?? application.name ?? user.username,
    ...(user.avatar
      ? {
          botAvatarUrl: `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`,
        }
      : {}),
  };

View on GitHub (pinned to 01ad858492)

Solutions

  1. Go to Discord Developer Portal > your Application > Bot > Privileged Gateway Intents and enable 'Message Content Intent', then restart verification
  2. If the bot is in 100+ servers, complete Discord's verification process required to enable privileged intents at scale
  3. Confirm with GET /oauth2/applications/@me that the flags bit is present after toggling

Example fix

// before (portal settings)
MESSAGE CONTENT INTENT: OFF
// after (portal settings)
MESSAGE CONTENT INTENT: ON  // Developer Portal > Bot > Privileged Gateway Intents
Defensive patterns

Strategy: try-catch

Validate before calling

const app = await fetch("https://discord.com/api/v10/oauth2/applications/@me", {
  headers: { authorization: `Bot ${botToken}` },
}).then((r) => r.json());
const MESSAGE_CONTENT_FLAGS = 1 << 15; // APPLICATION_FLAGS bit for GatewayIntentBits.MessageContent
if (((app.flags ?? 0) & MESSAGE_CONTENT_FLAGS) === 0) {
  throw new Error("Enable Message Content Intent in the Developer Portal");
}

Try / catch

try {
  await verifyDiscordBot(input);
} catch (err) {
  if (err.message.includes("Message Content intent")) {
    throw new ConfigError("Enable 'Message Content Intent' under Developer Portal > Bot > Privileged Gateway Intents");
  }
  throw err;
}

Prevention

When it happens

Trigger: Running verifyDiscordBot for an application where application.flags lacks the message-content bit; a newly created bot with default intents; toggling the intent off in the Developer Portal after configuration.

Common situations: Fresh bots that never enabled privileged gateway intents; apps created before the Message Content intent rollout that had grandfathered access until regeneration; teams migrating bots between applications.

Related errors


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/6a75adf16e32999e. Report an issue: GitHub.