{
  "schemaVersion": "1.0",
  "item": {
    "slug": "telegram-bot",
    "name": "Telegram Bot Builder",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Sebastian-Buitrag0/telegram-bot",
    "canonicalUrl": "https://clawhub.ai/Sebastian-Buitrag0/telegram-bot",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/telegram-bot",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=telegram-bot",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/telegram-bot"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/telegram-bot",
    "agentPageUrl": "https://openagent3.xyz/skills/telegram-bot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/telegram-bot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/telegram-bot/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Telegram Bot Builder Skill",
        "body": "Build and manage Telegram bots directly from Clawdbot."
      },
      {
        "title": "Setup",
        "body": "Open Telegram and message @BotFather\nSend /newbot and follow the prompts to create your bot\nCopy the bot token (looks like 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)\nSet environment variable:\nexport TELEGRAM_BOT_TOKEN=\"your-bot-token\""
      },
      {
        "title": "API Base URL",
        "body": "All requests go to:\n\nhttps://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/METHOD_NAME"
      },
      {
        "title": "Bot Information",
        "body": "Get bot info\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMe\" | jq\n\nGet bot commands\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMyCommands\" | jq\n\nSet bot commands\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setMyCommands\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"commands\": [\n      {\"command\": \"start\", \"description\": \"Start the bot\"},\n      {\"command\": \"help\", \"description\": \"Show help message\"},\n      {\"command\": \"settings\", \"description\": \"Bot settings\"}\n    ]\n  }' | jq"
      },
      {
        "title": "Sending Messages",
        "body": "Send text message\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Hello from Clawdbot!\",\n    \"parse_mode\": \"HTML\"\n  }' | jq\n\nSend message with inline keyboard\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Choose an option:\",\n    \"reply_markup\": {\n      \"inline_keyboard\": [\n        [{\"text\": \"Option 1\", \"callback_data\": \"opt1\"}, {\"text\": \"Option 2\", \"callback_data\": \"opt2\"}],\n        [{\"text\": \"Visit Website\", \"url\": \"https://example.com\"}]\n      ]\n    }\n  }' | jq\n\nSend message with reply keyboard\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Choose from keyboard:\",\n    \"reply_markup\": {\n      \"keyboard\": [\n        [{\"text\": \"Button 1\"}, {\"text\": \"Button 2\"}],\n        [{\"text\": \"Send Location\", \"request_location\": true}]\n      ],\n      \"resize_keyboard\": true,\n      \"one_time_keyboard\": true\n    }\n  }' | jq\n\nSend photo\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendPhoto\" \\\n  -F \"chat_id=CHAT_ID\" \\\n  -F \"photo=@/path/to/image.jpg\" \\\n  -F \"caption=Photo caption here\" | jq\n\nSend photo by URL\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendPhoto\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"photo\": \"https://example.com/image.jpg\",\n    \"caption\": \"Image from URL\"\n  }' | jq\n\nSend document\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendDocument\" \\\n  -F \"chat_id=CHAT_ID\" \\\n  -F \"document=@/path/to/file.pdf\" \\\n  -F \"caption=Here is your document\" | jq\n\nSend location\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendLocation\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"latitude\": 40.7128,\n    \"longitude\": -74.0060\n  }' | jq"
      },
      {
        "title": "Getting Updates",
        "body": "Get updates (polling)\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates\" | jq\n\nGet updates with offset (mark as read)\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?offset=UPDATE_ID\" | jq\n\nGet updates with timeout (long polling)\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?timeout=30\" | jq"
      },
      {
        "title": "Webhooks",
        "body": "Set webhook\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"allowed_updates\": [\"message\", \"callback_query\"]\n  }' | jq\n\nGet webhook info\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getWebhookInfo\" | jq\n\nDelete webhook\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook\" | jq"
      },
      {
        "title": "Chat Management",
        "body": "Get chat info\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChat?chat_id=CHAT_ID\" | jq\n\nGet chat member count\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChatMemberCount?chat_id=CHAT_ID\" | jq\n\nGet chat administrators\n\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChatAdministrators?chat_id=CHAT_ID\" | jq\n\nBan user from chat\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/banChatMember\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"user_id\": USER_ID\n  }' | jq\n\nUnban user\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/unbanChatMember\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"user_id\": USER_ID,\n    \"only_if_banned\": true\n  }' | jq"
      },
      {
        "title": "Message Management",
        "body": "Edit message text\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/editMessageText\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID,\n    \"text\": \"Updated message text\"\n  }' | jq\n\nDelete message\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq\n\nPin message\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/pinChatMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq\n\nForward message\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/forwardMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"TARGET_CHAT_ID\",\n    \"from_chat_id\": \"SOURCE_CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq"
      },
      {
        "title": "Callback Queries",
        "body": "Answer callback query\n\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/answerCallbackQuery\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"callback_query_id\": \"CALLBACK_QUERY_ID\",\n    \"text\": \"Button clicked!\",\n    \"show_alert\": false\n  }' | jq"
      },
      {
        "title": "Notes",
        "body": "Chat ID: Can be positive (user) or negative (group/channel). Get it from updates or use @userinfobot\nParse modes: HTML, Markdown, MarkdownV2\nRate limits: ~30 messages/second to different chats, 1 message/second to same chat\nFile limits: Photos up to 10MB, documents up to 50MB\nBot permissions: Bots can't message users first - user must /start the bot"
      },
      {
        "title": "HTML Formatting",
        "body": "<b>bold</b>\n<i>italic</i>\n<u>underline</u>\n<s>strikethrough</s>\n<code>inline code</code>\n<pre>code block</pre>\n<a href=\"https://example.com\">link</a>\n<tg-spoiler>spoiler</tg-spoiler>"
      },
      {
        "title": "Simple echo bot (bash script)",
        "body": "#!/bin/bash\nOFFSET=0\nwhile true; do\n  UPDATES=$(curl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?offset=$OFFSET&timeout=30\")\n  \n  for UPDATE in $(echo \"$UPDATES\" | jq -c '.result[]'); do\n    UPDATE_ID=$(echo \"$UPDATE\" | jq '.update_id')\n    CHAT_ID=$(echo \"$UPDATE\" | jq '.message.chat.id')\n    TEXT=$(echo \"$UPDATE\" | jq -r '.message.text')\n    \n    if [ \"$TEXT\" != \"null\" ]; then\n      curl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n        -H \"Content-Type: application/json\" \\\n        -d \"{\\\"chat_id\\\": $CHAT_ID, \\\"text\\\": \\\"You said: $TEXT\\\"}\"\n    fi\n    \n    OFFSET=$((UPDATE_ID + 1))\n  done\ndone"
      },
      {
        "title": "Get your chat ID",
        "body": "# 1. Send a message to your bot\n# 2. Run this to see your chat ID:\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates\" | jq '.result[-1].message.chat.id'"
      },
      {
        "title": "Send to channel",
        "body": "# Use @channelname or channel ID (starts with -100)\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"@your_channel_name\",\n    \"text\": \"Channel announcement!\"\n  }' | jq"
      },
      {
        "title": "Useful Resources",
        "body": "Bot API Documentation\nBotFather Commands\nBot API Changelog"
      }
    ],
    "body": "Telegram Bot Builder Skill\n\nBuild and manage Telegram bots directly from Clawdbot.\n\nSetup\nOpen Telegram and message @BotFather\nSend /newbot and follow the prompts to create your bot\nCopy the bot token (looks like 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)\nSet environment variable:\nexport TELEGRAM_BOT_TOKEN=\"your-bot-token\"\n\nAPI Base URL\n\nAll requests go to:\n\nhttps://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/METHOD_NAME\n\nUsage\nBot Information\nGet bot info\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMe\" | jq\n\nGet bot commands\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMyCommands\" | jq\n\nSet bot commands\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setMyCommands\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"commands\": [\n      {\"command\": \"start\", \"description\": \"Start the bot\"},\n      {\"command\": \"help\", \"description\": \"Show help message\"},\n      {\"command\": \"settings\", \"description\": \"Bot settings\"}\n    ]\n  }' | jq\n\nSending Messages\nSend text message\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Hello from Clawdbot!\",\n    \"parse_mode\": \"HTML\"\n  }' | jq\n\nSend message with inline keyboard\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Choose an option:\",\n    \"reply_markup\": {\n      \"inline_keyboard\": [\n        [{\"text\": \"Option 1\", \"callback_data\": \"opt1\"}, {\"text\": \"Option 2\", \"callback_data\": \"opt2\"}],\n        [{\"text\": \"Visit Website\", \"url\": \"https://example.com\"}]\n      ]\n    }\n  }' | jq\n\nSend message with reply keyboard\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"text\": \"Choose from keyboard:\",\n    \"reply_markup\": {\n      \"keyboard\": [\n        [{\"text\": \"Button 1\"}, {\"text\": \"Button 2\"}],\n        [{\"text\": \"Send Location\", \"request_location\": true}]\n      ],\n      \"resize_keyboard\": true,\n      \"one_time_keyboard\": true\n    }\n  }' | jq\n\nSend photo\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendPhoto\" \\\n  -F \"chat_id=CHAT_ID\" \\\n  -F \"photo=@/path/to/image.jpg\" \\\n  -F \"caption=Photo caption here\" | jq\n\nSend photo by URL\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendPhoto\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"photo\": \"https://example.com/image.jpg\",\n    \"caption\": \"Image from URL\"\n  }' | jq\n\nSend document\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendDocument\" \\\n  -F \"chat_id=CHAT_ID\" \\\n  -F \"document=@/path/to/file.pdf\" \\\n  -F \"caption=Here is your document\" | jq\n\nSend location\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendLocation\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"latitude\": 40.7128,\n    \"longitude\": -74.0060\n  }' | jq\n\nGetting Updates\nGet updates (polling)\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates\" | jq\n\nGet updates with offset (mark as read)\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?offset=UPDATE_ID\" | jq\n\nGet updates with timeout (long polling)\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?timeout=30\" | jq\n\nWebhooks\nSet webhook\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"allowed_updates\": [\"message\", \"callback_query\"]\n  }' | jq\n\nGet webhook info\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getWebhookInfo\" | jq\n\nDelete webhook\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook\" | jq\n\nChat Management\nGet chat info\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChat?chat_id=CHAT_ID\" | jq\n\nGet chat member count\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChatMemberCount?chat_id=CHAT_ID\" | jq\n\nGet chat administrators\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getChatAdministrators?chat_id=CHAT_ID\" | jq\n\nBan user from chat\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/banChatMember\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"user_id\": USER_ID\n  }' | jq\n\nUnban user\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/unbanChatMember\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"user_id\": USER_ID,\n    \"only_if_banned\": true\n  }' | jq\n\nMessage Management\nEdit message text\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/editMessageText\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID,\n    \"text\": \"Updated message text\"\n  }' | jq\n\nDelete message\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq\n\nPin message\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/pinChatMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq\n\nForward message\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/forwardMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"TARGET_CHAT_ID\",\n    \"from_chat_id\": \"SOURCE_CHAT_ID\",\n    \"message_id\": MESSAGE_ID\n  }' | jq\n\nCallback Queries\nAnswer callback query\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/answerCallbackQuery\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"callback_query_id\": \"CALLBACK_QUERY_ID\",\n    \"text\": \"Button clicked!\",\n    \"show_alert\": false\n  }' | jq\n\nNotes\nChat ID: Can be positive (user) or negative (group/channel). Get it from updates or use @userinfobot\nParse modes: HTML, Markdown, MarkdownV2\nRate limits: ~30 messages/second to different chats, 1 message/second to same chat\nFile limits: Photos up to 10MB, documents up to 50MB\nBot permissions: Bots can't message users first - user must /start the bot\nHTML Formatting\n<b>bold</b>\n<i>italic</i>\n<u>underline</u>\n<s>strikethrough</s>\n<code>inline code</code>\n<pre>code block</pre>\n<a href=\"https://example.com\">link</a>\n<tg-spoiler>spoiler</tg-spoiler>\n\nExamples\nSimple echo bot (bash script)\n#!/bin/bash\nOFFSET=0\nwhile true; do\n  UPDATES=$(curl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?offset=$OFFSET&timeout=30\")\n  \n  for UPDATE in $(echo \"$UPDATES\" | jq -c '.result[]'); do\n    UPDATE_ID=$(echo \"$UPDATE\" | jq '.update_id')\n    CHAT_ID=$(echo \"$UPDATE\" | jq '.message.chat.id')\n    TEXT=$(echo \"$UPDATE\" | jq -r '.message.text')\n    \n    if [ \"$TEXT\" != \"null\" ]; then\n      curl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n        -H \"Content-Type: application/json\" \\\n        -d \"{\\\"chat_id\\\": $CHAT_ID, \\\"text\\\": \\\"You said: $TEXT\\\"}\"\n    fi\n    \n    OFFSET=$((UPDATE_ID + 1))\n  done\ndone\n\nGet your chat ID\n# 1. Send a message to your bot\n# 2. Run this to see your chat ID:\ncurl -s \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates\" | jq '.result[-1].message.chat.id'\n\nSend to channel\n# Use @channelname or channel ID (starts with -100)\ncurl -s -X POST \"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"chat_id\": \"@your_channel_name\",\n    \"text\": \"Channel announcement!\"\n  }' | jq\n\nUseful Resources\nBot API Documentation\nBotFather Commands\nBot API Changelog"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Sebastian-Buitrag0/telegram-bot",
    "publisherUrl": "https://clawhub.ai/Sebastian-Buitrag0/telegram-bot",
    "owner": "Sebastian-Buitrag0",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/telegram-bot",
    "downloadUrl": "https://openagent3.xyz/downloads/telegram-bot",
    "agentUrl": "https://openagent3.xyz/skills/telegram-bot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/telegram-bot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/telegram-bot/agent.md"
  }
}