Skip to content

Bot not member · bot.not_member

Stable ID: bot.not_member · Evidence: source derived

The bot lacks the chat membership required for this operation.

Membership requirements depend on the chat type, public access, and operation. This is separate from the explicit kicked response.

Every field in a rule must match. Alternative rules are joined with OR. Codes below are JSON response fields, not inferred HTTP statuses.

  • JSON error_code: 403.

Exact description:

Forbidden: bot is not a member of the group chat
  • JSON error_code: 403.

Exact description:

Forbidden: bot is not a member of the supergroup chat
  • JSON error_code: 403.

Exact description:

Forbidden: bot is not a member of the channel chat

See matching rules for parameter precedence and unknown or ambiguous results.

Illustrative methods: sendMessage, deleteMessage.

  • The bot has left an active group.
  • The bot is not a member of a supergroup or channel and the requested access requires membership.

Application decision: restore bot membership. Repeat request: after access change.

  • Add or rejoin the bot with the required access through an authorized chat administrator before resuming.

These are application choices. Errorgram does not retry, suppress the error, or change bot state.

This condition adds no extracted facts; result.facts is empty.

Synthetic examples derived from the cited source.

API method: sendMessage.

{
"ok": false,
"error_code": 403,
"description": "Forbidden: bot is not a member of the group chat"
}
from errorgram import classify
response = {
"ok": False,
"error_code": 403,
"description": "Forbidden: bot is not a member of the group chat",
}
result = classify(response, method='sendMessage')
assert result.id == 'bot.not_member'
print(result.entry["summary"])
import { classify } from "errorgram";
const response = {
"ok": false,
"error_code": 403,
"description": "Forbidden: bot is not a member of the group chat"
};
const result = classify(response, { method: "sendMessage" });
if (result.status === "matched" && result.id === "bot.not_member") {
console.log(result.entry.summary);
}
Integration Type or ID
Python errorgram.BotNotMember
aiogram errorgram.aiogram.BotNotMember extends TelegramForbiddenError
grammY EnrichedGrammyError with classification.id equal to bot.not_member

Enrichment is explicit and keeps framework catch compatibility. Follow the Python and aiogram guide or JavaScript, TypeScript, and grammY guide.

Source references identify the reviewed revision, not the first release that introduced this response.

Catalogue 0.1.0 · schema 1.0.0 · reviewed 2026-09-16.

Markdown · Condition JSON · Full catalogue and sources · JSON Schema