0.12.5 • Published 1 year ago

discordoo v0.12.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

WARNING

THIS LIBRARY IS 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

Node.js v12.18 or newer required. 1. Installing 2. First code & starting

Benchmarks

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

D.js collection VS ddoo collection

You can find these benchmarks here.

Planned features

  • Waifoo — a framework for creating discord bots based on Discordoo (commands, other features).
  • Kawaioo — 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.

Release milestone

A complete description of everything that must be in Discordoo to be released

Release deadline: October 30, 2021

Sharding

  • Implement sharding
  • Shards spawning
    • use processes for shards
    • use workers for shards
    • use clusters for shards (unfortunately, windows not supported)
  • Shards communication
    • Shards must be able to communicate in fast and scalable way
    • Shards must use hello/identify algorithm
    • Shards must use heartbeat algorithm
    • Shards must be able to send, receive and handle CACHE_OPERATE messages
    • Shards must be able to send errors to ShardingManager, manager must handle these errors
  • User-land APIs

    • User must be able to spawn shards
    • User must be able to restart specified shard(s)
    • User must be able to destroy shard(s)
    • User must be able to get shard(s) statistics
      • v8 statistics
      • eventloop lag
      • custom statistics
      • events per gateway shard per second statistics
      • common statistics (guilds in cache, users in cache, channels in cache, other)
    • User-friendly sharding APIs in sharding instances

Gateway

  • Implement gateway
    • Implement gateway provider
  • Connecting to gateway
  • Reconnecting/resuming in common/emergency cases
  • Receive and send etf encoded messages
  • Receive and decode zlib-compressed messages
  • Multi gateway shards support in one WebSocketManager instance
  • Processing events/s smoothing/limiting
  • Handling gateway rate limits
  • Send events to WebSocketManager, and then to GatewayProvider
  • Gateway must be able to restart only specified shard(s)

Rest

  • Implement rest
    • Implement rest provider - rest request (like constructor) & rest provider (performs requests and handles rate-limits)
  • Requests
    • Sending requests to Discord
  • Responses
    • Unified response form for library internals
  • Rate-limits

    • Rest must smartly-handle rate-limits using remaining header
    • Rest must synchronize global-rate-limit between shards on one machine

Cache

  • Implement cache
    • Implement cache provider
  • Library must be able to store something
  • Library must be able to delete something from cache
  • Library must be able to check cache size
  • Library must be able to sweep cache using predicate and cycle
  • Library must be able to iterate cache
  • Library must be able to operate with cache in a different shards from one shard
  • Caching policies

    • Cache must handle GlobalCachingPolicy
    • Cache must handle MessagesCachingPolicy
    • Cache must handle GuildsCachingPolicy
    • Cache must handle MembersCachingPolicy
    • Cache must handle ChannelsCachingPolicy
    • Cache must handle EmojisCachingPolicy
    • Cache must handle RolesCachingPolicy
    • Cache must handle PresencesCachingPolicy
    • Cache must handle UsersCachingPolicy
    • All the policies listed above must be able to handle custom caching functions

Entities (discord structures)

  • Must be extendable
  • Anti monkey-patch defence
  • Implement Guilds
  • Implement Messages
  • Implement Channels
  • Implement Emojis
  • Implement Roles
  • Implement Presences
  • Implement Users

User-land APIs

  • Collection
  • Wrapper
  • Entities managers
    • BaseManager
    • GuildsManager
    • MessagesManager
    • ChannelsManager
    • EmojisManager
    • RolesManager
    • PresencesManager
    • UsersManager

Contributing

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

0.12.0

2 years ago

0.12.1

2 years ago

0.12.2

2 years ago

0.12.3

2 years ago

0.12.4

2 years ago

0.12.5

2 years ago

0.11.8

3 years ago

0.11.9

3 years ago

0.11.10

3 years ago

0.11.5

3 years ago

0.11.6

3 years ago

0.11.7

3 years ago

0.11.4

3 years ago

0.10.1

3 years ago

0.10.2

3 years ago

0.10.3

3 years ago

0.10.4

3 years ago

0.11.0

3 years ago

0.11.1

3 years ago

0.11.2

3 years ago

0.11.3

3 years ago

0.10.0

3 years ago

0.9.12

3 years ago

0.9.13

3 years ago

0.9.14

3 years ago

0.9.15

3 years ago

0.9.10

3 years ago

0.9.11

3 years ago

0.9.9

4 years ago

0.9.0

4 years ago

0.7.7

4 years ago

0.7.6

4 years ago

0.7.5

4 years ago

0.7.3-b

4 years ago

0.7.3-a

4 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1-c

4 years ago

0.7.1-b

4 years ago

0.7.1-a

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.6.9-c

4 years ago

0.6.9-b

4 years ago

0.6.9-a

4 years ago

0.6.9

4 years ago

0.6.8

4 years ago