delete_message
Remove a specific message from a chat by providing its chat ID and message ID.
Instructions
Delete a message from a chat.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chat_id | Yes | ||
| message_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | ||
| error | No |
Implementation Reference
- aiogram_mcp/tools/messaging.py:189-220 (handler)Registration guard and handler function for the 'delete_message' tool. Checks if tool is allowed, validates chat permission, calls ctx.bot.delete_message(), and logs via audit logger.
if allowed_tools is None or "delete_message" in allowed_tools: @mcp.tool async def delete_message(chat_id: int, message_id: int) -> OkResult: """Delete a message from a chat.""" if not ctx.is_chat_allowed(chat_id): result = OkResult(ok=False, error=f"Chat {chat_id} is not allowed.") if ctx.audit_logger: ctx.audit_logger.log( "delete_message", {"chat_id": chat_id, "message_id": message_id}, result.ok, result.error, ) return result try: if ctx.rate_limiter: await ctx.rate_limiter.acquire() await ctx.bot.delete_message(chat_id=chat_id, message_id=message_id) result = OkResult(ok=True) except (TelegramBadRequest, TelegramForbiddenError) as exc: result = OkResult(ok=False, error=str(exc)) if ctx.audit_logger: ctx.audit_logger.log( "delete_message", {"chat_id": chat_id, "message_id": message_id}, result.ok, result.error, ) return result - aiogram_mcp/tools/messaging.py:10-14 (schema)OkResult is the return type used by delete_message (imported from ..models)
from ..models import OkResult, ToolResponse from ..utils import normalize_parse_mode class SendMessageResult(ToolResponse): - aiogram_mcp/tools/messaging.py:189-220 (registration)The delete_message tool is registered via the @mcp.tool decorator inside register_messaging_tools(), conditional on the allowed_tools filter.
if allowed_tools is None or "delete_message" in allowed_tools: @mcp.tool async def delete_message(chat_id: int, message_id: int) -> OkResult: """Delete a message from a chat.""" if not ctx.is_chat_allowed(chat_id): result = OkResult(ok=False, error=f"Chat {chat_id} is not allowed.") if ctx.audit_logger: ctx.audit_logger.log( "delete_message", {"chat_id": chat_id, "message_id": message_id}, result.ok, result.error, ) return result try: if ctx.rate_limiter: await ctx.rate_limiter.acquire() await ctx.bot.delete_message(chat_id=chat_id, message_id=message_id) result = OkResult(ok=True) except (TelegramBadRequest, TelegramForbiddenError) as exc: result = OkResult(ok=False, error=str(exc)) if ctx.audit_logger: ctx.audit_logger.log( "delete_message", {"chat_id": chat_id, "message_id": message_id}, result.ok, result.error, ) return result - aiogram_mcp/permissions.py:42-47 (helper)Permission level assignment for delete_message: MODERATION level.
"delete_message": PermissionLevel.MODERATION, "pin_message": PermissionLevel.MODERATION, "ban_user": PermissionLevel.MODERATION, "unban_user": PermissionLevel.MODERATION, "set_chat_title": PermissionLevel.MODERATION, "set_chat_description": PermissionLevel.MODERATION,