@zhin.js/adapter-qq 1.0.52 → 1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @zhin.js/adapter-qq
2
2
 
3
+ ## 1.0.54
4
+
5
+ ### Patch Changes
6
+
7
+ - a3511a0: 各包内 Agent 技能说明已固定为随包发布的 `skills/*/SKILL.md`(替代已移除的运行时 `declareSkill`)。本批为 registry / 分发侧对齐的 **patch** 版本递增。
8
+
9
+ ## 1.0.53
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [bb6bfa8]
14
+ - Updated dependencies [bb6bfa8]
15
+ - zhin.js@1.0.52
16
+ - @zhin.js/logger@0.1.36
17
+
3
18
  ## 1.0.52
4
19
 
5
20
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EAKP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAM3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2MhC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EAGP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAM3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2MhC"}
package/lib/adapter.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * QQ 官方适配器
3
3
  */
4
- import { Adapter, createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS, } from "zhin.js";
4
+ import { Adapter, createGroupManagementTools, } from "zhin.js";
5
5
  import { QQBot } from "./bot.js";
6
6
  export class QQAdapter extends Adapter {
7
7
  constructor(plugin) {
@@ -46,11 +46,6 @@ export class QQAdapter extends Adapter {
46
46
  this.registerQQPlatformTools();
47
47
  const groupTools = createGroupManagementTools(this, this.name);
48
48
  groupTools.forEach((t) => this.addTool(t));
49
- this.declareSkill({
50
- description: 'QQ 官方机器人群管理:踢人、禁言、设管理员、改群名、查成员等。仅有昵称时请先 list_members 查 user_id 再操作。',
51
- keywords: GROUP_MANAGEMENT_SKILL_KEYWORDS,
52
- tags: GROUP_MANAGEMENT_SKILL_TAGS,
53
- });
54
49
  await super.start();
55
50
  }
56
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EAEP,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,GAE5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,MAAM,OAAO,SAAU,SAAQ,OAA4B;IACzD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,MAAiC;QACzC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,gEAAgE;IAEhE,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc,EAAE,QAAQ,GAAG,GAAG;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,OAAe;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAe;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,kEAAkE;IAElE,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAmC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC;YAChB,WAAW,EACT,qEAAqE;YACvE,QAAQ,EAAE,+BAA+B;YACzC,IAAI,EAAE,2BAA2B;SAClC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,WAAW;QACX,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;iBAC/C;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;SACF,CAAC,CAAC;QAEH,YAAY;QACZ,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,iBAAiB;YAC9B,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;iBACnD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;aAC9B;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;iBACnD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;aAC9B;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBAClD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;oBAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;iBACxD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;aACtC;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,aAAa;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACjF,CAAC;SACF,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,eAAe;YAC5B,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBAClD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBACrD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBACjD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;iBAClD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;aAClE;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,aAAa;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,eAAe;YAC5B,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBAClD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBACrD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBACjD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;iBAClD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;aAClE;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,aAAa;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,qBAAqB;YAClC,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;iBACtD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;aAChC;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,oBAAoB;YACjC,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;oBAClD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;iBAClD;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC;aACzC;YACD,SAAS,EAAE,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;gBAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC;CACF"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-qq",
3
- "version": "1.0.52",
3
+ "version": "1.0.54",
4
4
  "description": "Zhin.js adapter for QQ Official Bot",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -36,16 +36,20 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "typescript": "^5.3.0",
39
- "zhin.js": "1.0.51"
39
+ "zhin.js": "1.0.52"
40
40
  },
41
41
  "peerDependencies": {
42
- "@zhin.js/logger": "0.1.35",
43
- "zhin.js": "1.0.51"
42
+ "@zhin.js/logger": "0.1.36",
43
+ "zhin.js": "1.0.52"
44
44
  },
45
45
  "files": [
46
+ "src",
46
47
  "lib",
47
- "node",
48
+ "client",
49
+ "dist",
50
+ "skills",
48
51
  "README.md",
52
+ "node",
49
53
  "CHANGELOG.md"
50
54
  ],
51
55
  "publishConfig": {
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: qq
3
+ description: QQ 官方机器人群管理:踢人、禁言、设管理员、改群名、查成员等。仅有昵称时请先 list_members 查 user_id 再操作。
4
+ keywords:
5
+ - qq
6
+ - QQ
7
+ - adapter:qq
8
+ - 群管理
9
+ - list_members
10
+ tags:
11
+ - group
12
+ - management
13
+ tools: []
14
+ ---
15
+
16
+ ## 执行规则
17
+
18
+ - 使用 `qq_*` 工具;先 list_members。
package/src/adapter.ts ADDED
@@ -0,0 +1,269 @@
1
+ /**
2
+ * QQ 官方适配器
3
+ */
4
+ import {
5
+ Adapter,
6
+ Plugin,
7
+ createGroupManagementTools,
8
+ type IGroupManagement,
9
+ } from "zhin.js";
10
+ import { QQBot } from "./bot.js";
11
+ import type { QQBotConfig, ReceiverMode } from "./types.js";
12
+
13
+ export class QQAdapter extends Adapter<QQBot<ReceiverMode>> {
14
+ constructor(plugin: Plugin) {
15
+ super(plugin, "qq", []);
16
+ }
17
+
18
+ createBot(config: QQBotConfig<ReceiverMode>): QQBot<ReceiverMode> {
19
+ return new QQBot(this, config);
20
+ }
21
+
22
+ // ── IGroupManagement 标准群管方法 ──────────────────────────────────
23
+
24
+ async kickMember(botId: string, sceneId: string, userId: string) {
25
+ const bot = this.bots.get(botId);
26
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
27
+ return bot.removeGuildMember(sceneId, userId, false);
28
+ }
29
+
30
+ async muteMember(botId: string, sceneId: string, userId: string, duration = 600) {
31
+ const bot = this.bots.get(botId);
32
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
33
+ return bot.muteMembers(sceneId, [userId], duration);
34
+ }
35
+
36
+ async muteAll(botId: string, sceneId: string, enable = true) {
37
+ const bot = this.bots.get(botId);
38
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
39
+ return bot.muteAll(sceneId, enable ? 600 : 0);
40
+ }
41
+
42
+ async listMembers(botId: string, sceneId: string) {
43
+ const bot = this.bots.get(botId);
44
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
45
+ return bot.getGuildMembers(sceneId);
46
+ }
47
+
48
+ async getGroupInfo(botId: string, sceneId: string) {
49
+ const bot = this.bots.get(botId);
50
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
51
+ return bot.getGuildInfo(sceneId);
52
+ }
53
+
54
+ // ── 生命周期 ───────────────────────────────────────────────────────
55
+
56
+ async start(): Promise<void> {
57
+ this.registerQQPlatformTools();
58
+ const groupTools = createGroupManagementTools(this as unknown as IGroupManagement, this.name);
59
+ groupTools.forEach((t) => this.addTool(t));
60
+ await super.start();
61
+ }
62
+
63
+ /**
64
+ * 注册 QQ 官方平台特有工具(频道列表等)
65
+ */
66
+ private registerQQPlatformTools(): void {
67
+ // 获取频道列表工具
68
+ this.addTool({
69
+ name: 'qq_list_guilds',
70
+ description: '获取 QQ 频道列表',
71
+ parameters: {
72
+ type: 'object',
73
+ properties: {
74
+ bot: { type: 'string', description: 'Bot 名称' },
75
+ },
76
+ required: ['bot'],
77
+ },
78
+ platforms: ['qq'],
79
+ scopes: ['channel'],
80
+ permissionLevel: 'user',
81
+ execute: async (args) => {
82
+ const { bot: botId } = args;
83
+ const bot = this.bots.get(botId);
84
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
85
+ const guilds = await bot.getGuilds();
86
+ return { guilds, count: guilds.length };
87
+ },
88
+ });
89
+
90
+ // 获取子频道列表工具
91
+ this.addTool({
92
+ name: 'qq_list_channels',
93
+ description: '获取 QQ 频道下的子频道列表',
94
+ parameters: {
95
+ type: 'object',
96
+ properties: {
97
+ bot: { type: 'string', description: 'Bot 名称' },
98
+ guild_id: { type: 'string', description: '频道 ID' },
99
+ },
100
+ required: ['bot', 'guild_id'],
101
+ },
102
+ platforms: ['qq'],
103
+ scopes: ['channel'],
104
+ permissionLevel: 'user',
105
+ execute: async (args) => {
106
+ const { bot: botId, guild_id } = args;
107
+ const bot = this.bots.get(botId);
108
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
109
+ const channels = await bot.getChannels(guild_id);
110
+ return { channels, count: channels.length };
111
+ },
112
+ });
113
+
114
+ // 获取角色列表工具
115
+ this.addTool({
116
+ name: 'qq_list_roles',
117
+ description: '获取 QQ 频道角色列表',
118
+ parameters: {
119
+ type: 'object',
120
+ properties: {
121
+ bot: { type: 'string', description: 'Bot 名称' },
122
+ guild_id: { type: 'string', description: '频道 ID' },
123
+ },
124
+ required: ['bot', 'guild_id'],
125
+ },
126
+ platforms: ['qq'],
127
+ scopes: ['channel'],
128
+ permissionLevel: 'user',
129
+ execute: async (args) => {
130
+ const { bot: botId, guild_id } = args;
131
+ const bot = this.bots.get(botId);
132
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
133
+ const roles = await bot.getGuildRoles(guild_id);
134
+ return { roles, count: roles.length };
135
+ },
136
+ });
137
+
138
+ // 创建角色工具
139
+ this.addTool({
140
+ name: 'qq_create_role',
141
+ description: '创建 QQ 频道角色',
142
+ parameters: {
143
+ type: 'object',
144
+ properties: {
145
+ bot: { type: 'string', description: 'Bot 名称' },
146
+ guild_id: { type: 'string', description: '频道 ID' },
147
+ name: { type: 'string', description: '角色名称' },
148
+ color: { type: 'number', description: '颜色(RGB 十进制数值)' },
149
+ },
150
+ required: ['bot', 'guild_id', 'name'],
151
+ },
152
+ platforms: ['qq'],
153
+ scopes: ['channel'],
154
+ permissionLevel: 'group_admin',
155
+ execute: async (args) => {
156
+ const { bot: botId, guild_id, name, color } = args;
157
+ const bot = this.bots.get(botId);
158
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
159
+ const role = await bot.createGuildRole(guild_id, name, color);
160
+ return { success: !!role, role, message: role ? `角色 "${name}" 创建成功` : '创建失败' };
161
+ },
162
+ });
163
+
164
+ // 添加角色工具
165
+ this.addTool({
166
+ name: 'qq_add_role',
167
+ description: '给成员添加 QQ 频道角色',
168
+ parameters: {
169
+ type: 'object',
170
+ properties: {
171
+ bot: { type: 'string', description: 'Bot 名称' },
172
+ guild_id: { type: 'string', description: '频道 ID' },
173
+ channel_id: { type: 'string', description: '子频道 ID' },
174
+ user_id: { type: 'string', description: '用户 ID' },
175
+ role_id: { type: 'string', description: '角色 ID' },
176
+ },
177
+ required: ['bot', 'guild_id', 'channel_id', 'user_id', 'role_id'],
178
+ },
179
+ platforms: ['qq'],
180
+ scopes: ['channel'],
181
+ permissionLevel: 'group_admin',
182
+ execute: async (args) => {
183
+ const { bot: botId, guild_id, channel_id, user_id, role_id } = args;
184
+ const bot = this.bots.get(botId);
185
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
186
+ const success = await bot.addMemberRole(guild_id, channel_id, user_id, role_id);
187
+ return { success, message: success ? `已给成员添加角色` : '操作失败' };
188
+ },
189
+ });
190
+
191
+ // 移除角色工具
192
+ this.addTool({
193
+ name: 'qq_remove_role',
194
+ description: '移除成员的 QQ 频道角色',
195
+ parameters: {
196
+ type: 'object',
197
+ properties: {
198
+ bot: { type: 'string', description: 'Bot 名称' },
199
+ guild_id: { type: 'string', description: '频道 ID' },
200
+ channel_id: { type: 'string', description: '子频道 ID' },
201
+ user_id: { type: 'string', description: '用户 ID' },
202
+ role_id: { type: 'string', description: '角色 ID' },
203
+ },
204
+ required: ['bot', 'guild_id', 'channel_id', 'user_id', 'role_id'],
205
+ },
206
+ platforms: ['qq'],
207
+ scopes: ['channel'],
208
+ permissionLevel: 'group_admin',
209
+ execute: async (args) => {
210
+ const { bot: botId, guild_id, channel_id, user_id, role_id } = args;
211
+ const bot = this.bots.get(botId);
212
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
213
+ const success = await bot.removeMemberRole(guild_id, channel_id, user_id, role_id);
214
+ return { success, message: success ? `已移除成员的角色` : '操作失败' };
215
+ },
216
+ });
217
+
218
+ // 子频道详情
219
+ this.addTool({
220
+ name: 'qq_channel_info',
221
+ description: '获取 QQ 频道中指定子频道的详细信息',
222
+ parameters: {
223
+ type: 'object',
224
+ properties: {
225
+ bot: { type: 'string', description: 'Bot 名称' },
226
+ channel_id: { type: 'string', description: '子频道 ID' },
227
+ },
228
+ required: ['bot', 'channel_id'],
229
+ },
230
+ platforms: ['qq'],
231
+ scopes: ['channel'],
232
+ permissionLevel: 'user',
233
+ execute: async (args) => {
234
+ const { bot: botId, channel_id } = args;
235
+ const bot = this.bots.get(botId);
236
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
237
+ const info = await bot.getChannelInfo(channel_id);
238
+ return info;
239
+ },
240
+ });
241
+
242
+ // 单成员详情
243
+ this.addTool({
244
+ name: 'qq_member_detail',
245
+ description: '获取 QQ 频道中指定成员的详细信息',
246
+ parameters: {
247
+ type: 'object',
248
+ properties: {
249
+ bot: { type: 'string', description: 'Bot 名称' },
250
+ guild_id: { type: 'string', description: '频道 ID' },
251
+ user_id: { type: 'string', description: '用户 ID' },
252
+ },
253
+ required: ['bot', 'guild_id', 'user_id'],
254
+ },
255
+ platforms: ['qq'],
256
+ scopes: ['channel'],
257
+ permissionLevel: 'user',
258
+ execute: async (args) => {
259
+ const { bot: botId, guild_id, user_id } = args;
260
+ const bot = this.bots.get(botId);
261
+ if (!bot) throw new Error(`Bot ${botId} 不存在`);
262
+ const member = await bot.getGuildMember(guild_id, user_id);
263
+ return member;
264
+ },
265
+ });
266
+
267
+ this.plugin.logger.debug('已注册 QQ 官方平台频道管理工具');
268
+ }
269
+ }
package/src/bot.ts ADDED
@@ -0,0 +1,345 @@
1
+ /**
2
+ * QQ 官方 Bot 实现
3
+ */
4
+ import {
5
+ Bot,
6
+ PrivateMessageEvent,
7
+ GroupMessageEvent,
8
+ } from "qq-official-bot";
9
+ import path from "path";
10
+ import {
11
+ Bot as ZhinBot,
12
+ Message,
13
+ SendOptions,
14
+ SendContent,
15
+ segment,
16
+ } from "zhin.js";
17
+ import type { QQBotConfig, ReceiverMode, ApplicationPlatform } from "./types.js";
18
+ import type { QQAdapter } from "./adapter.js";
19
+
20
+
21
+ export class QQBot<T extends ReceiverMode, M extends ApplicationPlatform = ApplicationPlatform>
22
+ extends Bot
23
+ implements ZhinBot<QQBotConfig<T, M>, PrivateMessageEvent | GroupMessageEvent>
24
+ {
25
+ $connected: boolean = false;
26
+ declare $config: QQBotConfig<T, M>;
27
+
28
+ get pluginLogger() {
29
+ return this.adapter.plugin.logger;
30
+ }
31
+
32
+ get $id() {
33
+ return this.$config.name;
34
+ }
35
+
36
+ constructor(public adapter: QQAdapter, config: QQBotConfig<T, M>) {
37
+ if (!config.data_dir) config.data_dir = path.join(process.cwd(), "data");
38
+ super(config);
39
+ this.$config = config;
40
+ }
41
+
42
+ private handleQQMessage(msg: PrivateMessageEvent | GroupMessageEvent): void {
43
+ const message = this.$formatMessage(msg);
44
+ this.adapter.emit("message.receive", message);
45
+ this.pluginLogger.debug(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
46
+ }
47
+
48
+ async $connect(): Promise<void> {
49
+ this.on("message.group", this.handleQQMessage.bind(this));
50
+ this.on("message.guild", this.handleQQMessage.bind(this));
51
+ this.on("message.private", this.handleQQMessage.bind(this));
52
+ await this.start();
53
+ this.$connected = true;
54
+ }
55
+
56
+ async $disconnect(): Promise<void> {
57
+ await this.stop();
58
+ this.$connected = false;
59
+ }
60
+
61
+ $formatMessage(msg: PrivateMessageEvent | GroupMessageEvent) {
62
+ let target_id = msg.user_id;
63
+ if (msg.message_type === "guild") target_id = msg.channel_id!;
64
+ if (msg.message_type === "group") target_id = msg.group_id!;
65
+ if (msg.sub_type === "direct") target_id = `direct:${msg.guild_id}`;
66
+ const result = Message.from(msg, {
67
+ $id: msg.message_id?.toString(),
68
+ $adapter: "qq" as const,
69
+ $bot: this.$config.name,
70
+ $sender: {
71
+ id: msg.sender.user_id?.toString(),
72
+ name: msg.sender.user_name?.toString(),
73
+ },
74
+ $channel: {
75
+ id: target_id,
76
+ type: msg.message_type === "guild" ? "channel" : msg.message_type,
77
+ },
78
+ $content: msg.message,
79
+ $raw: msg.raw_message,
80
+ $timestamp: Date.now(),
81
+ $recall: async () => {
82
+ await this.$recallMessage(result.$id);
83
+ },
84
+ $reply: async (content: SendContent, quote: boolean | string = true): Promise<string> => {
85
+ if (!Array.isArray(content)) content = [content];
86
+ if (quote) content.unshift({ type: "reply", data: { id: typeof quote === "boolean" ? result.$id : quote } });
87
+ return await this.adapter.sendMessage({
88
+ ...result.$channel,
89
+ context: "qq",
90
+ bot: this.$config.name,
91
+ content,
92
+ });
93
+ },
94
+ });
95
+ return result;
96
+ }
97
+
98
+ async $sendMessage(options: SendOptions): Promise<string> {
99
+ switch (options.type) {
100
+ case "private": {
101
+ if (options.id.startsWith("direct:")) {
102
+ const id = options.id.replace("direct:", "");
103
+ const result = await this.sendDirectMessage(id, options.content);
104
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
105
+ return `direct-${options.id}:${result.id.toString()}`;
106
+ } else {
107
+ const result = await this.sendPrivateMessage(options.id, options.content);
108
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
109
+ return `private-${options.id}:${result.id.toString()}`;
110
+ }
111
+ }
112
+ case "group": {
113
+ const result = await this.sendGroupMessage(options.id, options.content);
114
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
115
+ return `group-${options.id}:${result.id.toString()}`;
116
+ }
117
+ case "channel": {
118
+ const result = await this.sendGuildMessage(options.id, options.content);
119
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
120
+ return `channel-${options.id}:${result.id.toString()}`;
121
+ }
122
+ default:
123
+ throw new Error(`unsupported channel type ${options.type}`);
124
+ }
125
+ }
126
+
127
+ async $recallMessage(id: string): Promise<void> {
128
+ if (!/^(private|group|channel|direct)-([^\:]+):(.+)$/.test(id)) throw new Error(`invalid message id ${id}`);
129
+ const match = id.match(/^(private|group|channel|direct)-([^\:]+):(.+)$/);
130
+ if (!match) return;
131
+ const [, target_type, target_id, message_id] = match;
132
+ if (target_type === "private") await this.recallPrivateMessage(target_id, message_id);
133
+ if (target_type === "group") await this.recallGroupMessage(target_id, message_id);
134
+ if (target_type === "channel") await this.recallGuildMessage(target_id, message_id);
135
+ if (target_type === "direct") await this.recallDirectMessage(target_id, message_id);
136
+ }
137
+
138
+ // ==================== 频道管理 API ====================
139
+
140
+ /**
141
+ * 获取频道列表
142
+ */
143
+ async getGuilds(): Promise<any[]> {
144
+ try {
145
+ return await this.guildService.getList();
146
+ } catch (error) {
147
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取频道列表失败:`, error);
148
+ throw error;
149
+ }
150
+ }
151
+
152
+ /**
153
+ * 获取频道详情
154
+ * @param guildId 频道 ID
155
+ */
156
+ async getGuildInfo(guildId: string): Promise<any> {
157
+ try {
158
+ return await this.guildService.getInfo(guildId);
159
+ } catch (error) {
160
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取频道详情失败:`, error);
161
+ throw error;
162
+ }
163
+ }
164
+
165
+ /**
166
+ * 获取子频道列表
167
+ * @param guildId 频道 ID
168
+ */
169
+ async getChannels(guildId: string): Promise<any[]> {
170
+ try {
171
+ return await this.channelService.getList(guildId);
172
+ } catch (error) {
173
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取子频道列表失败:`, error);
174
+ throw error;
175
+ }
176
+ }
177
+
178
+ /**
179
+ * 获取子频道详情
180
+ * @param channelId 子频道 ID
181
+ */
182
+ async getChannelInfo(channelId: string): Promise<any> {
183
+ try {
184
+ return await this.channelService.getInfo(channelId);
185
+ } catch (error) {
186
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取子频道详情失败:`, error);
187
+ throw error;
188
+ }
189
+ }
190
+
191
+ /**
192
+ * 获取频道成员列表
193
+ * @param guildId 频道 ID
194
+ */
195
+ async getGuildMembers(guildId: string): Promise<any[]> {
196
+ try {
197
+ return await this.memberService.getGuildMemberList(guildId);
198
+ } catch (error) {
199
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取频道成员列表失败:`, error);
200
+ throw error;
201
+ }
202
+ }
203
+
204
+ /**
205
+ * 获取频道成员详情
206
+ * @param guildId 频道 ID
207
+ * @param userId 用户 ID
208
+ */
209
+ async getGuildMember(guildId: string, userId: string): Promise<any> {
210
+ try {
211
+ return await this.memberService.getGuildMemberInfo(guildId, userId);
212
+ } catch (error) {
213
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取成员详情失败:`, error);
214
+ throw error;
215
+ }
216
+ }
217
+
218
+ /**
219
+ * 删除频道成员(踢出)
220
+ * @param guildId 频道 ID
221
+ * @param userId 用户 ID
222
+ * @param addBlacklist 是否加入黑名单
223
+ * @param deleteHistoryMsg 删除历史消息天数 (-1不删除,0全部删除,3/7/15/30)
224
+ */
225
+ async removeGuildMember(guildId: string, userId: string, addBlacklist?: boolean, deleteHistoryMsg?: -1 | 0 | 3 | 7 | 15 | 30): Promise<boolean> {
226
+ try {
227
+ await this.memberService.kickMember(guildId, userId, deleteHistoryMsg, addBlacklist);
228
+ this.pluginLogger.info(`QQ Bot ${this.$id} 踢出成员 ${userId}(频道 ${guildId})`);
229
+ return true;
230
+ } catch (error) {
231
+ this.pluginLogger.error(`QQ Bot ${this.$id} 踢出成员失败:`, error);
232
+ throw error;
233
+ }
234
+ }
235
+
236
+ /**
237
+ * 获取频道角色列表
238
+ * @param guildId 频道 ID
239
+ */
240
+ async getGuildRoles(guildId: string): Promise<any[]> {
241
+ try {
242
+ return await this.guildService.getRoles(guildId);
243
+ } catch (error) {
244
+ this.pluginLogger.error(`QQ Bot ${this.$id} 获取角色列表失败:`, error);
245
+ throw error;
246
+ }
247
+ }
248
+
249
+ /**
250
+ * 创建频道角色
251
+ * @param guildId 频道 ID
252
+ * @param name 角色名
253
+ * @param color 颜色
254
+ * @param hoist 是否在成员列表中单独展示 (0 或 1)
255
+ */
256
+ async createGuildRole(guildId: string, name: string, color?: number, hoist?: 0 | 1): Promise<any> {
257
+ try {
258
+ const result = await this.guildService.createRole(guildId, { name, color: color || 0, hoist: hoist ?? 0 });
259
+ this.pluginLogger.info(`QQ Bot ${this.$id} 创建角色 "${name}"(频道 ${guildId})`);
260
+ return result;
261
+ } catch (error) {
262
+ this.pluginLogger.error(`QQ Bot ${this.$id} 创建角色失败:`, error);
263
+ throw error;
264
+ }
265
+ }
266
+
267
+ /**
268
+ * 给成员添加角色
269
+ * @param guildId 频道 ID
270
+ * @param channelId 子频道 ID
271
+ * @param userId 用户 ID
272
+ * @param roleId 角色 ID
273
+ */
274
+ async addMemberRole(guildId: string, channelId: string, userId: string, roleId: string): Promise<boolean> {
275
+ try {
276
+ await this.memberService.addMemberRole(guildId, channelId, userId, roleId);
277
+ this.pluginLogger.info(`QQ Bot ${this.$id} 给成员 ${userId} 添加角色 ${roleId}(频道 ${guildId})`);
278
+ return true;
279
+ } catch (error) {
280
+ this.pluginLogger.error(`QQ Bot ${this.$id} 添加角色失败:`, error);
281
+ throw error;
282
+ }
283
+ }
284
+
285
+ /**
286
+ * 移除成员角色
287
+ * @param guildId 频道 ID
288
+ * @param channelId 子频道 ID
289
+ * @param userId 用户 ID
290
+ * @param roleId 角色 ID
291
+ */
292
+ async removeMemberRole(guildId: string, channelId: string, userId: string, roleId: string): Promise<boolean> {
293
+ try {
294
+ await this.memberService.removeMemberRole(guildId, channelId, userId, roleId);
295
+ this.pluginLogger.info(`QQ Bot ${this.$id} 移除成员 ${userId} 的角色 ${roleId}(频道 ${guildId})`);
296
+ return true;
297
+ } catch (error) {
298
+ this.pluginLogger.error(`QQ Bot ${this.$id} 移除角色失败:`, error);
299
+ throw error;
300
+ }
301
+ }
302
+
303
+ /**
304
+ * 禁言成员(批量)
305
+ * @param guildId 频道 ID
306
+ * @param userIds 用户 ID 列表
307
+ * @param muteSeconds 禁言时长(秒),0 表示解除禁言
308
+ */
309
+ async muteMembers(guildId: string, userIds: string[], muteSeconds: number): Promise<boolean> {
310
+ try {
311
+ if (muteSeconds > 0) {
312
+ await this.memberService.muteMembers(guildId, userIds, muteSeconds);
313
+ this.pluginLogger.info(`QQ Bot ${this.$id} 禁言成员 ${userIds.join(',')} ${muteSeconds}秒(频道 ${guildId})`);
314
+ } else {
315
+ await this.memberService.unmuteMembers(guildId, userIds);
316
+ this.pluginLogger.info(`QQ Bot ${this.$id} 解除成员 ${userIds.join(',')} 禁言(频道 ${guildId})`);
317
+ }
318
+ return true;
319
+ } catch (error) {
320
+ this.pluginLogger.error(`QQ Bot ${this.$id} 禁言操作失败:`, error);
321
+ throw error;
322
+ }
323
+ }
324
+
325
+ /**
326
+ * 全员禁言
327
+ * @param guildId 频道 ID
328
+ * @param muteSeconds 禁言时长(秒),0 表示解除禁言
329
+ */
330
+ async muteAll(guildId: string, muteSeconds: number): Promise<boolean> {
331
+ try {
332
+ if (muteSeconds > 0) {
333
+ await this.guildService.mute(guildId, muteSeconds);
334
+ this.pluginLogger.info(`QQ Bot ${this.$id} 开启全员禁言(频道 ${guildId})`);
335
+ } else {
336
+ await this.guildService.unmute(guildId);
337
+ this.pluginLogger.info(`QQ Bot ${this.$id} 关闭全员禁言(频道 ${guildId})`);
338
+ }
339
+ return true;
340
+ } catch (error) {
341
+ this.pluginLogger.error(`QQ Bot ${this.$id} 全员禁言操作失败:`, error);
342
+ throw error;
343
+ }
344
+ }
345
+ }
package/src/index.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * QQ 官方适配器入口:类型扩展、导出、注册
3
+ */
4
+ import { usePlugin, type Plugin } from "zhin.js";
5
+ import { QQAdapter } from "./adapter.js";
6
+
7
+ declare module "zhin.js" {
8
+ interface Adapters {
9
+ qq: QQAdapter;
10
+ }
11
+ }
12
+
13
+ export * from "./types.js";
14
+ export { QQBot } from "./bot.js";
15
+ export { QQAdapter } from "./adapter.js";
16
+
17
+ const plugin = usePlugin();
18
+ const { provide } = plugin;
19
+
20
+ provide({
21
+ name: "qq",
22
+ description: "QQ Official Bot Adapter",
23
+ mounted: async (p: Plugin) => {
24
+ const adapter = new QQAdapter(p);
25
+ await adapter.start();
26
+ return adapter;
27
+ },
28
+ dispose: async (adapter: QQAdapter) => {
29
+ await adapter.stop();
30
+ },
31
+ });
package/src/types.ts ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * QQ 官方机器人适配器类型定义
3
+ */
4
+ import type { Bot } from "qq-official-bot";
5
+ import type { ReceiverMode, ApplicationPlatform } from "qq-official-bot";
6
+
7
+ export { ReceiverMode } from "qq-official-bot";
8
+ export type { ApplicationPlatform, Intent } from "qq-official-bot";
9
+
10
+ export type QQBotConfig<
11
+ T extends ReceiverMode,
12
+ M extends ApplicationPlatform = ApplicationPlatform,
13
+ > = Bot.Config<T, M> & {
14
+ context: "qq";
15
+ name: string;
16
+ data_dir?: string;
17
+ };
18
+
19
+ export interface QQBot<
20
+ T extends ReceiverMode,
21
+ M extends ApplicationPlatform = ApplicationPlatform,
22
+ > {
23
+ $config: QQBotConfig<T, M>;
24
+ }