Skip to content

lumixland/discint

Repository files navigation

Discord Intent Validation Library (discint)

npm version npm downloads GitHub Workflow Status Security Audit License: BSL-1.0

A comprehensive TypeScript library for validating and analyzing Discord application intents/flags. Provides detailed analysis, recommendations, and warnings for Discord bot developers.


Features

  • βœ… Full TypeScript Support - Complete type definitions with strict typing
  • πŸ” Comprehensive Analysis - Detailed breakdown of Discord intents and capabilities
  • 🎯 Smart Recommendations - Context-aware suggestions for missing intents
  • ⚠️ Warning System - Detect potential issues and conflicts
  • πŸ“Š Capability Detection - Understand what your bot can and cannot do
  • πŸ—οΈ Modular Architecture - Well-organized codebase with separate concerns

Installation

npm install discint
# or
pnpm add discint
# or
yarn add discint

Usage

Basic Usage

import { validateDiscordIntents, formatValidationResponse } from "discint";

// Analyze Discord application flags
const flags = 262144; // GATEWAY_MESSAGE_CONTENT
const analysis = validateDiscordIntents(flags);

console.log(analysis.capabilities.canReadMessageContent); // true
console.log(analysis.intents.active.length); // 1
console.log(analysis.recommendations); // Array of recommendations

// Format for API responses
const formatted = formatValidationResponse(analysis);
console.log(formatted.success); // true
console.log(formatted.validation.completeness); // 10 (10% of available intents)

Advanced Usage

import {
  validateDiscordIntents,
  DISCORD_APPLICATION_FLAGS,
  INTENT_CATEGORIES,
  type DiscordIntentsAnalysis,
} from "discint";

// Use constants for specific intents
const myFlags =
  DISCORD_APPLICATION_FLAGS.GATEWAY_MESSAGE_CONTENT |
  DISCORD_APPLICATION_FLAGS.GATEWAY_GUILD_MEMBERS |
  DISCORD_APPLICATION_FLAGS.APPLICATION_COMMAND_BADGE;

const result = validateDiscordIntents(myFlags);

if ("error" in result) {
  console.error("Validation failed:", result.error);
} else {
  // Type-safe access to analysis
  const analysis: DiscordIntentsAnalysis = result;

  console.log("Privileged intents:", analysis.intents.privileged);
  console.log("Bot capabilities:", analysis.capabilities);
  console.log("Warnings:", analysis.warnings);
}

API Reference

Main Functions

validateDiscordIntents(flags: number): DiscordIntentsResult

Validates Discord application flags and provides comprehensive analysis.

Parameters:

  • flags - The application flags from Discord API (number)

Returns: DiscordIntentsAnalysis | DiscordIntentsError

formatValidationResponse(analysis: DiscordIntentsResult): FormattedValidationResponse

Formats the validation result for API responses.

Constants

DISCORD_APPLICATION_FLAGS

Object containing all Discord application flag constants with their bit values.

INTENT_CATEGORIES

Object categorizing intents into PRIVILEGED, FUNCTIONAL, and SYSTEM groups.

Types

The library exports comprehensive TypeScript types for all data structures:

  • DiscordIntentsAnalysis - Complete analysis result
  • BotCapabilities - What the bot can do
  • Recommendation - Suggestions for improvement
  • Warning - Potential issues detected
  • And many more...

Project Structure

src/
β”œβ”€β”€ index.ts          # Main entry point and exports
β”œβ”€β”€ types.ts          # TypeScript type definitions
β”œβ”€β”€ constants.ts      # Discord flags and categories
β”œβ”€β”€ validator.ts      # Main validation logic
β”œβ”€β”€ formatter.ts      # Response formatting
β”œβ”€β”€ capabilities.ts   # Capability analysis
β”œβ”€β”€ recommendations.ts # Recommendation generation
β”œβ”€β”€ warnings.ts       # Warning detection
└── utils.ts          # Utility functions

Development

# Install dependencies
pnpm install

# Build the project
pnpm run build

# Lint and format
pnpm run lint
pnpm run format

# Type check
pnpm run build

License

BSL-1.0 - See LICENSE file for details.


Contributing

Contributions are welcome! Please ensure all TypeScript types are properly defined and the code follows the established patterns.


Security

If you discover a security vulnerability, please see SECURITY.md for how to report it.