koishi-plugin-aaqqbot
v0.2.7
Published
配合 AllianceAuth 插件 aa-qqbot,用 QQ 机器人管理联盟 QQ 群成员:审批入群、定时巡检、提醒与移出、同步群名片
Maintainers
Readme
koishi-plugin-aaqqbot
用 QQ 机器人管理 EVE 联盟的 QQ 群:只有 AllianceAuth(AA)认可的人才能留在对应的群里。
这是一个 Koishi 插件,需要配合 AA 端插件 aa-qqbot 使用。
- 审批入群申请:申请人在「验证信息」里填 AA 上显示的验证码,机器人问 AA,合格就同意。
- 定时巡检:每隔几小时把每个群的完整名单交给 AA,找出不合格的人。
- 提醒:每天定时在群里 @ 不合格的人,并在他们的群名片前加标记(例如「【SPY】张三」)。
- 移出:收到带截止时间的提醒后,宽限期(默认 48 小时)过了还不合格,移出群(不拉黑,补好绑定可以重新申请)。
- 离开联盟的人快速处理:AA 判为「没有成员资格」或「账号已停用」的人,机器人一发现就在群里 @ 他,enforce 群里 2 小时后移出(可改),不等每日提醒,也不等巡检。
- 同步群名片:按 AA 算好的名片自动改,例如
[IGC] Kaela Voss - 凯拉(群主、管理员也改;机器人改不了的在运维群列出来)。 - 快速反应:每分钟向 AA 拉取一次变化(解绑、退组、账号停用……),相关的人立即复查。
目录
1. 它是怎么工作的
AllianceAuth(aa-qqbot) Koishi(本插件)+ LLBot
────────────────────── ─────────────────────────
成员在「服务」页绑定 QQ 入群申请 ──► 问 AA ──► 同意 / 拒绝 / 留给管理员
QQ 管理员在前台配置受管群 ◄── 签名请求 ── 巡检(每 6 小时)──► 完整名单 ──► 判定
回答:合格 / 不合格 / 需人工 HTTPS 变化(每 60 秒)──► 相关的人 ──► 复查
算好每个人的群名片 提醒、加标记、移出、改名片- 只有机器人主动连 AA,AA 不需要能连到机器人(机器人可以在家里的电脑上)。
- 管哪些群由 AA 决定:QQ 管理员在 AA 前台添加的群才归机器人管,其他群机器人一概不碰。
- 踢不踢人由机器人这边决定:真正移出成员的开关只在 Koishi 里,AA 前台再怎么改也打不开。
2. 安全保证
这些规则都有自动化测试覆盖:
- 拿不到明确答案就什么都不做:AA 连不上、超时、返回网页、返回 3xx/4xx/5xx、内容格式不对,一律当作「无法判断」,不拒绝、不提醒、不移出。AA 连不上时只在运维群报警一次,恢复后再通知一次。
- 「需要人工处理」永不处置:例如同一个 QQ 被两个 AA 账号认领(冲突),只报告,由 QQ 管理员在 AA 上处理。
- 永不移出的人:群主、管理员、QQ 官方机器人、机器人自己、白名单。其中 QQ 官方机器人、机器人自己、白名单永不提醒、永不加标记;群主、管理员不合格时(默认)也加【SPY】标记、每日单独 @ 提醒(不写截止时间),但永远不会被移出——不想这样可以在设置里关掉「不合格的群主/管理员也加标记并提醒」,或者把某个人加进白名单(勾了「不在本群提醒」的群除外:那里不发提醒,只加标记,见
DECISIONS.md第 68 条)。加标记和移出前都会实时再查一次对方的身份;白名单里的人身上万一留着标记,会自动撤掉。群主、管理员 AA 合格时名片也会按 AA 改(机器人是群主或管理员都能改;万一 QQ 不让改,会在运维群列出来一次请他们自己改)。 - 先提醒、后移出:截止时间从第一次成功 @ 提醒时开始算,移出前 36 小时内一定成功提醒过这个人;提醒没发出去就不会被移出。移出前还会再问一次 AA。勾了「不在本群提醒」的群除外:那里借别的群的提醒时间,没有别的群提醒的人不提醒、默默计时,见
DECISIONS.md第 68 条。 - 离开联盟的人:AA 判为「没有成员资格」(
NO_ACCESS)或「账号已停用」(USER_INACTIVE)的普通成员,机器人一发现(AA 的变化通知、巡检、新人入群)就马上在群里 @ 他,夜里也一样;enforce 群里从 @ 成功开始算 2 小时,到点由定时器直接处理,不等巡检。移出前的复核和巡检完全一样:再问一次 AA、实时查身份、每小时上限、冷静期的计数、暂停。截止前 AA 改回合格就取消,不会移出。从离开联盟到被移出,主要等的是 AA 自己同步角色资料的时间(AA 的定时任务,本插件管不了)。注意:在联盟里换军团、中途待在 NPC 军团的人,AA 也会判成没有成员资格,2 小时内没换好同样会被移出(不拉黑,可以重新申请)。因为人太多进过冷静期、冷静期结束时一起放行的那一批,照旧按每日提醒 + 48 小时处理。勾了「不在本群提醒」的群除外:那里不 @,跟着别的群的 2 小时截止时间走,或者不发消息、2 小时后移出,见DECISIONS.md第 68 条。 - 冷静期:某个群要开始处置的不合格人数、或者到期要移出的人数太多(默认超过 5 人或群人数的 10%,取较小者,至少 1 人),很可能是 AA 被改错了——这一轮不提醒、不移出,只在运维群报警,这个群进入冷静期(默认 6 小时)。人数按时间窗口累计:最近 6 小时里已经开始处置、已经移出的人也算进去,所以分几次陆续变成不合格的一大批人,同样会进入冷静期。保证:任何一段 6 小时里,没经过冷静期就开始处置的人、没经过冷静期批准就被移出的人,都不超过阈值。冷静中不提醒、不移出、不拒绝申请,但名片照常改:不合格的加【SPY】标记,合格的按 AA 改,补好绑定的撤掉标记(AA 改回来后标记也会自动撤掉)。冷静中的完整巡检发现已经恢复正常(例如 AA 改回来了)就立即结束;到时间后的第一次巡检如果还是那批人就自动继续,变化很大就重新冷静。不需要人工确认(
aaqq.confirm只用来提前结束等待)。 - 限速:每个群每小时最多移出 10 人(离开联盟的快速移出也算在内;LLBot 响应超时、但人其实已经不在群里的,也算)。
- 改模式直接生效:把群改成 remind 或 enforce 后,保存配置后约 20 秒的那次巡检就按新模式执行;一下子要开始处置的人太多时先进入冷静期。降级立即生效,降到 report 会撤掉标记。
- 名单核对:每轮巡检都用 QQ 显示的群人数核对取到的名单(名单去重后要在「群人数」到「群人数 + 2」之间),对不上就不当作完整名单交给 AA,也不取消任何人的跟踪(AA 会用完整名单删掉不在名单里的老成员)。这个群的名单还没核对通过过(例如刚换到正式 AA),或者上次核对通过超过 6 天,「待验证」的人只报告、不处置——他们很可能是被漏掉的老成员。连续 72 小时核对不过会在运维群报警。
- 只报真正新的:报告里的「新发现不合格」只包括上一轮之后才出现的人;report 模式也会记住报过的人(只记录,不处置)。
- 紧急刹车:
aaqq.pause立即中止正在进行的巡检,暂停一切操作;停用插件或修改配置同样会立即中止。 - 不拉黑:移出时不勾选「拒绝再次申请」,误判了也能补救。
- 防注入:群名、名片、错误信息都按纯文本发送,里面的
<at type="all"/>之类不会变成真的 @全体成员。 - 消息不超长:每条 QQ 消息不超过 1500 字,太长的报告和命令回复分成几条发,带(1/N)序号。
- 名单分短发,被拒自动拆小重发:QQ 会把一长串「名字(QQ号)」当成广告拒收,所以机器人发的消息里名单每条最多 20 行、约 800 字(运维通知、命令回复;群里的 @ 提醒每条最多 20 人,移出公告每条最多 20 个名字)。万一还是被拒,自动对半拆开重发(运维通知的序号变成(3/4-1)(3/4-2)这样);只剩一行还被拒,才把名字换成「(名字含 QQ 不允许的内容,已隐藏)」。@ 提醒里单独一个人还被拒时,这个人算没提醒到,不会因此被移出。运维通知拆出来的消息也算在每小时 30 条的上限里;LLBot 响应超时的不重发。
- 消息之间隔 2 秒:机器人发的任意两条消息(不管发到哪个群还是私聊)之间至少隔 2 秒,上一条发完才发下一条。排队等着发的提醒和公告,真正发出前会再确认一次没有暂停。
AA 被改错时最坏会发生什么(默认设置,没人处理):不经过两次各至少 6 小时的冷静期,不会成批移出(任何 6 小时里没经过冷静期的最多是阈值那么多人,不管是一次来的还是分几次陆续来的)。
最坏是冷静期一开始全员就被加上【SPY】标记,冷静 6 小时后开始每天被 @,最早约 60 小时后开始移出,默认每 6 小时 10 人(巡检被频繁触发时最快每小时 10 人)。
例外是「离开联盟」:如果 AA 改错只影响不超过阈值的人,而且 AA 给的原因正好是「没有成员资格」或「账号已停用」,这些人约 2 小时后就会被移出(任何 6 小时里最多阈值那么多人);影响超过阈值时照样先进冷静期。
群主、管理员、白名单、机器人任何时候都不会被移出(群主、管理员不合格时会被加标记和提醒)。止损:发送 aaqq.pause,或把群改成 report(下一轮撤掉标记)。
阈值设得比较大时:阈值取「人数」和「比例 × 群人数」中较小的那个。例如 500 人的群用 breakerCount: 50、breakerPercent: 80 时阈值是 50:6 小时内要开始处置(或未经批准就要移出)的人超过 50 才会进入冷静期。配合「离开联盟 2 小时后移出」时,如果 AA 被改错、而且只影响不到 50 人(例如误把一个小军团移出联盟),这些人会在约 2 小时后被移出;影响超过 50 人时仍会进入冷静期。紧急情况随时发 aaqq.pause。
3. 安装
3.1 准备
| 需要 | 说明 |
|---|---|
| Koishi 4.18 及以上 | 推荐 Koishi Desktop |
| OneBot 机器人 | adapter-onebot 适配器 + LLBot 等 OneBot v11 实现 |
| adapter-onebot 的 responseTimeout ≥ 60000 | 单位是毫秒。设得太小(例如 600)时 LLBot 稍慢一点就会被当成失败,插件启动时会在运维群提醒 |
| 数据库插件 | 例如 database-sqlite(Koishi Desktop 默认已启用) |
| 机器人是每个受管群的管理员 | 审批申请、改名片、移出都需要管理员权限。群主和其他管理员的名片机器人也会改 |
| AA 上装好 aa-qqbot | 并由 IT 在 local.py 配置好 APPS_WITH_PUBLIC_VIEWS 和 QQBOT_API_KEYS,见 aa-qqbot 的 README |
3.2 安装插件
在 Koishi 控制台打开「插件市场」,搜索 aaqqbot,点「添加」,然后在「插件配置」里找到 aaqqbot 进行配置。
3.3 生成密钥(在你自己的电脑上)
密钥是机器人和 AA 之间的暗号,只能由你自己生成,不要发给任何人,不要贴进聊天记录。
在自己的电脑上打开终端,运行:
python3 -c "import secrets; print(secrets.token_urlsafe(48))"把输出的那一长串:
- 交给 IT,写进 AA 的
local.py:QQBOT_API_KEYS = {"koishi-1": "那一长串"},然后重启 AA; - 自己填进 Koishi 插件配置的「密钥」一栏,「密钥编号」填
koishi-1。
3.4 从 0.1.x 升级
0.2.0 起不再需要 aaqq.confirm 确认模式升级,改了配置下一轮就生效。升级前:
- 私聊机器人发
aaqq.status,看有没有「设为 xxx,等待确认」的群。 - 有的话,先在插件配置里把这些群改回已经确认过的模式(状态里显示的那个),保存。
- 再升级插件。升级后按需要把模式改回去——这时会按新规则执行:要开始处置的人多时先进入冷静期。
(忘了这一步也有兜底:0.2.1 起,这种群升级后的第一次巡检会把旧记录都当成「第一次处置」,人多时照样先冷静。)
4. 配置
| 分组 | 配置项 | 默认值 | 说明 |
|---|---|---|---|
| 连接 AA | AA 的网址 | — | 例如 https://auth.example.com。正式环境必须用 https |
| | 密钥编号 / 密钥 | — | 见 3.3 |
| | 超时 | 30 秒 | |
| | 绑定网址 | 空 | 写进拒绝理由和提醒里;留空时用「AA 网址 + /services/」 |
| 机器人与运维 | 机器人账号 | 空 | 只有一个 QQ 机器人时留空 |
| | 运维群号 | 空 | 汇总和报警发到这里。只放管理人员,不能是受管群 |
| | 运维名单 | 空 | 能用管理命令的 QQ |
| | 白名单 | 空 | 永远不会被提醒、加标记、移出的 QQ,名片也不改。每一条只填一个 QQ 号,写错的不生效(启动时和 aaqq.status 里会提示) |
| 群模式 | 默认模式 | report | AA 上新加的群用哪种模式 |
| | 单独设置 | 空 | 表格:群号 + 模式 + 「提醒不 @ 人」+「不在本群提醒」。改了以后下一轮巡检就生效。勾上「提醒不 @ 人」的群:所有提醒照常发、照样算提醒过(enforce 照常移出),只是名单写成名字、不 @ 人。勾上「不在本群提醒」的群(只在 remind / enforce 下起作用):群里不发任何提醒和移出公告(运维群照常有报告)。在别的受管群被提醒的人跟着那个群走:那个群的截止时间到了才从本群移出,那个群不移出他本群也不移出;别的群都不会提醒的人不提醒、默默计时,到期直接移出(名片照常加标记)。详见 DECISIONS.md 第 68 条 |
| 入群申请 | 自动拒绝 | 开 | 只在 remind / enforce 模式的群里生效 |
| | 拒绝理由 | {hint}。绑定地址:{url} | {hint} 是自动生成的原因 |
| | 邀请入群 | 和普通申请一样 | 也可以选「一律留给管理员」 |
| | 补处理积压的申请 | 开 | 插件启动、机器人重新上线、AA 恢复连接、解除暂停时,处理还挂着的申请,规则和实时申请一样(不合格的照样拒绝) |
| 巡检与群名片 | 巡检间隔 | 6 小时 | 插件启动后先巡检一次 |
| | 拉取变化间隔 | 60 秒 | |
| | 同步群名片 | 开 | 只在 remind / enforce 模式;群主、管理员也同步 |
| 宽限、提醒与标记 | 宽限期 | 48 小时 | enforce 模式下,从第一次带截止时间的提醒开始,多久后移出 |
| | 提醒时间 | 19:30 | 每天几点 @ 提醒(机器人电脑的本地时间) |
| | 提醒文字 | | remind 和 enforce 各一份,{list} 是被 @ 的人 |
| | 不合格的群主/管理员也加标记并提醒 | 开 | 他们永远不会被移出;提醒用下面单独的文字 |
| | 群主/管理员的提醒文字 | | 没有截止时间 |
| | 「离开联盟」类原因 | NO_ACCESS、USER_INACTIVE | AA 判成这些原因的人一发现就 @ 提醒,不等每日提醒 |
| | 「离开联盟」的宽限时间 | 2 小时 | enforce 模式下,从 @ 提醒成功开始算,到点就移出(不等巡检),1~48 |
| | 「离开联盟」的提醒文字 | | enforce 模式用;remind 模式用 remind 的提醒文字(不说移出) |
| | 名片加标记 / 标记文字 | 开 / 【SPY】 | |
| | 移出公告 / 公告文字 | 开 | 移出后在该群发一条公告 |
| 防误踢 | 阈值人数 / 比例 | 5 人 / 10% | 取较小者,至少为 1 |
| | 每小时最多移出 | 10 人 | 每个群 |
| | 冷静期 | 6 小时 | 要开始处置的人太多时,这个群先停止处置多久 |
5. 群模式与上线步骤
| 模式 | 审批申请 | 提醒、加标记、同步名片 | 移出 | |---|---|---|---| | off | 不管 | 不管 | 不管 | | report(默认) | 合格的同意,不合格的留给管理员 | ✗(只写进运维群报告;会记住报过的人,只报新出现的) | ✗ | | remind | 合格的同意,不合格的拒绝 | ✓ | ✗ | | enforce | 合格的同意,不合格的拒绝 | ✓ | 宽限期过后 ✓ |
建议的上线步骤:
- 所有群先用 report 跑至少一周,看运维群里的报告,督促大家在 AA 上绑定 QQ。
- 在每个受管群的 QQ 设置里,把加群方式改成 「需要发送验证信息」,否则机器人收不到入群申请。
- 先挑一个小群改成 remind:在插件配置的「单独设置」里填群号和模式 → 保存。约 20 秒后的巡检就按 remind 执行,报告开头有「ℹ 模式已从 report(只报告)改为 remind(提醒,不踢)」。已知的不合格成员比较多(超过阈值)时,会先冷静 6 小时(这期间名片照常加标记,但不 @、不移出),之后还是这批人就自动开始提醒。
- 提醒跑几天没有问题,再按同样的方法改成 enforce。
冷静期时间线示例(默认设置,enforce 群):
周一 12:00 巡检:AA 上某个组被误删,群里 30 人突然不合格(阈值 5)
→ ⏸ 冷静期开始,运维群报警;这 30 人名片加上【SPY】,但不 @、不移出
情况 A:15:00 有人把 AA 改回来 → AA 发 recheck_all,约 1 分钟后立即巡检:
人数已经正常 → ▶ 冷静期结束:已恢复正常,【SPY】自动撤掉,没有人被 @ 或移出
情况 B:没人处理
周一 18:00 巡检:还是这 30 人 → ▶ 冷静期结束,开始正常处置
周一 19:30 每日提醒:@ 这 30 人,截止时间周三 19:30(之后每天 19:30 再 @ 一次)
周四 00:00 巡检(截止后第一次):30 人同时到期 → 又超过阈值 → ⏸ 冷静期,不移出
周四 06:00 巡检:还是这 30 人 → ▶ 冷静期结束,移出 10 人(每小时上限);12:00、18:00 各再移出 10 人
任何时候发 aaqq.pause 都会立即停止一切;把群改成 report 会撤掉标记离开联盟的时间线示例(默认设置,enforce 群):
10:00 张三退出了联盟里的军团
AA 自己同步角色资料(AA 的定时任务,可能要几个小时)后,判张三「没有成员资格」,通知机器人
→ 1 分钟内:群里 @ 张三(「已不再具备本群成员资格,将在截止时间被移出」),名片加【SPY】,运维群 ⚡ 一行
→ 2 小时后:再问一次 AA、实时查身份,仍不合格就移出,运维群【离开联盟到期处理】汇报
这 2 小时里张三回到联盟(AA 改判合格)→ 取消,撤掉标记,不移出6. 管理命令
只能在运维群里或私聊机器人时使用,并且要同时满足:QQ 在「运维名单」里、Koishi 权限等级 ≥ 3。在其他群里发这些命令,机器人不会回应。
| 命令 | 作用 |
|---|---|
| aaqq.status | 查看状态:机器人、AA 连接、各群模式、冷静期、已记录的不合格人数 |
| aaqq.health | 检查与 AA 的连接和 AA 的配置,以及 adapter-onebot 的 responseTimeout |
| aaqq.patrol [群号] | 立即巡检(不填群号就巡检全部) |
| aaqq.confirm <群号> | 提前结束冷静等待(可选,平时不用):马上巡检,还是同一批人就继续,变化很大会重新冷静 |
| aaqq.check <QQ号> | 查询某个 QQ 在各群的判定 |
| aaqq.roster <群号> <人数> | 某个群的名单一直核对不过时用:用手机 QQ 看一眼这个群显示的人数(不要照抄巡检报告里的数字),填进来。马上巡检一次,名单是这个人数(最多多 2 人)就当作完整名单交给 AA,只放行这一次 |
| aaqq.pause | 紧急暂停一切操作 |
| aaqq.resume | 恢复 |
给运维加权限等级(两种方法任选一种):
- 在 Koishi 控制台的「数据库」页面打开
user表,把对应用户的authority改成 3。(表里还没有这个人时,先让他私聊机器人发一次aaqq.status,会提示「权限不足」,这时表里就有他了。) - 启用
admin插件后,由权限等级 ≥ 4 的人发送authorize 3 -u @某人。
7. 常见问题
| 运维群里看到 | 原因和解决办法 |
|---|---|
| 「AA 把请求转到了登录页」 | AA 的 local.py 缺少 APPS_WITH_PUBLIC_VIEWS += ["qqbot"],请 IT 追加(不要整行覆盖)后重启 AA |
| 「签名不对」(bad_signature) | Koishi 里的密钥和 AA 上的不一致,注意不要多复制空格 |
| 「时间相差太大」(stale_timestamp) | 打开机器人电脑的「自动设置日期与时间」 |
| 「密钥编号在 AA 上不存在」 | Koishi 里的密钥编号要和 QQBOT_API_KEYS 的键完全一样 |
| 「AA 没有配置机器人密钥」 | 请 IT 配置 QQBOT_API_KEYS |
| 「运维群同时是受管群」 | 换一个只有管理人员的群做运维群 |
| 「这个 Koishi 里有多个 OneBot 机器人」 | 在配置里填「机器人账号」 |
| 「⏸ 冷静期开始」 | 先核对 AA 上的设置(例如群的类型、要求的组、成员权限有没有被改错)。AA 改错了就改回来,下一次巡检会自动结束冷静;名单没问题就不用管,到时间后自动继续(等不及可以发 aaqq.confirm 群号);要马上停止一切,发 aaqq.pause |
| 「取群成员名单失败:LLBot 响应超时」 | 在 Koishi 控制台 → 插件配置 → adapter-onebot 把 responseTimeout 改成 60000(单位毫秒),保存 |
| 「群主/管理员的名片机器人改不了(请自己改成箭头后面的样子)」 | 机器人去改的时候 QQ 拒绝了(按 AA 同步名片、给不合格的群主/管理员加【SPY】标记都可能)。列出来的群主 / 管理员自己把名片改成箭头后面的样子。同一张名片只列一次、不再重试;AA 给的名片变了才会再试 |
| 「⚡ … 已不具备成员资格(…),已提醒,… 移出」 | AA 判这个人「没有成员资格」或「账号已停用」(多半是离开了联盟),机器人已经 @ 了他,到点会移出。是 AA 判错了就在 AA 上改好,到点前会再问一次 AA,合格就不移出;要马上停止,发 aaqq.pause |
| 「⚠ 名单可能不完整(名单 N 人,QQ 显示群里有 M 人)」 | LLBot 这次没取全名单(翻页时出错会少几页)。这一轮不交完整名单、不取消跟踪,下一轮自动再核对,一般不用管 |
| 「⚠ 这些群的名单已经连续 72 小时以上没能核对通过」 | 先用手机 QQ 看这个群显示几人,和报告里的「名单 N 人」比一比:名单确实是全的,就发 aaqq.roster 群号 手机上的人数 放行一次;不确定就先把这个群改回 report,再联系开发者 |
| 「待验证、先只报告 N 人」 | 这个群的名单还没核对通过,这些「待验证」的人可能是被漏掉的老成员,先不处置。名单核对通过后会自动照常处理 |
| 「(名字含 QQ 不允许的内容,已隐藏)」 | QQ 拒收了带这个名字的消息,机器人把名字隐藏后才发出去。原来的内容在 Koishi 日志里(搜「隐藏」)。可以看看这个人的群名片、AA 上的名字里有没有 QQ 不允许的词 |
| 消息开头的序号像(3/4-2)这样多了一段 | 那一条被 QQ 拒收了,机器人把它拆小重发。一般(3/4-1)(3/4-2)合起来就是原来的(3/4)。如果序号缺了一段(例如只有(3/4-1-1)(3/4-1-2),没有(3/4-2)),缺的那段没发出去(超过了每小时 30 条的上限,或者单独一行也被拒、又没有名字可以隐藏),完整内容在 Koishi 日志里(搜「没有发出」) |
| 「⏰ …(不在本群提醒):跟随别的群 a 人,没发消息、本群计时 b 人」 | 这个群勾了「不在本群提醒」,群里不发提醒。「跟随别的群」的人在别的受管群被提醒过,跟着那个群的截止时间走(那个群不移出他,这个群也不移出);后来才进这个群、那个群给的截止时间已经过了的,下一次巡检直接移出,这个群里没有任何消息。「本群计时」的人不在任何会提醒他的群里,在哪个群都收不到提醒,只有名片上的【SPY】,到期直接移出(这是所有者的决定)。「暂时判断不了」的人这一次什么都不定,下一轮再判断 |
| 「⚠ … 提醒没有发出去(N 人)…;QQ 拒收了这个群的提醒(拆到单独一个人也发不出去),剩下的没有再发」 | QQ 这次拒收了这个群的所有提醒(可能是机器人账号被风控,或者提醒文字里的链接被封)。机器人不再一批一批地重试,这些人都算没提醒到(不定截止时间,不会因此被移出)。在手机 QQ 上用机器人账号往这个群发一条消息试试;发不出去就先处理账号的问题 |
| 「⚠ 白名单里有 N 条写得不对,没有生效」 | 白名单每一条只能填一个 QQ 号(不能带名字、不能几个号写在一起)。在插件配置里改好,保存 |
8. 开发
npm install
npm test # 自动化测试(真实的 Koishi + 模拟的 AA 和 LLBot)
npm run typecheck
npm run build # 编译到 lib/接口契约见 aa-qqbot 仓库的 API.md;设计决定见本仓库的 DECISIONS.md。
发布:改动先通过 Pull Request 合并到 main,然后在 GitHub 的 Actions 页面运行 Publish to npm(只用 npm 受信任发布,不需要令牌,见 DECISIONS.md 第 36 条)。运行时勾选「只检查受信任发布」可以只确认 npm 那边设置好了,不会发布。
许可证
MIT
