Feishu Group Helper — 飞书群助手
v0.1.0管理Feishu群组信息,记录加入/离开事件,并通过名称查找和活跃群组确认向群组发送消息。
运行时依赖
安装命令
点击复制技能文档
feishu-group-helper 飞书群管理 skill。用于维护群信息、处理群事件、发送群消息。
触发条件 用户提到"飞书群管理"、"群信息"、"加入群"、"移出群" 用户要求"发消息到群里"或"发送群消息" 飞书事件:bot 被加入群、bot 被移出群(需升级)
核心功能
- 群信息维护
- 记录新群
- 更新群信息
- 发送群消息
- 查看群信息
事件监听(需升级) 需要的飞书权限 需要在飞书开放平台添加以下权限: im:chat.memberbot.created - 机器人被添加到群 im:chat.memberbot.deleted - 机器人被移出群 im:chat.members:bot_access - 已有的
事件类型 事件 说明 处理 im.chat.member_bot.created bot 被添加到群 自动调用 addGroup() im.chat.member_bot.deleted bot 被移出群 自动调用 removeGroup()
升级步骤 在飞书开放平台配置事件订阅 设置回调 URL(需要公网域名) 在 OpenClaw 中添加事件处理能力 更新本 skill 支持自动处理
飞书权限说明 当前已拥有权限 权限名称 说明 用途 im:chat 群聊管理 获取群信息 im:chat.members:bot_access 群成员列表 查看群成员 im:message:send_as_bot 发消息 发送群消息 im:message.group_msg 接收群消息 接收群消息
当前缺少权限(事件监听用) 权限名称 说明 如何获取 im:chat.memberbot.created 监听入群事件 在飞书开放平台申请 im:chat.memberbot.deleted 监听退群事件 在飞书开放平台申请
权限检查 在 OpenClaw 中检查权限: feishu_app_scopes()
权限申请引导 如需开启事件监听功能,请按以下步骤操作: 登录飞书开放平台 https://open.feishu.cn/ 进入应用 → 选择你的应用 添加权限 → 搜索并添加: im:chat.memberbot.created im:chat.memberbot.deleted 发布新版本 → 提交审批 配置事件订阅 → 设置回调 URL(需公网域名)
事件订阅配置(进阶) 配置回调 URL 后,飞书会 POST 事件到你的服务器: // 机器人被添加入群事件 { "schema": "2.0", "header": { "event_type": "im.chat.member_bot.created" }, "event": { "chat_id": "oc_xxx", "operator_id": "ou_xxx" } } // 机器人被移出群事件 { "schema": "2.0", "header": { "event_type": "im.chat.member_bot.deleted" }, "event": { "chat_id": "oc_xxx", "operator_id": "ou_xxx" } } 收到事件后调用: 入群:addGroup(chatId, name, memberCount) 退群:removeGroup(chatId)
工具使用 // 添加群 const { addGroup } = require('./scripts/groupManager.js'); addGroup('oc_xxx', '群名', 5); // 移除群 const { removeGroup } = require('./scripts/groupManager.js'); removeGroup('oc_xxx'); // 查找群 const { findGroupByName } = require('./scripts/groupManager.js'); findGroupByName('GoGoGo'); // 获取活跃群 const { getActiveGroups } = require('./scripts/groupManager.js'); getActiveGroups(); // 检查是否在群 const { isInGroup } = require('./scripts/groupManager.js'); isInGroup('oc_xxx'); // 查看所有群(含状态) const { listAllGroups } = require('./scripts/groupManager.js'); listAllGroups();