/discordoo

Modular and powerful node.js library to interact with Discord API.

Primary LanguageTypeScriptMIT LicenseMIT

Discord bots. Simplified and boosted · Docs & Guide · Contribute

Testing status Linting status Build status Online


WARNING

THIS LIBRARY UNDER DEVELOPMENT! Parts of the stuff described here is not done yet, and we are just planning to implement it.

About

Discordoo is a Discord API library interface. It was built from ground-up to provide better and faster APIs, both internal and external, than existing Node.js libraries offer.

Features

  • Very scalable in any way — inter-machines sharding, custom modules for events queue
  • Really fast — this is not a promise, but real tests
  • Convenient to development — we create predictable APIs and take care of the convenience of development
  • Caching policies — do not store a cache that your bot does not need
  • Flexible in everything — you can replace parts of the library as you need using our providers
  • Safe for large bots — global-rate-limit synchronization between shards on one machine, the ability to limit the number of events sent by gateway to your bot per second
  • Convenient to monitor — any statistics, from v8 to eventloop lag and events per second, are available for each sharding instance
  • Good TypeScript support — the library written in TypeScript, so we naturally support integration with TypeScript well
  • Well-documented — instructions for everything, starting from the installation, ending with inter-machines sharding
  • Tested — critical components tested using various benchmarks, including testing using N|Solid platform

Let's start

Instructions for creating the first bot with Discordoo can be found in our documentation:

  1. Installing
  2. First code & starting

Tests

While the library is under development, only Discordoo Collection tests are available.

djs collection VS ddoo collection

djs is the most popular library for developing bots, so we will compare with it. (if you're interested, ddoo is roughly comparable to eris in collection speed)

Test: random elements from collection

  1. 100 elements in collection, 5 random elements
  2. 800 elements in collection, 150 random elements
  3. 10000 elements in collection, 1000 random elements
  4. 10000 elements in collection, 8000 random elements

Test: filter 50% of elements from collection

  1. 100 elements in collection
  2. 800 elements in collection
  3. 10000 elements in collection

Test: map collection elements

  1. 100 elements in collection
  2. 800 elements in collection
  3. 10000 elements in collection

Planned features

  • Waifoo — a framework for creating discord bots based on Discordoo (commands, other features).
  • Kawaioo Ayayoo — a library / nestjs microservice that will allow you to interact with the Discordoo ShardingManager over TCP and UDP, to create your own scalable REST API for the bot.
  • Voice support — at this moment, the library does not support voice.
  • Microservices — injection of microservices into the Client that can communicate with each other.

Contributing

Feel free to create a PR, but check if there is an existing one. See Contributing Guide.