权限与授权
botmux 的权限回答两个问题:谁能跟 bot 说话(canTalk,对话权)和谁能改动会话状态(canOperate,操作权,如 /cd、/restart、/close、点卡片按钮)。授权手段有好几层,从「指定几个管理员」到「整群随便问」都有,本文把它们一次讲清。
授权分层
补充:
- 正常 onboarding 创建的 bot 都会把 owner 写进
allowedUsers,因此默认是限制态 bot,只有名单内的人能用。 - 团队信任腿(同团队 peer bot / team bot / 平台团队成员)只授予对话权,不在本文展开,见 角色与团队。
- 字段级说明见 bots.json 配置 · 权限与授权。
常用操作对照
只有 owner / 管理员(allowedUsers)能执行 /grant、/revoke、oncall 开关与 /card、/cot、/mention-mode 等管理命令;访客只能对话。
入群不等于授权
把 bot 拉进一个群,本身不会写任何授权名单。 bot 收到「被加入群聊」事件后不会自动放开该群的对话权:
- 限制态 bot(配过 owner / 白名单,onboarding 出来的 bot 都属此类):非名单成员在群里 @ bot 发言会被拒绝,bot 自动给 owner 发一张授权申请卡,owner 一键批准后该成员才能用(批准后刚才那条消息还会自动重放,不用再发一遍)。
- 只有完全未配任何白名单的开放模式 bot 才是谁都能用(包括操作权),这是兜底状态,不是「拉群」带来的。
- 「进群自动开工」(
autoStartOnGroupJoin)也不是授权:它还有一道闸——群内必须至少有一名allowedUsers成员,bot 才会自动建会话。
想精确控制「谁能把 bot 拉进群」属于飞书平台侧能力(应用可用范围 / 群添加权限),见文末 FAQ。
黑名单 blockedUsers
黑名单是** sender 维度的全局否决**,在 Bot 配置页(Dashboard「Bot 配置」)维护,也可在群组成员弹层里快捷拉黑:
- 群聊、私聊都生效;一个人被拉黑后,在任何 oncall 群、整群放开群、团队群里都被否决。
- 否决腿排在 oncall、整群放开、访客授权、团队信任等所有放行腿之前,不存在「换个群又能用」。
- 被拉黑的人发言被拦时不会再给 owner 发授权申请卡,避免持续骚扰审批人。
- owner / 管理员不可被拉黑,写入口直接拒绝(防自锁)。
- 黑名单只管「对话权」;消息监听器(让 bot 按规则自动盯消息的功能)的匹配范围是独立配置,不受黑名单影响。
授权申请卡
限制态 bot 下,未授权者在群里明确 @ bot 而被对话闸挡住时,默认自动发一张申请卡给 owner(autoGrantRequestCards,默认开启;Bot 配置里可关,关闭后静默拦截)。
- 申请卡上可「授权本群对话」或「拒绝」,额度与有效期在卡上直接改。
- owner 主动发的
@bot /grant @某人卡片还多一个「全局授权对话」按钮(任意群生效)。 - 批准后触发本次申请的原始消息会自动重放进会话,申请人无需再 @ 一遍。
- 待审批期间有节流,不会被同一人的消息刷屏。
- 私聊(p2p)被拒默认是静默的:私聊里没有 owner 在场,把申请卡回给陌生人本人既无法操作又会暴露 owner,因此不发卡。
- 申请卡转投 owner 私聊(
grantRequestToOwnerDm,默认关闭):打开后,会话里没有任何管理员能点卡时,申请卡改发到主 owner 的私聊——包括群里查不到管理员(比如关掉了autoInviteOwnerOnGroupAdd、owner 不进群)和私聊被挡两种情况。申请人只收到一句不含 owner 身份的中性回执;owner 批准或拒绝后,结果会回告到原会话;额度用尽后对方再发消息会自动重新申请。群里有管理员、或查群成员失败时仍按原样在群里发卡。转投私聊另有 owner 维度的总量节流(每小时 20 张,发送失败不占名额);超出或发送失败时不发卡(群里已确认没有管理员,回落群内只会是一张没人能点的卡),下一条消息再重试。群聊路径每次都要查一次群成员(60 秒缓存),应用缺少群成员读取权限(im:chat.members:read)或群成员超过 2000 人(拿不到完整名单)时,会按原样在群里发卡。开关:Dashboard「Bot 配置 → 授权与额度」、bots.json或/botconfig set grantRequestToOwnerDm on。
常见疑问
- oncall 和裸
/grant什么区别? 都只给对话权、都不给操作权。区别:oncall 恒放行、恒不限额,同时把群绑定到一个工作目录(新话题跳过选仓);/grant只放开对话,不绑目录。 - 怎么只给某人 3 条额度?
@bot /grant @某人直接发卡,默认就是 3 条 / 1 小时;条数也可在命令后带数字或在卡上改。 - 每个新成员都要 owner 批吗? 不一定:整群放开(裸
/grant)或 oncall 后群里任何人即问即用;要保留门槛才走逐人授权与申请卡。
