No description
  • TypeScript 100%
Find a file
Andrew Tandy c79b281a85
feat: Implement Discord OAuth2 client with comprehensive functionality
- Added OAuth2Client class for handling Discord OAuth2 flows including authorization code, implicit, client credentials, bot, and webhook flows.
- Introduced error handling with custom error classes: OAuth2Error, DiscordAPIRequestError, ConfigurationError, and ValidationError.
- Defined types for OAuth2 responses, authorization options, and Discord entities such as User, Guild, and Role.
- Created utility functions for building URLs, encoding credentials, and handling permissions.
- Developed an internal HTTP client for making requests to the Discord API with error handling.
- Implemented permission calculation utilities to manage Discord's permission system.
2025-11-14 14:04:04 -08:00
.vscode Initial commit 2025-11-13 14:59:47 -08:00
src feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
.editorconfig Initial commit 2025-11-13 14:59:47 -08:00
.eslintrc.cjs Initial commit 2025-11-13 14:59:47 -08:00
.gitattributes Initial commit 2025-11-13 14:59:47 -08:00
.gitignore Initial commit 2025-11-13 14:59:47 -08:00
.npmignore feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
.prettierignore Initial commit 2025-11-13 14:59:47 -08:00
.prettierrc.json Initial commit 2025-11-13 14:59:47 -08:00
bun.lock feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
LICENSE Initial commit 2025-11-13 14:59:47 -08:00
package-lock.json feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
package.json feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
README.md feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00
tsconfig.json feat: Implement Discord OAuth2 client with comprehensive functionality 2025-11-14 14:04:04 -08:00

discord-oauth2

A modern, type-safe OAuth2 client for Discord. Built with TypeScript. Works in Node.js and Bun.

npm version

Features

  • Fully typed with strict TypeScript
  • Zero dependencies
  • Supports all Discord OAuth2 flows
  • Built-in permission utilities
  • ESM & CommonJS compatible

Installation

# npm
npm install @oneshot101/discord-oauth2

# pnpm
pnpm add @oneshot101/discord-oauth2

# yarn
yarn add @oneshot101/discord-oauth2

# bun
bun add @oneshot101/discord-oauth2

Quick Start

import { OAuth2Client } from '@oneshot101/discord-oauth2';

const client = new OAuth2Client({
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
  redirectUri: 'https://your-app.com/callback',
});

const url = client.generateAuthUrl({
  scopes: ['identify', 'email'],
  state: 'csrf-token',
});

const tokens = await client.exchangeCode('authorization-code');
const user = await client.getUser(tokens.access_token);
console.log(user.username);

Bot Authorization

import { PermissionFlags, calculatePermissions } from '@oneshot101/discord-oauth2';

const perms = calculatePermissions([PermissionFlags.VIEW_CHANNEL, PermissionFlags.SEND_MESSAGES]);

const url = client.generateBotAuthUrl({ permissions: perms });
console.log(url);

Token Management

const refreshed = await client.refreshToken(tokens.refresh_token);
await client.revokeToken(tokens.access_token);

Key Methods

  • generateAuthUrl()
  • generateBotAuthUrl()
  • exchangeCode()
  • refreshToken()
  • revokeToken()
  • getUser()
  • getUserGuilds()
  • getUserConnections()
  • getClientCredentials()

Permission Utilities

  • calculatePermissions()
  • hasPermission()
  • getPermissionFlags()
  • PermissionPresets