🤬
Enable build support by adding .buildspec.yml
.github Loading last commit info...
.husky
.vscode
.yarn
packages
.commitlintrc.json
.dockerignore
.eslintrc.json
.gitattributes
.gitignore
.prettierignore
.prettierrc.json
.yarnrc.yml
README.md
package.json
tsconfig.eslint.json
tsconfig.json
tsup.config.ts
turbo.json
vitest.config.ts
yarn.lock
README.md

discord.js


Discord server npm version npm downloads Tests status

About

discord.js is a powerful Node.js module that allows you to easily interact with the
Discord API.

  • Object-oriented
  • Predictable abstractions
  • Performant
  • 100% coverage of the Discord API

Installation

Node.js 16.9.0 or newer is required.

npm install discord.js
yarn add discord.js
pnpm add discord.js

Optional packages

  • zlib-sync for WebSocket data compression and inflation (npm install zlib-sync)
  • erlpack for significantly faster WebSocket data (de)serialisation (npm install discord/erlpack)
  • bufferutil for a much faster WebSocket connection (npm install bufferutil)
  • utf-8-validate in combination with bufferutil for much faster WebSocket processing (npm install utf-8-validate)
  • @discordjs/voice for interacting with the Discord Voice API (npm install @discordjs/voice)

Example usage

Install all required dependencies:

npm install discord.js @discordjs/rest
yarn add discord.js @discordjs/rest
pnpm add discord.js @discordjs/rest

Register a slash command against the Discord API:

const { REST } = require('@discordjs/rest');
const { Routes } = require('discord.js');

const commands = [
	{
		name: 'ping',
		description: 'Replies with Pong!',
	},
];

const rest = new REST({ version: '10' }).setToken('token');

(async () => {
	try {
		console.log('Started refreshing application (/) commands.');

		await rest.put(Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID), { body: commands });

		console.log('Successfully reloaded application (/) commands.');
	} catch (error) {
		console.error(error);
	}
})();

Afterwards we can create a quite simple example bot:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.on('ready', () => {
	console.log(`Logged in as ${client.user.tag}!`);
});

client.on('interactionCreate', async (interaction) => {
	if (!interaction.isChatInputCommand()) return;

	if (interaction.commandName === 'ping') {
		await interaction.reply('Pong!');
	}
});

client.login('token');

Extensions

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.

Please wait...
Page is in error, reload to recover