Limits & Errors
Analytics availability, what Discord's API does not expose and the common errors when publishing.
Analytics
Discord's Bot API exposes no message metrics, so there are no analytics for Discord accounts.
What you cannot do
Discord's Bot API, as Zernio runs it, does not expose:
- Reading DM replies or any inbound message (needs a Gateway connection)
- Comments
- Analytics
- A poll and media attachments in the same message
- More than 50 pinned messages per channel
- DMs to users who share no server with the bot, or who have DMs turned off for non-friends
- Assigning or removing the
@everyonerole - Tag discovery for forum channels (read the ids in Discord's channel settings)
Common errors
| Error | Cause | Fix |
|---|---|---|
502 from a role or event endpoint | The server was connected before Manage Roles and Manage Events were part of the install | Re-invite the bot, or grant the permission on the bot's role in Server Settings. |
403 from POST /v1/discord/dms | The recipient shares no server with the bot, or has DMs turned off for non-friends | Only DM members of a server the bot is in; the recipient's privacy setting cannot be overridden. |
400 from PUT .../pins/{messageId} | The channel already has 50 pinned messages | Unpin one first. |
400 "no changes, invalid channel type, or bot cannot access channel" from PATCH .../discord-settings | channelId is not a text, announcement or forum channel, or the bot cannot see it | Pick a channel of type 0, 5 or 15 that the bot has access to. |
Empty data from GET .../members with no error | The Server Members Intent is missing on the bot install | Re-invite the bot; new installs have the intent on. |
| Webhook username rejected | The name is empty, over 80 characters, or contains "clyde" or "discord" | Use 1 to 80 characters without those words. |
A publishNow: true post that Discord rejects returns 207 with post.status: "failed" and Discord's message in platforms[].errorMessage:
{
"message": "Post created but publishing failed",
"error": "All platforms failed",
"post": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"status": "failed",
"platforms": [
{
"platform": "discord",
"status": "failed",
"errorMessage": "Missing Access"
}
]
}
}207 is a 2xx status, so fetch(...).ok is true. Branch on the status code and on post.status.
"Missing Access" means the bot cannot see channelId. Check it with List Discord channels and grant the bot access to the channel.
Error handling covers the envelope.
Rate limits. Discord's own rate limits are handled for you. Zernio backs off on 429 and honours X-RateLimit-Reset-After, so you never write retry logic (rate limits).