Expand description
§twilight-gateway-queue
Rate limiting functionality for gateway IDENTIFY
commands.
Discord allows bot’s shards to send a limited amount of IDENTIFY
commands
every 5 seconds, with a daily limit from 1000 to 2000 commands, and invalidates
all shard sessions upon exceeding it. Each identify interval may be filled by
shards’ IDs modulo max_concurrency
and such a set of shards is called a
bucket. See Discord Docs/Sharding.
To coordinate this, a Queue
should process each identify request and shards
should wait for its signal to proceed before continuing and otherwise retry. The
provided InMemoryQueue
never fails or cancels requests and is therefore a
good starting point for custom implementations. It can also be composed to
support multiple processes; see gateway-queue-http
and gateway-queue
for
a HTTP client and server implementation, respectively.
Structs§
- InMemory
Queue - Memory based
Queue
implementation backed by an efficient background task.
Constants§
- IDENTIFY_
DELAY - Period between buckets.
- LIMIT_
PERIOD - Duration from the first identify until the remaining count resets to the total count.
Traits§
- Queue
- Abstraction for types processing gateway identify requests.