Skip to content

Rest

REST represents an interface to manipulate the Discord REST API. When making any sort of REST request, this class is used so that we accurately track the rate limits and add the token to each request.

Properties

token

Rest.token  :: Secret

logger

Rest.logger  :: Logger

routeRatelimits

Rest.routeRatelimits  :: {
       [string]: { remaining,
       limit: number,
       resetAfter: number,
       cooloff: boolean?,
    }

routeBuckets

Rest.routeBuckets  :: {
      {… [string]: string? …}    }

globalRequestCount

Rest.globalRequestCount  :: number

globalRatelimit

Rest.globalRatelimit  :: number

isBlocked

Rest.isBlocked  :: boolean

resourcesBlocked

Rest.resourcesBlocked  :: {
      {… [string]: boolean? …}    }

intents

Rest.intents  :: number

version

Rest.version  :: number

Methods

The Rest instance has no set methods!

Functions

yieldUntil

Rest . yieldUntil (

     self: REST
     callback: () -> boolean
     message: string
)  -> ()

Quality of life method to yield, warn after a specific duration, and resume once a condition has been met

implementBucketRatelimitsFor

Rest . implementBucketRatelimitsFor (

     self: REST
     request: rest.Request
)  -> ()

Adds per-route bucket rate limit handling for each request.

implementGlobalRatelimitsFor

Rest . implementGlobalRatelimitsFor (

     self: REST
     request: rest.Request
)  -> ()

Adds global ratelimiting to application

implementErrorHandlerFor

Rest . implementErrorHandlerFor (

     self: REST
     request: rest.Request
)  -> ()

Responsible for handling errors that occur when a request has been sent to discord

implementAttachmentHandlerFor

Rest . implementAttachmentHandlerFor (

     _: REST
     request: rest.Request
)  -> ()

Responsible for handling errors that occur when a request has been sent to discord

newRequest

Rest . newRequest (

     self: REST
)  -> ()

Will create a new Request

new

Rest . new (

     settings: { token: secret.Secret<string>
)  -> ()

Will create a new REST object