# group-admin:群创建、成员写入与管理 > 返回入口:[DingTalk Chat Skill](../../SKILL.md) 用于建群、修改群资料、成员增删、邀请卡片分享、群主和管理员、禁言、公告、群设置、 入群审批、群身份、退出、解散和升级外部群。只读群发现、成员读取和邀请链接使用 [group-discovery.md](group-discovery.md)。 ## 安全与目标 - 群目标统一使用当前 profile 下真实 `openConversationId`;支持自然群名的 Shortcut 由 CLI 唯一解析,多候选时停止。 - 解散群、踢人、转让群主、禁言、管理员和外部群升级都是高影响操作;以最终 Runtime gate 和精确 leaf Schema 为准确认对象、动作与影响。 - 所有自然成员和群主必须先完成唯一解析并按稳定 ID 去重,再开始任何写入;不得边解析边 产生部分副作用。 - 群公告会触达成员;`notice edit` 是整体替换,必须有完整新正文。 ## 建群与基础资料 基础建群使用 `dws chat +chat-create`。已知成员 ID 传 `--users`, 姓名/花名传 `--member-query`;群主默认当前用户,也可传 `--owner-open-dingtalk-id` 或 `--owner-query`。任一自然身份未唯一解析时,创建前整体停止。 ```bash dws chat +chat-create --name "项目冲刺群" --member-query "测试用户甲,测试用户乙" --format json dws chat +chat-create --name "合作群" --member-query "测试用户甲" \ --owner-query "测试用户乙" --type EXTERNAL --format json ``` 修改群名称优先使用接受群名或稳定 ID 的 `+chat-update`: ```bash dws chat +chat-update --group <群名或openConversationId> --name "新群名" --format json ``` 群头像和管理员级群开关使用 `+chat-update-icon`、`+chat-update-settings`;只有 Shortcut 尚未发布真实必需字段时才评估原子 `group rename/update-icon/update-settings`。 原子 `chat group create` 只用于 `+chat-create` 未发布的真实底层字段,并先读取精确 leaf Schema。普通内部/外部群、话题群和显式群主已经由 `+chat-create` 覆盖,不回流到手工 `aisearch → group create` 链路。 ## 成员与机器人写入 | 动作 | 入口与关键参数 | |---|---| | 添加成员 | `group members add --id --users ` | | 移除成员 | `group members remove --id --users ` | | 添加已知机器人 | `+chat-add-bot` 或精确原子 `group members add-bot` | | 查看群内机器人 | `+chat-bots --group <群名或cid>` | | 移除群内机器人 | `+chat-remove-bot` 或精确原子 `group members remove-bot` | 普通成员增删的 `--users` 只接受组织 `userId`,必须来自真实人员解析结果;不得把 `+chat-members-list` / `+chat-members-get` 返回的 `openDingTalkId` 直接传入。添加已知机器人 使用 `robotCode`;移除机器人使用当前群 `+chat-bots` 返回的真实 `openBotId`,两者不能互换。 缺少 `openBotId` 时在同一流程中先执行 `+chat-bots`,不必额外读取群发现 reference。只有需要 搜索未知机器人、区分 `bot search` / `bot find`、机器人发送或撤回、Webhook 时,才读取 [chat-bot.md](chat-bot.md)。 ## 邀请卡片、群主、管理员与禁言 邀请链接只读走 `+chat-invite-url`。实际分享邀请卡片使用 `group share-invite`:`--source` 是被分享群,接收端在 `--target` 会话和 `--receiver` 单聊用户之间二选一。 ```bash dws chat group share-invite --source --target --format json dws chat group share-invite --source --receiver --format json ``` | 动作 | 入口与关键参数 | |---|---| | 转让群主 | `+chat-transfer-owner --group --new-owner <稳定ID>` | | 设置/取消管理员 | `group set-admin --group --users [--off]` | | 全员禁言/解除 | `group-mute --group [--off]` | | 成员禁言/解除 | `+chat-mute-member` 或 `group-mute-member` | | 查询禁言配置 | `group get-mute-config --group ` | 原子 `group-mute-member --mute-time` 单位为毫秒。不要用展示名称代替稳定用户 ID,也不要 在未确认影响时执行转让、踢人或禁言。 ## 群设置与当前用户偏好 管理员级群开关使用 `+chat-update-settings` 或原子 `group update-settings`。常见 settingKey 包括 `authority`、`joinValidation`、`onlyAdminCanAtAll`、`searchable`、 `addFriendForbidden`、`onlyAdminCanDING`、`onlyAdminCanPinMsg` 和 `onlyAdminCanSendFile`、`groupEmailDisabled`、`groupLiveAuthority`、 `groupBillAuthority`;只修改用户明确要求的字段。 新成员历史消息可见范围使用 `group set-history --group --option <值>`;`option` 只取 精确 leaf Schema 发布值,不按自然语言猜枚举。 当前登录用户自己的置顶、免打扰、群昵称和群备注使用 `group user-settings query/set`, 不是管理员群开关。单个群昵称/备注优先 `group update-nick/update-alias`。 ```bash dws chat group user-settings query --groups , --format json dws chat group user-settings set \ --items '[{"openConversationId":"cid1","top":true,"mute":false}]' --format json ``` 批量设置只传本次要改的字段;空字符串清除昵称或备注,不补用户未要求的值。 ## 群公告 | 动作 | 原子入口 | |---|---| | 发布公告 | `group notice create --group --content <完整Markdown>` | | 修改公告 | `group notice edit --group --notice-id --content <完整Markdown>` | | 查询公告 | `group notice get/list` | 定时公告 `--run-at` 使用带时区时间;`notice list --scheduled` 查询待发布公告。分页时沿真实 `nextPageCursor` 继续。修改前必须取得完整替换正文,不把增量片段当整篇公告。 ## 入群审批与群身份 先用 `group list-join-validations` 取得真实 `record-id/applicant/inviter`,再执行 `group audit-join-validation` 或 `+chat-audit-join`。审批状态只使用精确 leaf Schema 发布值。 群身份使用 `group-role` / `+chat-role-*`: - `list/add/update/remove` 管理身份定义; - `set-user/remove-user/query-user` 管理成员身份; - `openRoleId` 必须来自真实身份列表。 覆盖或清除成员身份前确认用户、群和完整角色集合,不能用展示名称猜 `openRoleId`。 ## 退出、解散与外部群升级 - 当前用户退出群:`+chat-quit` 或精确原子 `group quit`。 - 解散群:`group dismiss`,不可逆。 - 普通群升级外部群:`group upgrade-to-external`,不可逆。 这些动作必须以最终 Runtime gate 为准,不把示例中的确认参数当固定事实。 ## 完成与错误 - 创建或更新后保留真实 `openConversationId` 和任务结果;只对查询结果真实返回的字段执行读回验证。 - 写接口成功但现有查询未返回目标设置时,报告真实写入回执和不可独立读回的边界;不用群名、 成员数等其他字段代替验证,也不猜未发布的读回命令。 - 任一自然目标零命中或多候选时,在写入前整体停止。 - 逐项写入保留 succeeded/failed/unknown ledger,不用重试抹掉失败项。 - 分享邀请时 `--target` 与 `--receiver` 只能二选一;接收对象不明确时先确认。 - 机器人进群失败时确认机器人身份和当前用户管理权限,不连续切换同义原子命令。