Discord自动化操作技能Skill discord

此技能允许通过Otto机器人自动控制Discord,实现消息发送、频道管理、表情符号和贴纸上传、投票运行等多种功能,适用于团队协作、社区运营和自动化管理场景。关键词:Discord, 自动化, 机器人, 消息管理, 社区运营, Otto, Discord操作

DevOps 0 次安装 0 次浏览 更新于 3/24/2026

名称: discord 描述: “当需要通过Otto的discord工具控制Discord时使用:发送消息、添加反应、发布或上传贴纸、上传表情符号、运行投票、管理线程/置顶/搜索、创建/编辑/删除频道和类别、获取权限或成员/角色/频道信息、设置机器人状态/活动,或在Discord私信或频道中处理管理操作。” 元数据: {“otto”:{“emoji”:“🎮”,“requires”:{“config”:[“channels.discord”]}}}

Discord 操作

概述

使用discord管理消息、反应、线程、投票和管理。您可以通过discord.actions.*禁用操作组(默认启用,但角色/管理除外)。该工具使用为Otto配置的机器人令牌。

需要收集的输入

  • 对于反应:channelIdmessageId和一个emoji
  • 对于fetchMessage:guildIdchannelIdmessageId,或一个如https://discord.com/channels/<guildId>/<channelId>/<messageId>messageLink
  • 对于贴纸/投票/sendMessage:一个to目标(channel:<id>user:<id>)。可选的content文本。
  • 投票还需要一个question加上2–10个answers
  • 对于媒体:mediaUrl,使用file:///path表示本地文件或https://...表示远程文件。
  • 对于表情符号上传:guildIdnamemediaUrl,可选的roleIds(限制256KB,PNG/JPG/GIF)。
  • 对于贴纸上载:guildIdnamedescriptiontagsmediaUrl(限制512KB,PNG/APNG/Lottie JSON)。

消息上下文行包括discord message idchannel字段,您可以直接重用。

注意: sendMessage使用to: "channel:<id>"格式,不是channelId。其他操作如reactreadMessageseditMessage直接使用channelId注意: fetchMessage接受消息ID或完整链接如https://discord.com/channels/<guildId>/<channelId>/<messageId>

操作

对消息添加反应

{
  "action": "react",
  "channelId": "123",
  "messageId": "456",
  "emoji": "✅"
}

列出反应和用户

{
  "action": "reactions",
  "channelId": "123",
  "messageId": "456",
  "limit": 100
}

发送贴纸

{
  "action": "sticker",
  "to": "channel:123",
  "stickerIds": ["9876543210"],
  "content": "干得好!"
}
  • 每个消息最多3个贴纸ID。
  • to可以是user:<id>用于私信。

上传自定义表情符号

{
  "action": "emojiUpload",
  "guildId": "999",
  "name": "party_blob",
  "mediaUrl": "file:///tmp/party.png",
  "roleIds": ["222"]
}
  • 表情符号图像必须是PNG/JPG/GIF且<=256KB。
  • roleIds是可选的;省略以使表情符号对所有人生效。

上传贴纸

{
  "action": "stickerUpload",
  "guildId": "999",
  "name": "otto_wave",
  "description": "Otto挥手打招呼",
  "tags": "👋",
  "mediaUrl": "file:///tmp/wave.png"
}
  • 贴纸需要namedescriptiontags
  • 上传必须是PNG/APNG/Lottie JSON且<=512KB。

创建投票

{
  "action": "poll",
  "to": "channel:123",
  "question": "午餐吃什么?",
  "answers": ["披萨", "寿司", "沙拉"],
  "allowMultiselect": false,
  "durationHours": 24,
  "content": "现在投票"
}
  • durationHours默认为24;最大32天(768小时)。

检查机器人对频道的权限

{
  "action": "permissions",
  "channelId": "123"
}

可尝试的想法

  • 使用✅/⚠️反应标记状态更新。
  • 发布快速投票用于发布决策或会议时间。
  • 部署成功后发送庆祝贴纸。
  • 为发布时刻上传新表情符号/贴纸。
  • 在团队频道运行每周“优先级检查”投票。
  • 当用户请求完成时,私信发送贴纸作为确认。

操作门控

使用discord.actions.*禁用操作组:

  • reactions(反应 + 反应列表 + emojiList)
  • stickerspollspermissionsmessagesthreadspinssearch
  • emojiUploadsstickerUploads
  • memberInforoleInfochannelInfovoiceStatusevents
  • roles(角色添加/移除,默认false
  • channels(频道/类别创建/编辑/删除/移动,默认false
  • moderation(超时/踢出/封禁,默认false
  • presence(机器人状态/活动,默认false

读取最近消息

{
  "action": "readMessages",
  "channelId": "123",
  "limit": 20
}

获取单个消息

{
  "action": "fetchMessage",
  "guildId": "999",
  "channelId": "123",
  "messageId": "456"
}
{
  "action": "fetchMessage",
  "messageLink": "https://discord.com/channels/999/123/456"
}

发送/编辑/删除消息

{
  "action": "sendMessage",
  "to": "channel:123",
  "content": "Otto发来问候"
}

带媒体附件:

{
  "action": "sendMessage",
  "to": "channel:123",
  "content": "看看这个音频!",
  "mediaUrl": "file:///tmp/audio.mp3"
}
  • to使用格式channel:<id>user:<id>用于私信(不是channelId!)
  • mediaUrl支持本地文件(file:///path/to/file)和远程URL(https://...
  • 可选的replyTo带消息ID以回复特定消息
{
  "action": "editMessage",
  "channelId": "123",
  "messageId": "456",
  "content": "修正错别字"
}
{
  "action": "deleteMessage",
  "channelId": "123",
  "messageId": "456"
}

线程

{
  "action": "threadCreate",
  "channelId": "123",
  "name": "Bug整理",
  "messageId": "456"
}
{
  "action": "threadList",
  "guildId": "999"
}
{
  "action": "threadReply",
  "channelId": "777",
  "content": "在线程中回复"
}

置顶

{
  "action": "pinMessage",
  "channelId": "123",
  "messageId": "456"
}
{
  "action": "listPins",
  "channelId": "123"
}

搜索消息

{
  "action": "searchMessages",
  "guildId": "999",
  "content": "发布说明",
  "channelIds": ["123", "456"],
  "limit": 10
}

成员 + 角色信息

{
  "action": "memberInfo",
  "guildId": "999",
  "userId": "111"
}
{
  "action": "roleInfo",
  "guildId": "999"
}

列出可用自定义表情符号

{
  "action": "emojiList",
  "guildId": "999"
}

角色变更(默认禁用)

{
  "action": "roleAdd",
  "guildId": "999",
  "userId": "111",
  "roleId": "222"
}

频道信息

{
  "action": "channelInfo",
  "channelId": "123"
}
{
  "action": "channelList",
  "guildId": "999"
}

频道管理(默认禁用)

创建、编辑、删除和移动频道和类别。通过discord.actions.channels: true启用。

创建文本频道:

{
  "action": "channelCreate",
  "guildId": "999",
  "name": "general-chat",
  "type": 0,
  "parentId": "888",
  "topic": "一般讨论"
}
  • type:Discord频道类型整数(0 = 文本,2 = 语音,4 = 类别;支持其他值)
  • parentId:要嵌套的类别ID(可选)
  • topicpositionnsfw:可选

创建类别:

{
  "action": "categoryCreate",
  "guildId": "999",
  "name": "项目"
}

编辑频道:

{
  "action": "channelEdit",
  "channelId": "123",
  "name": "new-name",
  "topic": "更新主题"
}
  • 支持nametopicpositionparentId(null以从类别移除)、nsfwrateLimitPerUser

移动频道:

{
  "action": "channelMove",
  "guildId": "999",
  "channelId": "123",
  "parentId": "888",
  "position": 2
}
  • parentId:目标类别(null以移到顶级)

删除频道:

{
  "action": "channelDelete",
  "channelId": "123"
}

编辑/删除类别:

{
  "action": "categoryEdit",
  "categoryId": "888",
  "name": "重命名类别"
}
{
  "action": "categoryDelete",
  "categoryId": "888"
}

语音状态

{
  "action": "voiceStatus",
  "guildId": "999",
  "userId": "111"
}

计划事件

{
  "action": "eventList",
  "guildId": "999"
}

管理(默认禁用)

{
  "action": "timeout",
  "guildId": "999",
  "userId": "111",
  "durationMinutes": 10
}

机器人状态/活动(默认禁用)

设置机器人在线状态和活动。通过discord.actions.presence: true启用。

Discord机器人只能设置活动中的namestatetypeurl。其他活动字段(details、emoji、assets)被网关接受但被Discord静默忽略。

字段如何根据活动类型渲染:

  • playing、streaming、listening、watching、competingactivityName显示在侧栏机器人名称下(例如,类型为“playing”且名称为“with fire”时显示“with fire”)。activityState显示在个人资料弹出窗口中。
  • customactivityName被忽略。仅activityState显示为侧栏中的状态文本。
  • streamingactivityUrl可能在客户端中显示或嵌入。

设置播放状态:

{
  "action": "setPresence",
  "activityType": "playing",
  "activityName": "with fire"
}

侧栏结果:“with fire”。弹出窗口显示:“Playing: with fire”

带状态(显示在弹出窗口):

{
  "action": "setPresence",
  "activityType": "playing",
  "activityName": "My Game",
  "activityState": "In the lobby"
}

侧栏结果:“My Game”。弹出窗口显示:“Playing: My Game (换行) In the lobby”。

设置流媒体(可选URL,可能不渲染):

{
  "action": "setPresence",
  "activityType": "streaming",
  "activityName": "Live coding",
  "activityUrl": "https://twitch.tv/example"
}

设置收听/观看:

{
  "action": "setPresence",
  "activityType": "listening",
  "activityName": "Spotify"
}
{
  "action": "setPresence",
  "activityType": "watching",
  "activityName": "the logs"
}

设置自定义状态(侧栏文本):

{
  "action": "setPresence",
  "activityType": "custom",
  "activityState": "享受"
}

侧栏结果:“享受”。注意:对于custom类型,activityName被忽略。

仅设置机器人状态(无活动/清除状态):

{
  "action": "setPresence",
  "status": "dnd"
}

参数:

  • activityTypeplayingstreaminglisteningwatchingcompetingcustom
  • activityName:对于非custom类型显示在侧栏的文本(custom时忽略)
  • activityUrl:用于streaming类型的Twitch或YouTube URL(可选;可能不渲染)
  • activityState:对于custom是状态文本;对于其他类型显示在个人资料弹出窗口
  • statusonline(默认)、dndidleinvisible

Discord 写作风格指南

保持对话性! Discord是聊天平台,不是文档。

该做

  • 简短、有力的消息(1-3句理想)
  • 多个快速回复 > 一大段文本
  • 使用表情符号表达语气/强调 🦞
  • 小写随意风格
  • 将信息分解成易于消化的小块
  • 匹配对话的能量

不该做

  • 不要使用Markdown表格(Discord将其渲染为丑陋的原始| text |
  • 不要用## 标题进行随意聊天(使用粗体或大写强调)
  • 避免多段落文章
  • 不要过度解释简单事情
  • 跳过“我很乐意帮助!”的废话

有效的格式

  • 粗体强调
  • 代码技术术语
  • 列表多项
  • 引用引用

  • <>包裹多个链接以抑制嵌入

示例转换

❌ 不好:

我很乐意帮助您!以下是版本策略的全面概述:

## 语义版本
Semver使用MAJOR.MINOR.PATCH格式...

## 日历版本
CalVer使用基于日期的版本如...

✅ 好:

版本选项:semver(1.2.3)、calver(2026.01.04)或yolo(永远`latest`)。哪种适合您的发布节奏?