JSPM

@discordjs/ws

0.5.0-dev.1668600275-ff85481.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 240446
  • Score
    100M100P100Q171454F
  • License Apache-2.0

Wrapper around Discord's gateway

Package Exports

  • @discordjs/ws

Readme


discord.js


Discord server npm version npm downloads Build status Code coverage

Vercel

About

@discordjs/ws is a powerful wrapper around Discord's gateway.

Installation

Node.js 16.9.0 or newer is required.

npm install @discordjs/ws
yarn add @discordjs/ws
pnpm add @discordjs/ws

Example usage

import { WebSocketManager } from '@discordjs/ws';
import { REST } from '@discordjs/rest';

const rest = new REST().setToken(process.env.DISCORD_TOKEN);
// This example will spawn Discord's recommended shard count, all under the current process.
const manager = new WebSocketManager({
    token: process.env.DISCORD_TOKEN,
    intents: 0, // for no intents
    rest,
});

await manager.connect();

Specify shards

// Spawn 4 shards
const manager = new WebSocketManager({
    token: process.env.DISCORD_TOKEN,
    intents: 0,
    rest,
    shardCount: 4,
});

// The manager also supports being responsible for only a subset of your shards:

// Your bot will run 8 shards overall
// This manager will only take care of 0, 2, 4, and 6
const manager = new WebSocketManager({
    token: process.env.DISCORD_TOKEN,
    intents: 0,
    rest,
    shardCount: 8,
    shardIds: [0, 2, 4, 6],
});

// Alternatively, if your shards are consecutive, you can pass in a range
const manager = new WebSocketManager({
    token: process.env.DISCORD_TOKEN,
    intents: 0,
    rest,
    shardCount: 8,
    shardIds: {
        start: 0,
        end: 4,
    },
});

Specify worker_threads

You can also have the shards spawn in worker threads:

import { WebSocketManager, WorkerShardingStrategy } from '@discordjs/ws';

const manager = new WebSocketManager({
    token: process.env.DISCORD_TOKEN,
    intents: 0,
    rest,
    shardCount: 6,
});

// This will cause 3 workers to spawn, 2 shards per each
manager.setStrategy(new WorkerShardingStrategy(manager, { shardsPerWorker: 2 }));
// Or maybe you want all your shards under a single worker
manager.setStrategy(new WorkerShardingStrategy(manager, { shardsPerWorker: 'all' }));

Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the documentation.
See the contribution guide if you'd like to submit a PR.

Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to join our official discord.js Server.