{
  "id": "message.not_modified",
  "category": "message_state",
  "summary": "The requested message content and reply markup are unchanged.",
  "match_any": [
    {
      "error_code": 400,
      "description_exact": "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"
    }
  ],
  "scope": {
    "method_examples": [
      "editMessageText",
      "editMessageCaption",
      "editMessageReplyMarkup"
    ],
    "exhaustive": false
  },
  "possible_causes": [
    "The requested edit repeats the current content and markup."
  ],
  "diagnostic_limits": "The response does not include the current message or establish the history of concurrent edits.",
  "evidence": [
    {
      "source": "server-10.3",
      "path": "telegram-bot-api/Client.cpp",
      "lines": [
        106,
        113
      ],
      "note": "MESSAGE_NOT_MODIFIED is rewritten here; prefix and initial-case handling are at lines 165-205."
    }
  ],
  "example": {
    "method": "editMessageText",
    "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"
    }
  },
  "evidence_level": "source_derived",
  "guidance": {
    "action": "accept_existing_state_if_intended",
    "repeat_request": "unhelpful_without_change",
    "preconditions": [
      "The application considers an already-applied desired state a successful outcome."
    ]
  }
}
