{
  "schemaVersion": "1.0",
  "item": {
    "slug": "discord",
    "name": "Discord",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/steipete/discord",
    "canonicalUrl": "https://clawhub.ai/steipete/discord",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/discord",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discord",
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/discord"
    },
    "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/discord",
    "agentPageUrl": "https://openagent3.xyz/skills/discord/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord/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": "Overview",
        "body": "Use discord to manage messages, reactions, threads, polls, and moderation. You can disable groups via discord.actions.* (defaults to enabled, except roles/moderation). The tool uses the bot token configured for Clawdbot."
      },
      {
        "title": "Inputs to collect",
        "body": "For reactions: channelId, messageId, and an emoji.\nFor stickers/polls/sendMessage: a to target (channel:<id> or user:<id>). Optional content text.\nPolls also need a question plus 2–10 answers.\nFor media: mediaUrl with file:///path for local files or https://... for remote.\nFor emoji uploads: guildId, name, mediaUrl, optional roleIds (limit 256KB, PNG/JPG/GIF).\nFor sticker uploads: guildId, name, description, tags, mediaUrl (limit 512KB, PNG/APNG/Lottie JSON).\n\nMessage context lines include discord message id and channel fields you can reuse directly.\n\nNote: sendMessage uses to: \"channel:<id>\" format, not channelId. Other actions like react, readMessages, editMessage use channelId directly."
      },
      {
        "title": "React to a message",
        "body": "{\n  \"action\": \"react\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"emoji\": \"✅\"\n}"
      },
      {
        "title": "List reactions + users",
        "body": "{\n  \"action\": \"reactions\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"limit\": 100\n}"
      },
      {
        "title": "Send a sticker",
        "body": "{\n  \"action\": \"sticker\",\n  \"to\": \"channel:123\",\n  \"stickerIds\": [\"9876543210\"],\n  \"content\": \"Nice work!\"\n}\n\nUp to 3 sticker IDs per message.\nto can be user:<id> for DMs."
      },
      {
        "title": "Upload a custom emoji",
        "body": "{\n  \"action\": \"emojiUpload\",\n  \"guildId\": \"999\",\n  \"name\": \"party_blob\",\n  \"mediaUrl\": \"file:///tmp/party.png\",\n  \"roleIds\": [\"222\"]\n}\n\nEmoji images must be PNG/JPG/GIF and <= 256KB.\nroleIds is optional; omit to make the emoji available to everyone."
      },
      {
        "title": "Upload a sticker",
        "body": "{\n  \"action\": \"stickerUpload\",\n  \"guildId\": \"999\",\n  \"name\": \"clawdbot_wave\",\n  \"description\": \"Clawdbot waving hello\",\n  \"tags\": \"👋\",\n  \"mediaUrl\": \"file:///tmp/wave.png\"\n}\n\nStickers require name, description, and tags.\nUploads must be PNG/APNG/Lottie JSON and <= 512KB."
      },
      {
        "title": "Create a poll",
        "body": "{\n  \"action\": \"poll\",\n  \"to\": \"channel:123\",\n  \"question\": \"Lunch?\",\n  \"answers\": [\"Pizza\", \"Sushi\", \"Salad\"],\n  \"allowMultiselect\": false,\n  \"durationHours\": 24,\n  \"content\": \"Vote now\"\n}\n\ndurationHours defaults to 24; max 32 days (768 hours)."
      },
      {
        "title": "Check bot permissions for a channel",
        "body": "{\n  \"action\": \"permissions\",\n  \"channelId\": \"123\"\n}"
      },
      {
        "title": "Ideas to try",
        "body": "React with ✅/⚠️ to mark status updates.\nPost a quick poll for release decisions or meeting times.\nSend celebratory stickers after successful deploys.\nUpload new emojis/stickers for release moments.\nRun weekly “priority check” polls in team channels.\nDM stickers as acknowledgements when a user’s request is completed."
      },
      {
        "title": "Action gating",
        "body": "Use discord.actions.* to disable action groups:\n\nreactions (react + reactions list + emojiList)\nstickers, polls, permissions, messages, threads, pins, search\nemojiUploads, stickerUploads\nmemberInfo, roleInfo, channelInfo, voiceStatus, events\nroles (role add/remove, default false)\nmoderation (timeout/kick/ban, default false)"
      },
      {
        "title": "Read recent messages",
        "body": "{\n  \"action\": \"readMessages\",\n  \"channelId\": \"123\",\n  \"limit\": 20\n}"
      },
      {
        "title": "Send/edit/delete a message",
        "body": "{\n  \"action\": \"sendMessage\",\n  \"to\": \"channel:123\",\n  \"content\": \"Hello from Clawdbot\"\n}\n\nWith media attachment:\n\n{\n  \"action\": \"sendMessage\",\n  \"to\": \"channel:123\",\n  \"content\": \"Check out this audio!\",\n  \"mediaUrl\": \"file:///tmp/audio.mp3\"\n}\n\nto uses format channel:<id> or user:<id> for DMs (not channelId!)\nmediaUrl supports local files (file:///path/to/file) and remote URLs (https://...)\nOptional replyTo with a message ID to reply to a specific message\n\n{\n  \"action\": \"editMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"content\": \"Fixed typo\"\n}\n\n{\n  \"action\": \"deleteMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\"\n}"
      },
      {
        "title": "Threads",
        "body": "{\n  \"action\": \"threadCreate\",\n  \"channelId\": \"123\",\n  \"name\": \"Bug triage\",\n  \"messageId\": \"456\"\n}\n\n{\n  \"action\": \"threadList\",\n  \"guildId\": \"999\"\n}\n\n{\n  \"action\": \"threadReply\",\n  \"channelId\": \"777\",\n  \"content\": \"Replying in thread\"\n}"
      },
      {
        "title": "Pins",
        "body": "{\n  \"action\": \"pinMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\"\n}\n\n{\n  \"action\": \"listPins\",\n  \"channelId\": \"123\"\n}"
      },
      {
        "title": "Search messages",
        "body": "{\n  \"action\": \"searchMessages\",\n  \"guildId\": \"999\",\n  \"content\": \"release notes\",\n  \"channelIds\": [\"123\", \"456\"],\n  \"limit\": 10\n}"
      },
      {
        "title": "Member + role info",
        "body": "{\n  \"action\": \"memberInfo\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\"\n}\n\n{\n  \"action\": \"roleInfo\",\n  \"guildId\": \"999\"\n}"
      },
      {
        "title": "List available custom emojis",
        "body": "{\n  \"action\": \"emojiList\",\n  \"guildId\": \"999\"\n}"
      },
      {
        "title": "Role changes (disabled by default)",
        "body": "{\n  \"action\": \"roleAdd\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\",\n  \"roleId\": \"222\"\n}"
      },
      {
        "title": "Channel info",
        "body": "{\n  \"action\": \"channelInfo\",\n  \"channelId\": \"123\"\n}\n\n{\n  \"action\": \"channelList\",\n  \"guildId\": \"999\"\n}"
      },
      {
        "title": "Voice status",
        "body": "{\n  \"action\": \"voiceStatus\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\"\n}"
      },
      {
        "title": "Scheduled events",
        "body": "{\n  \"action\": \"eventList\",\n  \"guildId\": \"999\"\n}"
      },
      {
        "title": "Moderation (disabled by default)",
        "body": "{\n  \"action\": \"timeout\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\",\n  \"durationMinutes\": 10\n}"
      },
      {
        "title": "Discord Writing Style Guide",
        "body": "Keep it conversational! Discord is a chat platform, not documentation."
      },
      {
        "title": "Do",
        "body": "Short, punchy messages (1-3 sentences ideal)\nMultiple quick replies > one wall of text\nUse emoji for tone/emphasis 🦞\nLowercase casual style is fine\nBreak up info into digestible chunks\nMatch the energy of the conversation"
      },
      {
        "title": "Don't",
        "body": "No markdown tables (Discord renders them as ugly raw | text |)\nNo ## Headers for casual chat (use bold or CAPS for emphasis)\nAvoid multi-paragraph essays\nDon't over-explain simple things\nSkip the \"I'd be happy to help!\" fluff"
      },
      {
        "title": "Formatting that works",
        "body": "bold for emphasis\ncode for technical terms\nLists for multiple items\n\n\nquotes for referencing\n\n\nWrap multiple links in <> to suppress embeds"
      },
      {
        "title": "Example transformations",
        "body": "❌ Bad:\n\nI'd be happy to help with that! Here's a comprehensive overview of the versioning strategies available:\n\n## Semantic Versioning\nSemver uses MAJOR.MINOR.PATCH format where...\n\n## Calendar Versioning\nCalVer uses date-based versions like...\n\n✅ Good:\n\nversioning options: semver (1.2.3), calver (2026.01.04), or yolo (`latest` forever). what fits your release cadence?"
      }
    ],
    "body": "Discord Actions\nOverview\n\nUse discord to manage messages, reactions, threads, polls, and moderation. You can disable groups via discord.actions.* (defaults to enabled, except roles/moderation). The tool uses the bot token configured for Clawdbot.\n\nInputs to collect\nFor reactions: channelId, messageId, and an emoji.\nFor stickers/polls/sendMessage: a to target (channel:<id> or user:<id>). Optional content text.\nPolls also need a question plus 2–10 answers.\nFor media: mediaUrl with file:///path for local files or https://... for remote.\nFor emoji uploads: guildId, name, mediaUrl, optional roleIds (limit 256KB, PNG/JPG/GIF).\nFor sticker uploads: guildId, name, description, tags, mediaUrl (limit 512KB, PNG/APNG/Lottie JSON).\n\nMessage context lines include discord message id and channel fields you can reuse directly.\n\nNote: sendMessage uses to: \"channel:<id>\" format, not channelId. Other actions like react, readMessages, editMessage use channelId directly.\n\nActions\nReact to a message\n{\n  \"action\": \"react\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"emoji\": \"✅\"\n}\n\nList reactions + users\n{\n  \"action\": \"reactions\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"limit\": 100\n}\n\nSend a sticker\n{\n  \"action\": \"sticker\",\n  \"to\": \"channel:123\",\n  \"stickerIds\": [\"9876543210\"],\n  \"content\": \"Nice work!\"\n}\n\nUp to 3 sticker IDs per message.\nto can be user:<id> for DMs.\nUpload a custom emoji\n{\n  \"action\": \"emojiUpload\",\n  \"guildId\": \"999\",\n  \"name\": \"party_blob\",\n  \"mediaUrl\": \"file:///tmp/party.png\",\n  \"roleIds\": [\"222\"]\n}\n\nEmoji images must be PNG/JPG/GIF and <= 256KB.\nroleIds is optional; omit to make the emoji available to everyone.\nUpload a sticker\n{\n  \"action\": \"stickerUpload\",\n  \"guildId\": \"999\",\n  \"name\": \"clawdbot_wave\",\n  \"description\": \"Clawdbot waving hello\",\n  \"tags\": \"👋\",\n  \"mediaUrl\": \"file:///tmp/wave.png\"\n}\n\nStickers require name, description, and tags.\nUploads must be PNG/APNG/Lottie JSON and <= 512KB.\nCreate a poll\n{\n  \"action\": \"poll\",\n  \"to\": \"channel:123\",\n  \"question\": \"Lunch?\",\n  \"answers\": [\"Pizza\", \"Sushi\", \"Salad\"],\n  \"allowMultiselect\": false,\n  \"durationHours\": 24,\n  \"content\": \"Vote now\"\n}\n\ndurationHours defaults to 24; max 32 days (768 hours).\nCheck bot permissions for a channel\n{\n  \"action\": \"permissions\",\n  \"channelId\": \"123\"\n}\n\nIdeas to try\nReact with ✅/⚠️ to mark status updates.\nPost a quick poll for release decisions or meeting times.\nSend celebratory stickers after successful deploys.\nUpload new emojis/stickers for release moments.\nRun weekly “priority check” polls in team channels.\nDM stickers as acknowledgements when a user’s request is completed.\nAction gating\n\nUse discord.actions.* to disable action groups:\n\nreactions (react + reactions list + emojiList)\nstickers, polls, permissions, messages, threads, pins, search\nemojiUploads, stickerUploads\nmemberInfo, roleInfo, channelInfo, voiceStatus, events\nroles (role add/remove, default false)\nmoderation (timeout/kick/ban, default false)\nRead recent messages\n{\n  \"action\": \"readMessages\",\n  \"channelId\": \"123\",\n  \"limit\": 20\n}\n\nSend/edit/delete a message\n{\n  \"action\": \"sendMessage\",\n  \"to\": \"channel:123\",\n  \"content\": \"Hello from Clawdbot\"\n}\n\n\nWith media attachment:\n\n{\n  \"action\": \"sendMessage\",\n  \"to\": \"channel:123\",\n  \"content\": \"Check out this audio!\",\n  \"mediaUrl\": \"file:///tmp/audio.mp3\"\n}\n\nto uses format channel:<id> or user:<id> for DMs (not channelId!)\nmediaUrl supports local files (file:///path/to/file) and remote URLs (https://...)\nOptional replyTo with a message ID to reply to a specific message\n{\n  \"action\": \"editMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\",\n  \"content\": \"Fixed typo\"\n}\n\n{\n  \"action\": \"deleteMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\"\n}\n\nThreads\n{\n  \"action\": \"threadCreate\",\n  \"channelId\": \"123\",\n  \"name\": \"Bug triage\",\n  \"messageId\": \"456\"\n}\n\n{\n  \"action\": \"threadList\",\n  \"guildId\": \"999\"\n}\n\n{\n  \"action\": \"threadReply\",\n  \"channelId\": \"777\",\n  \"content\": \"Replying in thread\"\n}\n\nPins\n{\n  \"action\": \"pinMessage\",\n  \"channelId\": \"123\",\n  \"messageId\": \"456\"\n}\n\n{\n  \"action\": \"listPins\",\n  \"channelId\": \"123\"\n}\n\nSearch messages\n{\n  \"action\": \"searchMessages\",\n  \"guildId\": \"999\",\n  \"content\": \"release notes\",\n  \"channelIds\": [\"123\", \"456\"],\n  \"limit\": 10\n}\n\nMember + role info\n{\n  \"action\": \"memberInfo\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\"\n}\n\n{\n  \"action\": \"roleInfo\",\n  \"guildId\": \"999\"\n}\n\nList available custom emojis\n{\n  \"action\": \"emojiList\",\n  \"guildId\": \"999\"\n}\n\nRole changes (disabled by default)\n{\n  \"action\": \"roleAdd\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\",\n  \"roleId\": \"222\"\n}\n\nChannel info\n{\n  \"action\": \"channelInfo\",\n  \"channelId\": \"123\"\n}\n\n{\n  \"action\": \"channelList\",\n  \"guildId\": \"999\"\n}\n\nVoice status\n{\n  \"action\": \"voiceStatus\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\"\n}\n\nScheduled events\n{\n  \"action\": \"eventList\",\n  \"guildId\": \"999\"\n}\n\nModeration (disabled by default)\n{\n  \"action\": \"timeout\",\n  \"guildId\": \"999\",\n  \"userId\": \"111\",\n  \"durationMinutes\": 10\n}\n\nDiscord Writing Style Guide\n\nKeep it conversational! Discord is a chat platform, not documentation.\n\nDo\nShort, punchy messages (1-3 sentences ideal)\nMultiple quick replies > one wall of text\nUse emoji for tone/emphasis 🦞\nLowercase casual style is fine\nBreak up info into digestible chunks\nMatch the energy of the conversation\nDon't\nNo markdown tables (Discord renders them as ugly raw | text |)\nNo ## Headers for casual chat (use bold or CAPS for emphasis)\nAvoid multi-paragraph essays\nDon't over-explain simple things\nSkip the \"I'd be happy to help!\" fluff\nFormatting that works\nbold for emphasis\ncode for technical terms\nLists for multiple items\n\nquotes for referencing\n\nWrap multiple links in <> to suppress embeds\nExample transformations\n\n❌ Bad:\n\nI'd be happy to help with that! Here's a comprehensive overview of the versioning strategies available:\n\n## Semantic Versioning\nSemver uses MAJOR.MINOR.PATCH format where...\n\n## Calendar Versioning\nCalVer uses date-based versions like...\n\n\n✅ Good:\n\nversioning options: semver (1.2.3), calver (2026.01.04), or yolo (`latest` forever). what fits your release cadence?"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/steipete/discord",
    "publisherUrl": "https://clawhub.ai/steipete/discord",
    "owner": "steipete",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/discord",
    "downloadUrl": "https://openagent3.xyz/downloads/discord",
    "agentUrl": "https://openagent3.xyz/skills/discord/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord/agent.md"
  }
}