ban_member
Remove a user from a Discord server to enforce moderation policies. Specify user ID, optional server ID, message deletion timeframe, and reason for the ban.
Instructions
Ban a user from the server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| server_id | No | ||
| delete_message_seconds | No | ||
| reason | No |
Implementation Reference
- The handler function that executes the ban_member tool: fetches guild and user, bans the user with optional reason and message deletion, returns confirmation message.async def handle_ban_member(discord_client, arguments: Dict[str, Any]) -> List[TextContent]: """Ban a member from the server""" guild = await discord_client.fetch_guild(int(arguments["server_id"])) user = await discord_client.fetch_user(int(arguments["user_id"])) kwargs = { "reason": arguments.get("reason", "Banned via MCP") } if "delete_message_days" in arguments: kwargs["delete_message_days"] = min(arguments["delete_message_days"], 7) elif "delete_message_seconds" in arguments: kwargs["delete_message_seconds"] = arguments["delete_message_seconds"] await guild.ban(user, **kwargs) return [TextContent( type="text", text=f"Banned user {user.name} from {guild.name}\nReason: {kwargs['reason']}" )]
- The Tool definition including name, description, and inputSchema for the ban_member tool, which registers it with the MCP server.name="ban_member", description="Ban a member from the server with options", inputSchema={ "type": "object", "properties": { "server_id": {"type": "string", "description": "Server ID"}, "user_id": {"type": "string", "description": "User ID to ban"}, "reason": {"type": "string", "description": "Reason for ban"}, "delete_message_days": {"type": "number", "description": "Days of messages to delete (0-7)"}, "delete_message_seconds": {"type": "number", "description": "Seconds of messages to delete"} }, "required": ["server_id", "user_id"] } ),
- src/discord_mcp/integrated_server.py:1005-1019 (registration)The dispatch logic in call_tool that registers and routes 'ban_member' calls to AdvancedToolHandlers.handle_ban_member.advanced_tool_names = [ "edit_server_settings", "create_server_template", "create_channel_category", "create_voice_channel", "create_stage_channel", "create_forum_channel", "create_announcement_channel", "edit_channel", "set_channel_permissions", "create_role", "edit_role", "delete_role", "create_role_hierarchy", "create_emoji", "create_webhook", "send_webhook_message", "ban_member", "kick_member", "timeout_member", "bulk_delete_messages", "create_scheduled_event", "create_invite", "create_thread", "create_automod_rule" ] if name in advanced_tool_names: handler_method = f"handle_{name}" if hasattr(AdvancedToolHandlers, handler_method): return await getattr(AdvancedToolHandlers, handler_method)(discord_client, arguments)