The manager model
Most day-to-day framework operations live on managers attached to the client:client.messagesclient.channelsclient.guildsclient.usersclient.webhooksclient.invitesclient.collectors
- route wiring
- payload normalization
- cache updates
- a consistent success or failure shape
The shared result shape
Most manager methods resolve to:When to use a manager
Use a manager when you want:- built-in cache hydration
- built-in object builders
- idiomatic framework payload handling
- operations that match normal bot development flows
When to use the raw REST client
Useclient.rest when:
- Discord added an endpoint the higher-level manager does not expose yet
- you are prototyping a new manager surface
- you are writing tooling that does not need cache integration
- you deliberately want raw route-level control
Example: manager-driven read flow
Example: nested guild-scoped managers
Cache expectations
Managers use the sharedTongueStore, but you should not assume everything is already cached.
Practical rules:
fetch(..., false)is cache-first when the manager supports caching- list methods often hydrate cache entries as a side effect
- some operations, such as
clone, depend on a cached source entity - member cache keys are guild-scoped, not global by user ID