Limits
Every cap that applies to a bot or its owner. They are the same for every app and every plan. Hexis can change them, so read a refusal’s message rather than hard-coding a number.
Apps and installs
| Limit | Value | Notes |
| Apps per owner | 10 active | Plus at most 10 new apps in a day, and 20 create attempts an hour per account. Over it: 409 app_limit / app_creation_limit, or 429. |
| Bots per server | 25 | On every plan. |
| Servers per private app | 25 | An app that is not approved. Approved (public) apps have no per-app server cap. |
| Encrypted-member cap | shared | A reader bot counts toward the server’s end-to-end encrypted member cap, because members seal to it. A no-read bot does not. |
What a running bot may send
A bot socket shares the member socket budget. On top of it:
| Limit | Value | Notes |
| Channel messages | 5 per 5 seconds, per channel | On top of the channel’s slowmode and the account’s send limit. Edits, deletes and reactions do not count. The runtime checks this first and returns RateLimited without sending. |
| New DM recipients | 20 per hour | Counted per distinct person; more messages to someone already counted that hour are free here. A bot can only DM people in a server it shares. A conversation with nobody else in it is not limited. |
| Key distribution and encryption calls | as for members | DistributeSenderKeys and the other encryption throttles apply as they do to a person. |
Interactions
| Limit | Value | Notes |
| Invokes | 20 per minute, per invoking member | Counts what one person sends to bots, not per bot. |
| Replies | 5 per interaction | Shared by all of the bot’s sockets, accepted for 15 minutes after the interaction. The current runtime sends one. |
| Freshness | no more than 2 minutes ahead, 10 minutes old | The bot refuses others and remembers each id for 10 minutes after it was made. |
| Waiting arriving | 15 seconds | How long a member’s app will show “thinking…”, then give up. Not shipped yet. |
| Commands arriving | 50 global and 50 per server per app; 25 options each; 10 updates a minute per app | From the design; commands are not on the wire yet (#1436). |
Events
| Limit | Value | Notes |
| Runtime event queue | 10,000 | Past it the oldest queued events are dropped, and you get an Error saying how many. |
| Events sent to a bot socket | 50 a second, bursts of 200 | Past it they are dropped, and the socket gets a drop notice once a second (count and time since). Reconcile as after a reconnect. Interactions, lifecycle events and the notice itself are never dropped. |
| Channel topics per socket | 2000 | Channels a bot with messages or reactions listens to. |
| Reconnect backoff | 1 s doubling to 60 s | Resets after a minute connected. A 429 uses its Retry-After (1 s to 10 min). |
Notices
The server side of notices is shipped; the cards members see (#1472) and DM notices (#1474) are not arriving. These caps apply to what workflows and, once they ship, incoming webhooks can post. A bot does not post notices.
| Limit | Value | Notes |
| Per channel | 6 a minute | Across all sources. |
| Per server | 30 a minute, 500 a day | |
| DM notices arriving | 1 per 12 hours, per server and member | None after the member closes the notices conversation. DM notices ship with #1474. |
| Length | 2000 characters | No link previews. |
Over a limit, the step fails as rate-limited and the workflow run goes on. Incoming webhooks have their own caps arriving; the numbers are published when they ship.
Reports
| Limit | Value |
| One report of a bot, per member, per server | 1 a day |
| Reports of one bot by one member | 5 a day |
| Reports by one member, any bot | 20 an hour |
| Note length | 500 characters |