Predictable JavaScript abstractions for Discord API.
Switch branches/tags
Nothing to show
Clone or download



A Node.js module providing a set of interfaces to interact with Discord API.


Requires at least Node.js 4.0.0.

No native modules required to work with audio. Choose from precompiled (default) or node-opus (optional).

Join #node_discordie in Discord API.

Fully Implemented

  • Messaging
  • Role and channel permission management API
  • Member management API (kicking, banning, etc.)
  • Direct messages
  • Voice encoding, sending, decoding and receiving (audio streaming example: examples/encoderstream.js)
  • Guild (server) and channel management API
  • Local user profile (username change, statuses, avatars)
  • Multiserver voice support


Mirrors inline documentation in files:

  • lib/interfaces/*.js
  • lib/models/*.js
  • lib/voice/*.js
  • lib/Constants.js
  • lib/index.js


var Discordie = require("discordie");
var Events = Discordie.Events;

var client = new Discordie();

client.connect({ token: "" });

client.Dispatcher.on(Events.GATEWAY_READY, e => {
  console.log("Connected as: " + client.User.username);

client.Dispatcher.on(Events.MESSAGE_CREATE, e => {
  if (e.message.content == "ping")"pong");


Library comparison:

.NET: RogueException/Discord.Net || Luigifan/DiscordSharp || robinhood128/DiscordUnity

Node.js: izy521/ || hydrabolt/discord.js || abalabahaha/eris

Python: Rapptz/

Ruby: meew0/discordrb

Go: bwmarrin/discordgo

Rust: SpaceManiac/discord-rs

PHP: teamreflex/DiscordPHP || Cleanse/discord-hypertext

Java: austinv11/Discord4J || DV8FromTheWorld/JDA || BtoBastian/Javacord

Lua: SinisterRectus/Discordia || satom99/litcord