npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

koishi-plugin-aaqqbot

v0.2.7

Published

配合 AllianceAuth 插件 aa-qqbot,用 QQ 机器人管理联盟 QQ 群成员:审批入群、定时巡检、提醒与移出、同步群名片

Readme

koishi-plugin-aaqqbot

npm

用 QQ 机器人管理 EVE 联盟的 QQ 群:只有 AllianceAuth(AA)认可的人才能留在对应的群里。

这是一个 Koishi 插件,需要配合 AA 端插件 aa-qqbot 使用。

  • 审批入群申请:申请人在「验证信息」里填 AA 上显示的验证码,机器人问 AA,合格就同意。
  • 定时巡检:每隔几小时把每个群的完整名单交给 AA,找出不合格的人。
  • 提醒:每天定时在群里 @ 不合格的人,并在他们的群名片前加标记(例如「【SPY】张三」)。
  • 移出:收到带截止时间的提醒后,宽限期(默认 48 小时)过了还不合格,移出群(不拉黑,补好绑定可以重新申请)。
  • 离开联盟的人快速处理:AA 判为「没有成员资格」或「账号已停用」的人,机器人一发现就在群里 @ 他,enforce 群里 2 小时后移出(可改),不等每日提醒,也不等巡检。
  • 同步群名片:按 AA 算好的名片自动改,例如 [IGC] Kaela Voss - 凯拉(群主、管理员也改;机器人改不了的在运维群列出来)。
  • 快速反应:每分钟向 AA 拉取一次变化(解绑、退组、账号停用……),相关的人立即复查。

目录

  1. 它是怎么工作的
  2. 安全保证
  3. 安装
  4. 配置
  5. 群模式与上线步骤
  6. 管理命令
  7. 常见问题
  8. 开发

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))"

把输出的那一长串:

  1. 交给 IT,写进 AA 的 local.py:QQBOT_API_KEYS = {"koishi-1": "那一长串"},然后重启 AA;
  2. 自己填进 Koishi 插件配置的「密钥」一栏,「密钥编号」填 koishi-1。

3.4 从 0.1.x 升级

0.2.0 起不再需要 aaqq.confirm 确认模式升级,改了配置下一轮就生效。升级前:

  1. 私聊机器人发 aaqq.status,看有没有「设为 xxx,等待确认」的群。
  2. 有的话,先在插件配置里把这些群改回已经确认过的模式(状态里显示的那个),保存。
  3. 再升级插件。升级后按需要把模式改回去——这时会按新规则执行:要开始处置的人多时先进入冷静期。

(忘了这一步也有兜底: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 | 合格的同意,不合格的拒绝 | ✓ | 宽限期过后 ✓ |

建议的上线步骤:

  1. 所有群先用 report 跑至少一周,看运维群里的报告,督促大家在 AA 上绑定 QQ。
  2. 在每个受管群的 QQ 设置里,把加群方式改成 「需要发送验证信息」,否则机器人收不到入群申请。
  3. 先挑一个小群改成 remind:在插件配置的「单独设置」里填群号和模式 → 保存。约 20 秒后的巡检就按 remind 执行,报告开头有「ℹ 模式已从 report(只报告)改为 remind(提醒,不踢)」。已知的不合格成员比较多(超过阈值)时,会先冷静 6 小时(这期间名片照常加标记,但不 @、不移出),之后还是这批人就自动开始提醒。
  4. 提醒跑几天没有问题,再按同样的方法改成 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