Skip to main content
Glama

telegram_send_image

Send images from your AI coding assistant to Telegram for sharing charts, visualizations, screenshots, and diagrams. Supports PNG, JPG, GIF, and WebP formats with optional captions.

Instructions

        发送图片到 Telegram

        ⚠️ 使用场景:
        - 生成了图表、可视化结果
        - 创建了截图、示意图
        - 需要用户查看图片内容
        - 图片格式:PNG, JPG, GIF, WebP 等

        参数:
        - image_path: 图片文件路径(相对于项目目录或绝对路径)
        - caption: 可选说明文字

        示例:
        telegram_send_image(
            image_path="output/chart.png",
            caption="性能测试结果图表"
        )
        

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
captionNo可选说明文字
image_pathYes图片文件路径

Implementation Reference

  • The handler function that executes the telegram_send_image tool: validates input, resolves image path relative to project, checks file existence, constructs caption, and sends the image to Telegram using the sendPhoto API endpoint.
    async def handle_telegram_send_image(session, arguments: dict) -> list[TextContent]:
        """Handle telegram_send_image tool"""
        image_path = arguments.get("image_path", "")
        caption = arguments.get("caption", "")
    
        if not image_path:
            return [TextContent(type="text", text="错误: image_path 参数不能为空")]
    
        # Resolve image path (relative to project or absolute)
        if not os.path.isabs(image_path):
            full_path = os.path.join(session.project_path, image_path)
        else:
            full_path = image_path
    
        # Check if file exists
        if not os.path.exists(full_path):
            return [TextContent(
                type="text",
                text=f"❌ 图片文件不存在: {image_path}"
            )]
    
        if not os.path.isfile(full_path):
            return [TextContent(
                type="text",
                text=f"❌ 不是文件(可能是目录): {image_path}"
            )]
    
        # Build caption
        if not caption:
            caption = f"🖼️ [{session.session_id}] {image_path}"
        else:
            caption = f"🖼️ [{session.session_id}] {caption}"
    
        # Update session
        session.update_activity()
    
        # Send image to Telegram using HTTP API
        try:
            import httpx
    
            url = f"https://api.telegram.org/bot{config.TELEGRAM_BOT_TOKEN}/sendPhoto"
    
            with open(full_path, 'rb') as f:
                files = {'photo': (os.path.basename(image_path), f, 'image/jpeg')}
                data = {
                    'chat_id': session.chat_id,
                    'caption': caption
                }
    
                async with httpx.AsyncClient() as client:
                    response = await client.post(url, files=files, data=data, timeout=30.0)
                    response.raise_for_status()
    
            return [TextContent(
                type="text",
                text=f"✅ 已发送图片到 Telegram (会话: {session.session_id}, 图片: {image_path})"
            )]
        except Exception as e:
            return [TextContent(
                type="text",
                text=f"❌ 发送图片失败: {str(e)}"
            )]
  • Registration of the telegram_send_image tool in the list_tools() decorator, including name, description, and input schema definition.
    Tool(
        name="telegram_send_image",
        description="""
        发送图片到 Telegram
    
        ⚠️ 使用场景:
        - 生成了图表、可视化结果
        - 创建了截图、示意图
        - 需要用户查看图片内容
        - 图片格式:PNG, JPG, GIF, WebP 等
    
        参数:
        - image_path: 图片文件路径(相对于项目目录或绝对路径)
        - caption: 可选说明文字
    
        示例:
        telegram_send_image(
            image_path="output/chart.png",
            caption="性能测试结果图表"
        )
        """,
        inputSchema={
            "type": "object",
            "properties": {
                "image_path": {
                    "type": "string",
                    "description": "图片文件路径"
                },
                "caption": {
                    "type": "string",
                    "description": "可选说明文字"
                }
            },
            "required": ["image_path"]
        }
    ),
  • Dispatch logic in the main @server.call_tool() function that routes calls to the telegram_send_image handler.
    elif name == "telegram_send_image":
        return await handle_telegram_send_image(session, arguments)
  • Input schema definition for the telegram_send_image tool, specifying required image_path and optional caption.
    inputSchema={
        "type": "object",
        "properties": {
            "image_path": {
                "type": "string",
                "description": "图片文件路径"
            },
            "caption": {
                "type": "string",
                "description": "可选说明文字"
            }
        },
        "required": ["image_path"]
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/batianVolyc/telegram-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server