@zhin.js/adapter-onebot11 1.0.98 → 1.1.0

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +650 -3
  2. package/README.md +58 -368
  3. package/adapters/onebot11.js +40 -0
  4. package/adapters/onebot11.ts +53 -0
  5. package/agent/PERMITS.md +14 -0
  6. package/{skills/onebot11/SKILL.md → agent/skills/onebot11.md} +4 -4
  7. package/agent/tools/set_title.ts +24 -0
  8. package/commands/endpoint/add/[id].js +3 -0
  9. package/commands/endpoint/add/[id].ts +3 -0
  10. package/commands/endpoint/list.js +3 -0
  11. package/commands/endpoint/list.ts +3 -0
  12. package/commands/endpoint/remove/[id].js +3 -0
  13. package/commands/endpoint/remove/[id].ts +3 -0
  14. package/lib/client.d.ts +20 -0
  15. package/lib/client.js +30 -0
  16. package/lib/content-port.d.ts +4 -0
  17. package/lib/content-port.js +63 -0
  18. package/lib/endpoint-management.d.ts +15 -0
  19. package/lib/endpoint-management.js +47 -0
  20. package/lib/index.d.ts +10 -16
  21. package/lib/index.js +7 -53
  22. package/lib/onebot11-endpoint-commands.d.ts +1 -0
  23. package/lib/onebot11-endpoint-commands.js +24 -0
  24. package/lib/onebot11-runtime-state.d.ts +1 -0
  25. package/lib/onebot11-runtime-state.js +6 -0
  26. package/lib/protocol.d.ts +160 -0
  27. package/lib/protocol.js +316 -0
  28. package/lib/side-event-dispatch.d.ts +7 -0
  29. package/lib/side-event-dispatch.js +36 -0
  30. package/lib/ws-endpoint.d.ts +22 -0
  31. package/lib/ws-endpoint.js +209 -0
  32. package/lib/ws-transport.d.ts +13 -0
  33. package/lib/ws-transport.js +71 -0
  34. package/lib/ws-types.d.ts +18 -0
  35. package/lib/ws-types.js +1 -0
  36. package/lib/wss-auth.d.ts +2 -0
  37. package/lib/wss-auth.js +16 -0
  38. package/lib/wss-endpoint.d.ts +25 -0
  39. package/lib/wss-endpoint.js +173 -0
  40. package/package.json +69 -22
  41. package/plugin.js +18 -0
  42. package/schema.json +97 -0
  43. package/src/client.ts +78 -0
  44. package/src/content-port.ts +66 -0
  45. package/src/endpoint-management.ts +72 -0
  46. package/src/index.ts +62 -65
  47. package/src/onebot11-endpoint-commands.ts +23 -0
  48. package/src/onebot11-runtime-state.ts +7 -0
  49. package/src/protocol.ts +459 -0
  50. package/src/side-event-dispatch.ts +48 -0
  51. package/src/ws-endpoint.ts +272 -0
  52. package/src/ws-transport.ts +100 -0
  53. package/src/ws-types.ts +21 -0
  54. package/src/wss-auth.ts +17 -0
  55. package/src/wss-endpoint.ts +228 -0
  56. package/lib/adapter.d.ts +0 -32
  57. package/lib/adapter.d.ts.map +0 -1
  58. package/lib/adapter.js +0 -92
  59. package/lib/adapter.js.map +0 -1
  60. package/lib/bot-ws-client.d.ts +0 -40
  61. package/lib/bot-ws-client.d.ts.map +0 -1
  62. package/lib/bot-ws-client.js +0 -397
  63. package/lib/bot-ws-client.js.map +0 -1
  64. package/lib/bot-ws-server.d.ts +0 -42
  65. package/lib/bot-ws-server.d.ts.map +0 -1
  66. package/lib/bot-ws-server.js +0 -344
  67. package/lib/bot-ws-server.js.map +0 -1
  68. package/lib/index.d.ts.map +0 -1
  69. package/lib/index.js.map +0 -1
  70. package/lib/onebot-get-msg.d.ts +0 -3
  71. package/lib/onebot-get-msg.d.ts.map +0 -1
  72. package/lib/onebot-get-msg.js +0 -27
  73. package/lib/onebot-get-msg.js.map +0 -1
  74. package/lib/types.d.ts +0 -54
  75. package/lib/types.d.ts.map +0 -1
  76. package/lib/types.js +0 -5
  77. package/lib/types.js.map +0 -1
  78. package/plugin.yml +0 -3
  79. package/src/adapter.ts +0 -104
  80. package/src/bot-ws-client.ts +0 -421
  81. package/src/bot-ws-server.ts +0 -382
  82. package/src/onebot-get-msg.ts +0 -33
  83. package/src/types.ts +0 -58
package/lib/adapter.d.ts DELETED
@@ -1,32 +0,0 @@
1
- /**
2
- * OneBot11 适配器:单一适配器支持正向 WS / 反向 WS,由 config.connection 区分
3
- */
4
- import { Adapter, Plugin } from 'zhin.js';
5
- import { OneBot11WsClient } from './bot-ws-client.js';
6
- import { OneBot11WsServer } from './bot-ws-server.js';
7
- import type { OneBot11BotConfig } from './types.js';
8
- export type OneBot11Bot = OneBot11WsClient | OneBot11WsServer;
9
- export declare class OneBot11Adapter extends Adapter<OneBot11Bot> {
10
- #private;
11
- constructor(plugin: Plugin);
12
- createBot(config: OneBot11BotConfig): OneBot11Bot;
13
- kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
14
- muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
15
- muteAll(botId: string, sceneId: string, enable?: boolean): Promise<boolean>;
16
- setAdmin(botId: string, sceneId: string, userId: string, enable?: boolean): Promise<boolean>;
17
- setMemberNickname(botId: string, sceneId: string, userId: string, nickname: string): Promise<boolean>;
18
- setGroupName(botId: string, sceneId: string, name: string): Promise<boolean>;
19
- listMembers(botId: string, sceneId: string): Promise<{
20
- members: {
21
- user_id: any;
22
- nickname: any;
23
- card: any;
24
- role: any;
25
- title: any;
26
- }[];
27
- count: number;
28
- }>;
29
- getGroupInfo(botId: string, sceneId: string): Promise<any>;
30
- start(): Promise<void>;
31
- }
32
- //# sourceMappingURL=adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE9D,qBAAa,eAAgB,SAAQ,OAAO,CAAC,WAAW,CAAC;;gBAG3C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;IAe3C,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,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAO;IAMtE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMlF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;IAgB1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
package/lib/adapter.js DELETED
@@ -1,92 +0,0 @@
1
- /**
2
- * OneBot11 适配器:单一适配器支持正向 WS / 反向 WS,由 config.connection 区分
3
- */
4
- import { Adapter } from 'zhin.js';
5
- import { OneBot11WsClient } from './bot-ws-client.js';
6
- import { OneBot11WsServer } from './bot-ws-server.js';
7
- export class OneBot11Adapter extends Adapter {
8
- #router;
9
- constructor(plugin) {
10
- super(plugin, 'onebot11', []);
11
- }
12
- createBot(config) {
13
- const connection = config.connection ?? 'ws';
14
- switch (connection) {
15
- case 'ws':
16
- return new OneBot11WsClient(this, config);
17
- case 'wss':
18
- if (!this.#router) {
19
- throw new Error('OneBot11 connection: wss 需要 router,请安装并在配置中启用 @zhin.js/host-router');
20
- }
21
- return new OneBot11WsServer(this, this.#router, config);
22
- default:
23
- throw new Error(`Unknown OneBot11 connection: ${connection}`);
24
- }
25
- }
26
- async kickMember(botId, sceneId, userId) {
27
- const bot = this.bots.get(botId);
28
- if (!bot)
29
- throw new Error(`Bot ${botId} 不存在`);
30
- return bot.kickMember(Number(sceneId), Number(userId), false);
31
- }
32
- async muteMember(botId, sceneId, userId, duration = 600) {
33
- const bot = this.bots.get(botId);
34
- if (!bot)
35
- throw new Error(`Bot ${botId} 不存在`);
36
- return bot.muteMember(Number(sceneId), Number(userId), duration);
37
- }
38
- async muteAll(botId, sceneId, enable = true) {
39
- const bot = this.bots.get(botId);
40
- if (!bot)
41
- throw new Error(`Bot ${botId} 不存在`);
42
- return bot.muteAll(Number(sceneId), enable);
43
- }
44
- async setAdmin(botId, sceneId, userId, enable = true) {
45
- const bot = this.bots.get(botId);
46
- if (!bot)
47
- throw new Error(`Bot ${botId} 不存在`);
48
- return bot.setAdmin(Number(sceneId), Number(userId), enable);
49
- }
50
- async setMemberNickname(botId, sceneId, userId, nickname) {
51
- const bot = this.bots.get(botId);
52
- if (!bot)
53
- throw new Error(`Bot ${botId} 不存在`);
54
- return bot.setCard(Number(sceneId), Number(userId), nickname);
55
- }
56
- async setGroupName(botId, sceneId, name) {
57
- const bot = this.bots.get(botId);
58
- if (!bot)
59
- throw new Error(`Bot ${botId} 不存在`);
60
- return bot.setGroupName(Number(sceneId), name);
61
- }
62
- async listMembers(botId, sceneId) {
63
- const bot = this.bots.get(botId);
64
- if (!bot)
65
- throw new Error(`Bot ${botId} 不存在`);
66
- const members = await bot.getMemberList(Number(sceneId));
67
- return {
68
- members: members.map((m) => ({
69
- user_id: m.user_id,
70
- nickname: m.nickname,
71
- card: m.card,
72
- role: m.role,
73
- title: m.title,
74
- })),
75
- count: members.length,
76
- };
77
- }
78
- async getGroupInfo(botId, sceneId) {
79
- const bot = this.bots.get(botId);
80
- if (!bot)
81
- throw new Error(`Bot ${botId} 不存在`);
82
- return bot.getGroupInfo(Number(sceneId));
83
- }
84
- async start() {
85
- this.#router = this.plugin.inject('router');
86
- this.plugin.useContext('router', (router) => {
87
- this.#router = router;
88
- });
89
- await super.start();
90
- }
91
- }
92
- //# sourceMappingURL=adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { Bot, Message, SendOptions, type QuotedMessagePayload } from 'zhin.js';
3
- import type { OneBot11WsClientConfig, OneBot11Message } from './types.js';
4
- import type { OneBot11Adapter } from './adapter.js';
5
- export declare class OneBot11WsClient extends EventEmitter implements Bot<OneBot11WsClientConfig, OneBot11Message> {
6
- adapter: OneBot11Adapter;
7
- $config: OneBot11WsClientConfig;
8
- $connected: boolean;
9
- private ws?;
10
- private reconnectTimer?;
11
- private heartbeatTimer?;
12
- private requestId;
13
- private pendingRequests;
14
- get logger(): import("zhin.js").Logger;
15
- constructor(adapter: OneBot11Adapter, $config: OneBot11WsClientConfig);
16
- get $id(): string;
17
- $connect(): Promise<void>;
18
- $disconnect(): Promise<void>;
19
- $formatMessage(onebotMsg: OneBot11Message): Message<OneBot11Message>;
20
- $sendMessage(options: SendOptions): Promise<string>;
21
- $recallMessage(id: string): Promise<void>;
22
- $getMsg(messageId: string): Promise<QuotedMessagePayload>;
23
- kickMember(groupId: number, userId: number, rejectAddRequest?: boolean): Promise<boolean>;
24
- muteMember(groupId: number, userId: number, duration?: number): Promise<boolean>;
25
- muteAll(groupId: number, enable?: boolean): Promise<boolean>;
26
- setAdmin(groupId: number, userId: number, enable?: boolean): Promise<boolean>;
27
- setCard(groupId: number, userId: number, card: string): Promise<boolean>;
28
- setTitle(groupId: number, userId: number, title: string, duration?: number): Promise<boolean>;
29
- setGroupName(groupId: number, name: string): Promise<boolean>;
30
- getMemberList(groupId: number): Promise<any[]>;
31
- getGroupInfo(groupId: number): Promise<any>;
32
- private callApi;
33
- private handleWebSocketMessage;
34
- private handleOneBot11Notice;
35
- private handleOneBot11Request;
36
- private handleOneBot11Message;
37
- private startHeartbeat;
38
- private scheduleReconnect;
39
- }
40
- //# sourceMappingURL=bot-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot-ws-client.d.ts","sourceRoot":"","sources":["../src/bot-ws-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAiB,GAAG,EAAE,OAAO,EAAyC,WAAW,EAAE,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErI,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAEhB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,GAAG,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAerF,OAAO,EAAE,eAAe;IAAS,OAAO,EAAE,sBAAsB;IAdnF,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAIlB;IACL,IAAI,MAAM,6BAET;gBAEkB,OAAO,EAAE,eAAe,EAAS,OAAO,EAAE,sBAAsB;IAKnF,IAAI,GAAG,WAEN;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBlC,cAAc,CAAC,SAAS,EAAE,eAAe;IAsCnC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBnD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMzD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAehG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAerF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAS9C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YASnC,OAAO;IAgBrB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;CAa1B"}
@@ -1,397 +0,0 @@
1
- /**
2
- * OneBot11 WebSocket 客户端连接 Bot
3
- */
4
- import WebSocket from 'ws';
5
- import { EventEmitter } from 'events';
6
- import { clearInterval } from 'node:timers';
7
- import { formatCompact, Message, Notice, Request, segment } from 'zhin.js';
8
- import { parseOneBotGetMsgResponse } from './onebot-get-msg.js';
9
- export class OneBot11WsClient extends EventEmitter {
10
- adapter;
11
- $config;
12
- $connected;
13
- ws;
14
- reconnectTimer;
15
- heartbeatTimer;
16
- requestId = 0;
17
- pendingRequests = new Map();
18
- get logger() {
19
- return this.adapter.plugin.logger;
20
- }
21
- constructor(adapter, $config) {
22
- super();
23
- this.adapter = adapter;
24
- this.$config = $config;
25
- this.$connected = false;
26
- }
27
- get $id() {
28
- return this.$config.name;
29
- }
30
- async $connect() {
31
- return new Promise((resolve, reject) => {
32
- const headers = {};
33
- if (this.$config.access_token) {
34
- headers['Authorization'] = `Bearer ${this.$config.access_token}`;
35
- const url = new URL(this.$config.url);
36
- url.searchParams.set('access_token', this.$config.access_token);
37
- this.$config.url = url.toString();
38
- }
39
- this.ws = new WebSocket(this.$config.url, { headers });
40
- this.ws.on('open', () => {
41
- this.$connected = true;
42
- if (!this.$config.access_token) {
43
- this.logger.warn(formatCompact({ bot: this.$id, ok: false, error: 'missing access_token' }));
44
- }
45
- this.logger.info(formatCompact({ bot: this.$id, mode: 'ws' }));
46
- this.startHeartbeat();
47
- resolve();
48
- });
49
- this.ws.on('message', (data) => {
50
- try {
51
- const message = JSON.parse(data.toString());
52
- this.handleWebSocketMessage(message);
53
- }
54
- catch (error) {
55
- this.emit('error', error);
56
- }
57
- });
58
- this.ws.on('close', (code, reason) => {
59
- this.$connected = false;
60
- const reasonStr = reason?.toString?.() || String(reason);
61
- const codeHint = code === 1005 ? ' [无状态,多为服务端/代理未发 close 帧即断开]' : code === 1006 ? ' [异常关闭]' : '';
62
- this.logger.warn(formatCompact({
63
- op: 'disconnect',
64
- bot: this.$config.name,
65
- code,
66
- error: `${reasonStr || 'closed'}${codeHint}`,
67
- reconnect_ms: this.$config.reconnect_interval || 5000,
68
- }));
69
- reject({ code, reason });
70
- this.scheduleReconnect();
71
- });
72
- this.ws.on('error', (error) => {
73
- this.logger.warn(formatCompact({
74
- op: 'ws_error',
75
- bot: this.$config.name,
76
- ok: false,
77
- error: error instanceof Error ? error.message : String(error),
78
- }));
79
- reject(error);
80
- });
81
- });
82
- }
83
- async $disconnect() {
84
- if (this.reconnectTimer) {
85
- clearTimeout(this.reconnectTimer);
86
- this.reconnectTimer = undefined;
87
- }
88
- if (this.heartbeatTimer) {
89
- clearInterval(this.heartbeatTimer);
90
- this.heartbeatTimer = undefined;
91
- }
92
- for (const [, request] of this.pendingRequests) {
93
- clearTimeout(request.timeout);
94
- request.reject(new Error('Connection closed'));
95
- }
96
- this.pendingRequests.clear();
97
- if (this.ws) {
98
- this.ws.close();
99
- this.ws = undefined;
100
- }
101
- }
102
- $formatMessage(onebotMsg) {
103
- const content = Array.isArray(onebotMsg.message) ? [...onebotMsg.message] : [];
104
- const quoteId = Message.quoteIdFromContent(content);
105
- Message.alignReplySegments(content, quoteId);
106
- const message = Message.from(onebotMsg, {
107
- $id: onebotMsg.message_id.toString(),
108
- $adapter: 'onebot11',
109
- $bot: `${this.$config.name}`,
110
- $sender: {
111
- id: onebotMsg.user_id.toString(),
112
- name: onebotMsg.user_id.toString(),
113
- },
114
- $channel: {
115
- id: (onebotMsg.group_id || onebotMsg.user_id).toString(),
116
- type: onebotMsg.group_id ? 'group' : 'private',
117
- },
118
- $content: content,
119
- $quote_id: quoteId,
120
- $raw: onebotMsg.raw_message,
121
- $timestamp: onebotMsg.time,
122
- $recall: async () => {
123
- await this.$recallMessage(message.$id);
124
- },
125
- $reply: async (content, quote) => {
126
- if (!Array.isArray(content))
127
- content = [content];
128
- if (quote)
129
- content.unshift({ type: 'reply', data: { message_id: message.$id } });
130
- return await this.adapter.sendMessage({
131
- ...message.$channel,
132
- context: 'onebot11',
133
- bot: `${this.$config.name}`,
134
- content,
135
- });
136
- },
137
- });
138
- return message;
139
- }
140
- async $sendMessage(options) {
141
- const messageData = { message: options.content };
142
- if (options.type === 'group') {
143
- const result = await this.callApi('send_group_msg', {
144
- group_id: parseInt(options.id),
145
- ...messageData,
146
- });
147
- this.logger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
148
- return result.message_id.toString();
149
- }
150
- if (options.type === 'private') {
151
- const result = await this.callApi('send_private_msg', {
152
- user_id: parseInt(options.id),
153
- ...messageData,
154
- });
155
- this.logger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
156
- return result.message_id.toString();
157
- }
158
- throw new Error('Either group_id or user_id must be provided');
159
- }
160
- async $recallMessage(id) {
161
- await this.callApi('delete_msg', { message_id: parseInt(id) });
162
- }
163
- async $getMsg(messageId) {
164
- const idParam = /^\d+$/.test(messageId) ? Number(messageId) : messageId;
165
- const data = await this.callApi('get_msg', { message_id: idParam });
166
- return parseOneBotGetMsgResponse(messageId, data);
167
- }
168
- async kickMember(groupId, userId, rejectAddRequest = false) {
169
- try {
170
- await this.callApi('set_group_kick', {
171
- group_id: groupId,
172
- user_id: userId,
173
- reject_add_request: rejectAddRequest,
174
- });
175
- this.logger.debug(formatCompact({ op: 'kick', bot: this.$id, group: groupId, user: userId }));
176
- return true;
177
- }
178
- catch (error) {
179
- this.logger.error(`OneBot11 Bot ${this.$id} 踢出成员失败:`, error);
180
- throw error;
181
- }
182
- }
183
- async muteMember(groupId, userId, duration = 600) {
184
- try {
185
- await this.callApi('set_group_ban', {
186
- group_id: groupId,
187
- user_id: userId,
188
- duration,
189
- });
190
- this.logger.debug(formatCompact({ op: duration > 0 ? 'mute' : 'unmute', bot: this.$id, group: groupId, user: userId, duration }));
191
- return true;
192
- }
193
- catch (error) {
194
- this.logger.error(`OneBot11 Bot ${this.$id} 禁言操作失败:`, error);
195
- throw error;
196
- }
197
- }
198
- async muteAll(groupId, enable = true) {
199
- try {
200
- await this.callApi('set_group_whole_ban', { group_id: groupId, enable });
201
- this.logger.debug(formatCompact({ op: 'mute_all', bot: this.$id, group: groupId, enable }));
202
- return true;
203
- }
204
- catch (error) {
205
- this.logger.error(`OneBot11 Bot ${this.$id} 全员禁言操作失败:`, error);
206
- throw error;
207
- }
208
- }
209
- async setAdmin(groupId, userId, enable = true) {
210
- try {
211
- await this.callApi('set_group_admin', { group_id: groupId, user_id: userId, enable });
212
- this.logger.debug(formatCompact({ op: 'set_admin', bot: this.$id, group: groupId, user: userId, enable }));
213
- return true;
214
- }
215
- catch (error) {
216
- this.logger.error(`OneBot11 Bot ${this.$id} 设置管理员失败:`, error);
217
- throw error;
218
- }
219
- }
220
- async setCard(groupId, userId, card) {
221
- try {
222
- await this.callApi('set_group_card', { group_id: groupId, user_id: userId, card });
223
- this.logger.debug(formatCompact({ op: 'set_card', bot: this.$id, group: groupId, user: userId }));
224
- return true;
225
- }
226
- catch (error) {
227
- this.logger.error(`OneBot11 Bot ${this.$id} 设置群名片失败:`, error);
228
- throw error;
229
- }
230
- }
231
- async setTitle(groupId, userId, title, duration = -1) {
232
- try {
233
- await this.callApi('set_group_special_title', {
234
- group_id: groupId,
235
- user_id: userId,
236
- special_title: title,
237
- duration,
238
- });
239
- this.logger.debug(formatCompact({ op: 'set_title', bot: this.$id, group: groupId, user: userId }));
240
- return true;
241
- }
242
- catch (error) {
243
- this.logger.error(`OneBot11 Bot ${this.$id} 设置头衔失败:`, error);
244
- throw error;
245
- }
246
- }
247
- async setGroupName(groupId, name) {
248
- try {
249
- await this.callApi('set_group_name', { group_id: groupId, group_name: name });
250
- this.logger.debug(formatCompact({ op: 'set_group_name', bot: this.$id, group: groupId }));
251
- return true;
252
- }
253
- catch (error) {
254
- this.logger.error(`OneBot11 Bot ${this.$id} 设置群名失败:`, error);
255
- throw error;
256
- }
257
- }
258
- async getMemberList(groupId) {
259
- try {
260
- return await this.callApi('get_group_member_list', { group_id: groupId });
261
- }
262
- catch (error) {
263
- this.logger.error(`OneBot11 Bot ${this.$id} 获取群成员列表失败:`, error);
264
- throw error;
265
- }
266
- }
267
- async getGroupInfo(groupId) {
268
- try {
269
- return await this.callApi('get_group_info', { group_id: groupId });
270
- }
271
- catch (error) {
272
- this.logger.error(`OneBot11 Bot ${this.$id} 获取群信息失败:`, error);
273
- throw error;
274
- }
275
- }
276
- async callApi(action, params = {}) {
277
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
278
- throw new Error('WebSocket is not connected');
279
- }
280
- const echo = `req_${++this.requestId}`;
281
- const message = { action, params, echo };
282
- return new Promise((resolve, reject) => {
283
- const timeout = setTimeout(() => {
284
- this.pendingRequests.delete(echo);
285
- reject(new Error(`API call timeout: ${action}`));
286
- }, 30000);
287
- this.pendingRequests.set(echo, { resolve, reject, timeout });
288
- this.ws.send(JSON.stringify(message));
289
- });
290
- }
291
- handleWebSocketMessage(message) {
292
- if (message.echo && this.pendingRequests.has(message.echo)) {
293
- const request = this.pendingRequests.get(message.echo);
294
- this.pendingRequests.delete(message.echo);
295
- clearTimeout(request.timeout);
296
- const response = message;
297
- if (response.status === 'ok')
298
- return request.resolve(response.data);
299
- return request.reject(new Error(`API error: ${response.retcode}`));
300
- }
301
- if (message.post_type === 'message') {
302
- this.handleOneBot11Message(message);
303
- }
304
- else if (message.post_type === 'notice') {
305
- this.handleOneBot11Notice(message);
306
- }
307
- else if (message.post_type === 'request') {
308
- this.handleOneBot11Request(message);
309
- }
310
- }
311
- handleOneBot11Notice(event) {
312
- const noticeTypeMap = {
313
- group_increase: 'group_member_increase',
314
- group_decrease: 'group_member_decrease',
315
- group_admin: 'group_admin_change',
316
- group_ban: 'group_ban',
317
- group_recall: 'group_recall',
318
- friend_recall: 'friend_recall',
319
- friend_add: 'friend_add',
320
- notify: event.sub_type === 'poke' ? (event.group_id ? 'group_poke' : 'friend_poke') : `notify_${event.sub_type}`,
321
- group_upload: 'group_upload',
322
- };
323
- const $type = noticeTypeMap[event.notice_type] || event.notice_type;
324
- const isGroup = !!event.group_id;
325
- const notice = Notice.from(event, {
326
- $id: `${event.time}_${event.notice_type}_${event.group_id || event.user_id}`,
327
- $adapter: 'onebot11',
328
- $bot: this.$config.name,
329
- $type,
330
- $subType: event.sub_type,
331
- $channel: {
332
- id: (event.group_id || event.user_id)?.toString() || '',
333
- type: isGroup ? 'group' : 'private',
334
- },
335
- $operator: event.operator_id ? { id: event.operator_id.toString(), name: event.operator_id.toString() } : undefined,
336
- $target: event.user_id ? { id: event.user_id.toString(), name: event.user_id.toString() } : undefined,
337
- $timestamp: event.time || Math.floor(Date.now() / 1000),
338
- });
339
- this.adapter.emit('notice.receive', notice);
340
- }
341
- handleOneBot11Request(event) {
342
- const typeMap = {
343
- friend: 'friend_add',
344
- group: event.sub_type === 'invite' ? 'group_invite' : 'group_add',
345
- };
346
- const $type = typeMap[event.request_type] || event.request_type;
347
- const request = Request.from(event, {
348
- $id: event.flag || `${event.time}_${event.request_type}_${event.user_id}`,
349
- $adapter: 'onebot11',
350
- $bot: this.$config.name,
351
- $type,
352
- $subType: event.sub_type,
353
- $channel: {
354
- id: (event.group_id || event.user_id)?.toString() || '',
355
- type: event.group_id ? 'group' : 'private',
356
- },
357
- $sender: { id: event.user_id?.toString() || '', name: event.user_id?.toString() || '' },
358
- $comment: event.comment,
359
- $timestamp: event.time || Math.floor(Date.now() / 1000),
360
- $approve: async (remark) => {
361
- await this.callApi(event.request_type === 'friend' ? 'set_friend_add_request' : 'set_group_add_request', { flag: event.flag, approve: true, remark });
362
- },
363
- $reject: async (reason) => {
364
- await this.callApi(event.request_type === 'friend' ? 'set_friend_add_request' : 'set_group_add_request', { flag: event.flag, approve: false, reason });
365
- },
366
- });
367
- this.adapter.emit('request.receive', request);
368
- }
369
- handleOneBot11Message(onebotMsg) {
370
- const message = this.$formatMessage(onebotMsg);
371
- this.adapter.emit('message.receive', message);
372
- this.logger.debug(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
373
- }
374
- startHeartbeat() {
375
- const interval = this.$config.heartbeat_interval || 30000;
376
- this.heartbeatTimer = setInterval(() => {
377
- if (this.ws && this.ws.readyState === WebSocket.OPEN)
378
- this.ws.ping();
379
- }, interval);
380
- }
381
- scheduleReconnect() {
382
- if (this.reconnectTimer)
383
- return;
384
- const interval = this.$config.reconnect_interval || 5000;
385
- this.reconnectTimer = setTimeout(async () => {
386
- this.reconnectTimer = undefined;
387
- try {
388
- await this.$connect();
389
- }
390
- catch (error) {
391
- this.emit('error', new Error(`Reconnection failed: ${error}`));
392
- this.scheduleReconnect();
393
- }
394
- }, interval);
395
- }
396
- }
397
- //# sourceMappingURL=bot-ws-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot-ws-client.js","sourceRoot":"","sources":["../src/bot-ws-client.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { Bot, Message, SendOptions, type QuotedMessagePayload } from 'zhin.js';
3
- import type { Router } from '@zhin.js/host-router';
4
- import type { OneBot11WsServerConfig, OneBot11Message } from './types.js';
5
- import type { OneBot11Adapter } from './adapter.js';
6
- export declare class OneBot11WsServer extends EventEmitter implements Bot<OneBot11WsServerConfig, OneBot11Message> {
7
- #private;
8
- adapter: OneBot11Adapter;
9
- router: Router;
10
- $config: OneBot11WsServerConfig;
11
- $connected: boolean;
12
- private heartbeatTimer?;
13
- private requestId;
14
- private pendingRequests;
15
- get logger(): import("zhin.js").Logger;
16
- get $id(): string;
17
- constructor(adapter: OneBot11Adapter, router: Router, $config: OneBot11WsServerConfig);
18
- $connect(): Promise<void>;
19
- $disconnect(): Promise<void>;
20
- $formatMessage(onebotMsg: OneBot11Message): Message<OneBot11Message>;
21
- $sendMessage(options: SendOptions): Promise<string>;
22
- $recallMessage(id: string): Promise<void>;
23
- $getMsg(messageId: string): Promise<QuotedMessagePayload>;
24
- private getFirstSelfId;
25
- kickMember(groupId: number, userId: number, rejectAddRequest?: boolean): Promise<boolean>;
26
- muteMember(groupId: number, userId: number, duration?: number): Promise<boolean>;
27
- muteAll(groupId: number, enable?: boolean): Promise<boolean>;
28
- setAdmin(groupId: number, userId: number, enable?: boolean): Promise<boolean>;
29
- setCard(groupId: number, userId: number, card: string): Promise<boolean>;
30
- setGroupName(groupId: number, name: string): Promise<boolean>;
31
- getMemberList(groupId: number): Promise<any[]>;
32
- getGroupInfo(groupId: number): Promise<any>;
33
- setTitle(groupId: number, userId: number, title: string, duration?: number): Promise<boolean>;
34
- private callApi;
35
- private handleWebSocketMessage;
36
- private handleMetaEvent;
37
- private handleMessage;
38
- private handleNotice;
39
- private handleRequest;
40
- private startHeartbeat;
41
- }
42
- //# sourceMappingURL=bot-ws-server.d.ts.map