Skip to content

Message not modified · message.not_modified

Stable ID: message.not_modified · Evidence: source derived

The requested message content and reply markup are unchanged.

The response does not include the current message or establish the history of concurrent edits.

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: 400.

Exact description:

Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message

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

Illustrative methods: editMessageText, editMessageCaption, editMessageReplyMarkup.

  • The requested edit repeats the current content and markup.

Application decision: accept existing state if intended. Repeat request: unhelpful without change.

  • The application considers an already-applied desired state a successful outcome.

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: editMessageText.

{
"ok": false,
"error_code": 400,
"description": "Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message"
}
from errorgram import classify
response = {
"ok": False,
"error_code": 400,
"description": "Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message",
}
result = classify(response, method='editMessageText')
assert result.id == 'message.not_modified'
print(result.entry["summary"])
import { classify } from "errorgram";
const response = {
"ok": false,
"error_code": 400,
"description": "Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message"
};
const result = classify(response, { method: "editMessageText" });
if (result.status === "matched" && result.id === "message.not_modified") {
console.log(result.entry.summary);
}
Integration Type or ID
Python errorgram.MessageNotModified
aiogram errorgram.aiogram.MessageNotModified extends TelegramBadRequest
grammY EnrichedGrammyError with classification.id equal to message.not_modified

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-15.

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