koishi-plugin-adapter-onebot-multi 0.0.1

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/lib/panel.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ import { Context, Schema } from 'koishi';
2
+ import { StatusManager } from './status';
3
+ import { ConfigManager } from './config-manager';
4
+ export interface PanelConfig {
5
+ /** 是否启用展示面板 */
6
+ enabled?: boolean;
7
+ /** 面板端口 */
8
+ port?: number;
9
+ /** 面板路径 */
10
+ basePath?: string;
11
+ }
12
+ export declare const PanelConfig: Schema<PanelConfig>;
13
+ export declare class StatusPanel {
14
+ private ctx;
15
+ private config;
16
+ private statusManager;
17
+ private configManager;
18
+ private app;
19
+ private server;
20
+ constructor(ctx: Context, config: PanelConfig, statusManager: StatusManager, configManager: ConfigManager);
21
+ private parseJsonBody;
22
+ private setupRoutes;
23
+ private startBot;
24
+ private stopBot;
25
+ private start;
26
+ private stop;
27
+ private renderLoginPage;
28
+ private renderSetupPage;
29
+ private renderStatusPage;
30
+ private renderAdminPage;
31
+ private formatUptime;
32
+ }
@@ -0,0 +1,39 @@
1
+ import { Context } from 'koishi';
2
+ import type { OneBotBot } from './bot';
3
+ export interface BotStatus {
4
+ selfId: string;
5
+ nickname?: string;
6
+ protocol: 'ws' | 'ws-reverse';
7
+ status: 'online' | 'offline' | 'connecting';
8
+ endpoint?: string;
9
+ path?: string;
10
+ messageReceived?: number;
11
+ messageSent?: number;
12
+ lastMessageTime?: number;
13
+ startupTime?: number;
14
+ groupCount?: number;
15
+ friendCount?: number;
16
+ lastHeartbeat?: number;
17
+ }
18
+ export interface StatusData {
19
+ bots: BotStatus[];
20
+ updatedAt: number;
21
+ }
22
+ export declare class StatusManager {
23
+ private ctx;
24
+ private cache;
25
+ constructor(ctx: Context);
26
+ /**
27
+ * 获取 Bot 的额外信息(统计、群数等)
28
+ */
29
+ fetchBotInfo(bot: OneBotBot): Promise<void>;
30
+ /**
31
+ * 从 ctx.bots 获取实时状态
32
+ */
33
+ getStatus(): StatusData;
34
+ /**
35
+ * 刷新所有 Bot 的信息
36
+ */
37
+ refreshAll(): Promise<StatusData>;
38
+ getBotStatus(selfId: string): BotStatus | undefined;
39
+ }
package/lib/types.d.ts ADDED
@@ -0,0 +1,481 @@
1
+ import { Dict } from 'koishi';
2
+ import { BaseBot, CQCode } from './bot';
3
+ export interface Response {
4
+ status: string;
5
+ retcode: number;
6
+ data: any;
7
+ echo?: number;
8
+ }
9
+ export interface MessageId {
10
+ message_id: number;
11
+ }
12
+ export interface AccountInfo {
13
+ user_id: number;
14
+ tiny_id?: string;
15
+ nickname: string;
16
+ }
17
+ export interface QidianAccountInfo {
18
+ master_id: number;
19
+ ext_name: string;
20
+ create_time: number;
21
+ }
22
+ export interface StrangerInfo extends AccountInfo {
23
+ sex: 'male' | 'female' | 'unknown';
24
+ age: number;
25
+ }
26
+ export interface TalkativeMemberInfo extends AccountInfo {
27
+ avatar: string;
28
+ day_count: number;
29
+ }
30
+ export type GroupRole = 'member' | 'admin' | 'owner';
31
+ export type HonorType = 'talkative' | 'performer' | 'legend' | 'strong_newbie' | 'emotion';
32
+ export interface HonoredMemberInfo {
33
+ avatar: string;
34
+ description: string;
35
+ }
36
+ export interface HonorInfo {
37
+ current_talkative: TalkativeMemberInfo;
38
+ talkative_list: HonoredMemberInfo[];
39
+ performer_list: HonoredMemberInfo[];
40
+ legend_list: HonoredMemberInfo[];
41
+ strong_newbie_list: HonoredMemberInfo[];
42
+ emotion_list: HonoredMemberInfo[];
43
+ }
44
+ export interface SenderInfo extends StrangerInfo {
45
+ area?: string;
46
+ level?: string;
47
+ title?: string;
48
+ role?: GroupRole;
49
+ card?: string;
50
+ }
51
+ export interface Message extends MessageId {
52
+ real_id?: number;
53
+ time: number;
54
+ message_seq: number;
55
+ message_type: 'private' | 'group' | 'guild';
56
+ sender: SenderInfo;
57
+ group_id?: number;
58
+ guild_id?: string;
59
+ channel_id?: string;
60
+ message: string | CQCode[];
61
+ anonymous?: AnonymousInfo;
62
+ }
63
+ export interface AnonymousInfo {
64
+ id: number;
65
+ name: string;
66
+ flag: string;
67
+ }
68
+ export type RecordFormat = 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac';
69
+ export type DataDirectory = 'image' | 'record' | 'show' | 'bface';
70
+ export interface FriendInfo extends AccountInfo {
71
+ remark: string;
72
+ }
73
+ export interface UnidirectionalFriendInfo extends AccountInfo {
74
+ source: string;
75
+ }
76
+ export interface GroupBase {
77
+ group_id: number;
78
+ group_name: string;
79
+ }
80
+ export interface GroupInfo extends GroupBase {
81
+ member_count: number;
82
+ max_member_count: number;
83
+ }
84
+ export interface GroupMemberInfo extends SenderInfo {
85
+ card_changeable: boolean;
86
+ group_id: number;
87
+ join_time: number;
88
+ last_sent_time: number;
89
+ title_expire_time: number;
90
+ unfriendly: boolean;
91
+ }
92
+ export interface Credentials {
93
+ cookies: string;
94
+ csrf_token: number;
95
+ }
96
+ export interface ImageInfo {
97
+ file: string;
98
+ size?: number;
99
+ filename?: string;
100
+ url?: string;
101
+ }
102
+ export interface RecordInfo {
103
+ file: string;
104
+ }
105
+ export interface VersionInfo {
106
+ app_name?: string;
107
+ app_version?: string;
108
+ app_full_name?: string;
109
+ protocol_version?: string;
110
+ coolq_edition?: 'air' | 'pro';
111
+ coolq_directory?: string;
112
+ plugin_version?: string;
113
+ plugin_build_number?: number;
114
+ plugin_build_configuration?: 'debug' | 'release';
115
+ version?: string;
116
+ go_cqhttp?: boolean;
117
+ runtime_version?: string;
118
+ runtime_os?: string;
119
+ protocol?: string;
120
+ }
121
+ export interface ForwardMessage {
122
+ sender: AccountInfo;
123
+ time: number;
124
+ content: string;
125
+ }
126
+ export interface EssenceMessage extends MessageId {
127
+ sender_id: number;
128
+ sender_nick: string;
129
+ sender_time: number;
130
+ operator_id: number;
131
+ operator_nick: string;
132
+ operator_time: number;
133
+ }
134
+ export interface VipInfo extends AccountInfo {
135
+ level: number;
136
+ level_speed: number;
137
+ vip_level: number;
138
+ vip_growth_speed: number;
139
+ vip_growth_total: string;
140
+ }
141
+ export interface GroupNotice {
142
+ notice_id: string;
143
+ sender_id: number;
144
+ publish_time: number;
145
+ message: {
146
+ text: string;
147
+ images: GroupNoticeImage[];
148
+ };
149
+ }
150
+ export interface GroupNoticeImage {
151
+ height: string;
152
+ width: string;
153
+ id: string;
154
+ }
155
+ export interface Statistics {
156
+ packet_received: number;
157
+ packet_sent: number;
158
+ packet_lost: number;
159
+ message_received: number;
160
+ message_sent: number;
161
+ disconnect_times: number;
162
+ lost_times: number;
163
+ last_message_time?: number;
164
+ startup_time?: number;
165
+ }
166
+ export interface StatusInfo {
167
+ app_initialized: boolean;
168
+ app_enabled: boolean;
169
+ plugins_good: boolean;
170
+ app_good: boolean;
171
+ online: boolean;
172
+ good: boolean;
173
+ stat: Statistics;
174
+ }
175
+ export interface TextDetection {
176
+ text: string;
177
+ confidence: string;
178
+ coordinates: any;
179
+ }
180
+ export interface OcrResult {
181
+ language: string;
182
+ texts: TextDetection[];
183
+ }
184
+ export interface GroupRequest extends GroupBase {
185
+ request_id: number;
186
+ invitor_uin: number;
187
+ invitor_nick: string;
188
+ checked: boolean;
189
+ actor: number;
190
+ }
191
+ export interface InvitedRequest extends GroupRequest {
192
+ }
193
+ export interface JoinRequest extends GroupRequest {
194
+ message: string;
195
+ }
196
+ export interface GroupSystemMessageInfo {
197
+ invited_qequests: InvitedRequest[];
198
+ join_requests: JoinRequest[];
199
+ }
200
+ export interface GroupFileSystemInfo {
201
+ file_count: number;
202
+ limit_count: number;
203
+ used_space: number;
204
+ total_space: number;
205
+ }
206
+ export interface GroupFile {
207
+ file_id: string;
208
+ file_name: string;
209
+ busid: number;
210
+ file_size: number;
211
+ upload_time: number;
212
+ dead_time: number;
213
+ modify_time: number;
214
+ download_time: number;
215
+ uploader: number;
216
+ uploader_name: string;
217
+ }
218
+ export interface GroupFolder {
219
+ folder_id: string;
220
+ folder_name: string;
221
+ create_time: number;
222
+ creator: number;
223
+ creator_name: string;
224
+ total_file_count: number;
225
+ }
226
+ export interface GroupFileList {
227
+ files: GroupFile[];
228
+ folders: GroupFolder[];
229
+ }
230
+ export interface AtAllRemain {
231
+ can_at_all: boolean;
232
+ remain_at_all_count_for_group: number;
233
+ remain_at_all_count_for_uin: number;
234
+ }
235
+ export interface Device {
236
+ app_id: number;
237
+ device_name: string;
238
+ device_kind: string;
239
+ }
240
+ export interface ModelVariant {
241
+ model_show: string;
242
+ need_pay: boolean;
243
+ }
244
+ export declare enum SafetyLevel {
245
+ safe = 0,
246
+ unknown = 1,
247
+ danger = 2
248
+ }
249
+ export interface GuildServiceProfile {
250
+ nickname: string;
251
+ tiny_id: string;
252
+ avatar_url: string;
253
+ }
254
+ export interface GuildBaseInfo {
255
+ guild_id: string;
256
+ guild_name: string;
257
+ }
258
+ export interface GuildInfo extends GuildBaseInfo {
259
+ guild_display_id: string;
260
+ }
261
+ export interface GuildMeta extends GuildBaseInfo {
262
+ guild_profile: string;
263
+ create_time: number;
264
+ max_member_count: number;
265
+ max_robot_count: number;
266
+ max_admin_count: number;
267
+ member_count: number;
268
+ owner_id: string;
269
+ }
270
+ export interface ChannelInfo {
271
+ owner_guild_id: string;
272
+ channel_id: string;
273
+ channel_type: number;
274
+ channel_name: string;
275
+ create_time: number;
276
+ creator_id: string;
277
+ creator_tiny_id: string;
278
+ talk_permission: number;
279
+ visible_type: number;
280
+ current_slow_mode: number;
281
+ slow_modes: SlowModeInfo[];
282
+ }
283
+ export interface SlowModeInfo {
284
+ slow_mode_key: number;
285
+ slow_mode_text: string;
286
+ speak_frequency: number;
287
+ slow_mode_circle: number;
288
+ }
289
+ export interface GuildMemberListData {
290
+ members: GuildMemberInfo[];
291
+ finished: boolean;
292
+ next_token: string;
293
+ }
294
+ export interface GuildMemberRole {
295
+ role_id: string;
296
+ role_name: string;
297
+ }
298
+ export interface GuildMemberInfo extends GuildMemberRole {
299
+ tiny_id: string;
300
+ title: string;
301
+ nickname: string;
302
+ role: number;
303
+ }
304
+ export interface GuildMemberProfile {
305
+ tiny_id: string;
306
+ nickname: string;
307
+ avatar_url: string;
308
+ join_time: number;
309
+ roles: GuildMemberRole[];
310
+ }
311
+ export interface ReactionInfo {
312
+ emoji_id: string;
313
+ emoji_index: number;
314
+ emoji_type: number;
315
+ emoji_name: string;
316
+ count: number;
317
+ clicked: boolean;
318
+ }
319
+ export interface Payload extends Message {
320
+ time: number;
321
+ self_id: number;
322
+ self_tiny_id?: string;
323
+ post_type: string;
324
+ request_type: string;
325
+ notice_type: string;
326
+ meta_event_type: string;
327
+ honor_type: string;
328
+ sub_type: string;
329
+ message_id: number;
330
+ user_id: number;
331
+ target_id: number;
332
+ operator_id: number;
333
+ raw_message: string;
334
+ font: number;
335
+ comment: string;
336
+ flag: string;
337
+ old_info: ChannelInfo;
338
+ new_info: ChannelInfo;
339
+ channel_info: ChannelInfo;
340
+ current_reactions: ReactionInfo[];
341
+ file: File;
342
+ }
343
+ export interface File {
344
+ name: string;
345
+ size: number;
346
+ url: string;
347
+ }
348
+ type id = string | number;
349
+ export interface Internal {
350
+ sendPrivateMsg(user_id: id, message: string | readonly CQCode[], auto_escape?: boolean): Promise<number>;
351
+ sendPrivateMsgAsync(user_id: id, message: string | readonly CQCode[], auto_escape?: boolean): Promise<void>;
352
+ sendGroupMsg(group_id: id, message: string | readonly CQCode[], auto_escape?: boolean): Promise<number>;
353
+ sendGroupMsgAsync(group_id: id, message: string | readonly CQCode[], auto_escape?: boolean): Promise<void>;
354
+ sendGroupForwardMsg(group_id: id, messages: readonly CQCode[]): Promise<number>;
355
+ sendGroupForwardMsgAsync(group_id: id, messages: readonly CQCode[]): Promise<void>;
356
+ sendPrivateForwardMsg(user_id: id, messages: readonly CQCode[]): Promise<number>;
357
+ sendPrivateForwardMsgAsync(user_id: id, messages: readonly CQCode[]): Promise<void>;
358
+ deleteMsg(message_id: id): Promise<void>;
359
+ deleteMsgAsync(message_id: id): Promise<void>;
360
+ setEssenceMsg(message_id: id): Promise<void>;
361
+ setEssenceMsgAsync(message_id: id): Promise<void>;
362
+ deleteEssenceMsg(message_id: id): Promise<void>;
363
+ deleteEssenceMsgAsync(message_id: id): Promise<void>;
364
+ markMsgAsRead(message_id: id): Promise<void>;
365
+ sendLike(user_id: id, times?: number): Promise<void>;
366
+ sendLikeAsync(user_id: id, times?: number): Promise<void>;
367
+ sendGroupSign(group_id: id): Promise<void>;
368
+ sendGroupSignAsync(group_id: id): Promise<void>;
369
+ getMsg(message_id: id): Promise<Message>;
370
+ getForwardMsg(message_id: id): Promise<ForwardMessage[]>;
371
+ getEssenceMsgList(group_id: id): Promise<EssenceMessage[]>;
372
+ getWordSlices(content: string): Promise<string[]>;
373
+ ocrImage(image: string): Promise<OcrResult>;
374
+ getGroupMsgHistory(group_id: id, message_seq?: number): Promise<{
375
+ messages: Message[];
376
+ }>;
377
+ deleteFriend(user_id: id): Promise<void>;
378
+ deleteFriendAsync(user_id: id): Promise<void>;
379
+ deleteUnidirectionalFriend(user_id: id): Promise<void>;
380
+ deleteUnidirectionalFriendAsync(user_id: id): Promise<void>;
381
+ setFriendAddRequest(flag: string, approve: boolean, remark?: string): Promise<void>;
382
+ setFriendAddRequestAsync(flag: string, approve: boolean, remark?: string): Promise<void>;
383
+ setGroupAddRequest(flag: string, subType: 'add' | 'invite', approve: boolean, reason?: string): Promise<void>;
384
+ setGroupAddRequestAsync(flag: string, subType: 'add' | 'invite', approve: boolean, reason?: string): Promise<void>;
385
+ setGroupKick(group_id: id, user_id: id, reject_add_request?: boolean): Promise<void>;
386
+ setGroupKickAsync(group_id: id, user_id: id, reject_add_request?: boolean): Promise<void>;
387
+ setGroupBan(group_id: id, user_id: id, duration?: number): Promise<void>;
388
+ setGroupBanAsync(group_id: id, user_id: id, duration?: number): Promise<void>;
389
+ setGroupWholeBan(group_id: id, enable?: boolean): Promise<void>;
390
+ setGroupWholeBanAsync(group_id: id, enable?: boolean): Promise<void>;
391
+ setGroupAdmin(group_id: id, user_id: id, enable?: boolean): Promise<void>;
392
+ setGroupAdminAsync(group_id: id, user_id: id, enable?: boolean): Promise<void>;
393
+ setGroupAnonymous(group_id: id, enable?: boolean): Promise<void>;
394
+ setGroupAnonymousAsync(group_id: id, enable?: boolean): Promise<void>;
395
+ setGroupCard(group_id: id, user_id: id, card?: string): Promise<void>;
396
+ setGroupCardAsync(group_id: id, user_id: id, card?: string): Promise<void>;
397
+ setGroupLeave(group_id: id, is_dismiss?: boolean): Promise<void>;
398
+ setGroupLeaveAsync(group_id: id, is_dismiss?: boolean): Promise<void>;
399
+ setGroupSpecialTitle(group_id: id, user_id: id, special_title?: string, duration?: number): Promise<void>;
400
+ setGroupSpecialTitleAsync(group_id: id, user_id: id, special_title?: string, duration?: number): Promise<void>;
401
+ setGroupName(group_id: id, name: string): Promise<void>;
402
+ setGroupNameAsync(group_id: id, name: string): Promise<void>;
403
+ setGroupPortrait(group_id: id, file: string, cache?: boolean): Promise<void>;
404
+ setGroupPortraitAsync(group_id: id, file: string, cache?: boolean): Promise<void>;
405
+ getGroupAtAllRemain(group_id: id): Promise<AtAllRemain>;
406
+ sendGroupNotice(group_id: id, content: string, image?: string, pinned?: id, confirm_required?: id): Promise<void>;
407
+ sendGroupNoticeAsync(group_id: id, content: string, image?: string, pinned?: id, confirm_required?: id): Promise<void>;
408
+ getGroupNotice(group_id: id): Promise<GroupNotice[]>;
409
+ delGroupNotice(group_id: id, notice_id: id): Promise<void>;
410
+ getLoginInfo(): Promise<AccountInfo>;
411
+ qidianGetLoginInfo(): Promise<QidianAccountInfo>;
412
+ setQqProfile(nickname: string, company: string, email: string, college: string, personal_note: string): Promise<void>;
413
+ setQqProfileAsync(nickname: string, company: string, email: string, college: string, personal_note: string): Promise<void>;
414
+ setQqAvatar(file: string): Promise<void>;
415
+ setOnlineStatus(status: string, extStatus: string, batteryStatus: string): Promise<void>;
416
+ getVipInfo(): Promise<VipInfo>;
417
+ getStrangerInfo(user_id: id, no_cache?: boolean): Promise<StrangerInfo>;
418
+ getFriendList(): Promise<FriendInfo[]>;
419
+ getUnidirectionalFriendList(): Promise<UnidirectionalFriendInfo[]>;
420
+ getGroupInfo(group_id: id, no_cache?: boolean): Promise<GroupInfo>;
421
+ getGroupList(no_cache?: boolean): Promise<GroupInfo[]>;
422
+ getGroupMemberInfo(group_id: id, user_id: id, no_cache?: boolean): Promise<GroupMemberInfo>;
423
+ getGroupMemberList(group_id: id, no_cache?: boolean): Promise<GroupMemberInfo[]>;
424
+ getGroupHonorInfo(group_id: id, type: HonorType): Promise<HonorInfo>;
425
+ getGroupSystemMsg(): Promise<GroupSystemMessageInfo>;
426
+ getGroupFileSystemInfo(group_id: id): Promise<GroupFileSystemInfo>;
427
+ getGroupRootFiles(group_id: id): Promise<GroupFileList>;
428
+ getGroupFilesByFolder(group_id: id, folder_id: string): Promise<GroupFileList>;
429
+ getGroupFileUrl(group_id: id, file_id: string, busid: number): Promise<string>;
430
+ downloadFile(url: string, headers?: string | readonly string[], thread_count?: number): Promise<string>;
431
+ uploadPrivateFile(user_id: id, file: string, name: string): Promise<void>;
432
+ uploadGroupFile(group_id: id, file: string, name: string, folder?: string): Promise<void>;
433
+ createGroupFileFolder(group_id: id, folder_id: string, name: string): Promise<void>;
434
+ deleteGroupFolder(group_id: id, folder_id: string): Promise<void>;
435
+ deleteGroupFile(group_id: id, folder_id: string, file_id: string, busid: number): Promise<void>;
436
+ getOnlineClients(no_cache?: boolean): Promise<Device[]>;
437
+ checkUrlSafely(url: string): Promise<SafetyLevel>;
438
+ getModelShow(model: string): Promise<ModelVariant[]>;
439
+ setModelShow(model: string, model_show: string): Promise<void>;
440
+ getCookies(domain?: string): Promise<string>;
441
+ getCsrfToken(): Promise<number>;
442
+ getCredentials(domain?: string): Promise<Credentials>;
443
+ getRecord(file: string, out_format: RecordFormat, full_path?: boolean): Promise<RecordInfo>;
444
+ getImage(file: string): Promise<ImageInfo>;
445
+ canSendImage(): Promise<boolean>;
446
+ canSendRecord(): Promise<boolean>;
447
+ getStatus(): Promise<StatusInfo>;
448
+ getVersionInfo(): Promise<VersionInfo>;
449
+ setRestart(delay?: number): Promise<void>;
450
+ reloadEventFilter(): Promise<void>;
451
+ cleanCache(): Promise<void>;
452
+ getGuildServiceProfile(): Promise<GuildServiceProfile>;
453
+ getGuildList(): Promise<GuildInfo[]>;
454
+ getGuildMetaByGuest(guild_id: id): Promise<GuildMeta>;
455
+ getGuildChannelList(guild_id: id, no_cache: boolean): Promise<ChannelInfo[]>;
456
+ getGuildMemberList(guild_id: id, next_token?: string): Promise<GuildMemberListData>;
457
+ getGuildMemberProfile(guild_id: id, user_id: id): Promise<GuildMemberProfile>;
458
+ sendGuildChannelMsg(guild_id: id, channel_id: id, message: string | readonly CQCode[]): Promise<number>;
459
+ uploadImage(file: string): Promise<string>;
460
+ getPrivateFileUrl(user_id: id, file_id: string, file_hash?: string): Promise<string>;
461
+ moveGroupFile(group_id: id, file_id: string, parent_directory: string, target_directory: string): Promise<void>;
462
+ deleteGroupFileFolder(group_id: id, folder_id: string): Promise<void>;
463
+ renameGroupFileFolder(group_id: id, folder_id: string, new_folder_name: string): Promise<void>;
464
+ }
465
+ export declare class TimeoutError extends Error {
466
+ constructor(args: Dict, url: string);
467
+ }
468
+ export declare class Internal {
469
+ readonly bot: BaseBot;
470
+ _request?(action: string, params: Dict): Promise<Response>;
471
+ constructor(bot: BaseBot);
472
+ private _get;
473
+ setGroupAnonymousBan(group_id: string, meta: string | object, duration?: number): Promise<void>;
474
+ setGroupAnonymousBanAsync(group_id: string, meta: string | object, duration?: number): Promise<void>;
475
+ private static asyncPrefixes;
476
+ private static prepareMethod;
477
+ private static prepareArg;
478
+ static define(name: string, ...params: string[]): void;
479
+ static defineExtract(name: string, key: string, ...params: string[]): void;
480
+ }
481
+ export {};
package/lib/utils.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { Universal } from 'koishi';
2
+ import { BaseBot } from './bot';
3
+ import * as OneBot from './types';
4
+ export * from './types';
5
+ export declare const decodeUser: (user: OneBot.AccountInfo) => Universal.User;
6
+ export declare const decodeGuildMember: (user: OneBot.SenderInfo) => Universal.GuildMember;
7
+ export declare const adaptQQGuildMemberInfo: (user: OneBot.GuildMemberInfo) => Universal.GuildMember;
8
+ export declare const adaptQQGuildMemberProfile: (user: OneBot.GuildMemberProfile) => Universal.GuildMember;
9
+ export declare function adaptMessage(bot: BaseBot, data: OneBot.Message, message?: Universal.Message, payload?: Universal.MessageLike): Promise<Universal.Message>;
10
+ export declare const adaptGuild: (info: OneBot.GroupInfo | OneBot.GuildBaseInfo) => Universal.Guild;
11
+ export declare const adaptChannel: (info: OneBot.GroupInfo | OneBot.ChannelInfo) => Universal.Channel;
12
+ export declare function dispatchSession(bot: BaseBot, data: OneBot.Payload): Promise<void>;
13
+ export declare function adaptSession(bot: BaseBot, data: OneBot.Payload): Promise<import("koishi").Session<never, never, import("koishi").Context>>;
package/lib/ws.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ import { Adapter, Context, HTTP, Logger, Schema, Universal } from 'koishi';
2
+ import { WebSocketLayer } from '@koishijs/plugin-server';
3
+ import type { OneBotBot } from './bot';
4
+ export interface SharedConfig<T = 'ws' | 'ws-reverse'> {
5
+ protocol: T;
6
+ responseTimeout?: number;
7
+ }
8
+ export declare class WsClient<C extends Context = Context> extends Adapter.WsClient<C, OneBotBot<C, any>> {
9
+ accept(socket: Universal.WebSocket): void;
10
+ prepare(): any;
11
+ }
12
+ export declare namespace WsClient {
13
+ interface Options extends SharedConfig<'ws'>, HTTP.Config, Adapter.WsClientConfig {
14
+ endpoint?: string;
15
+ }
16
+ const Options: Schema<Options>;
17
+ }
18
+ export declare class WsServer<C extends Context> extends Adapter<C, OneBotBot<C, any>> {
19
+ static inject: string[];
20
+ logger: Logger;
21
+ wsServer?: WebSocketLayer;
22
+ constructor(ctx: C, bot: OneBotBot<C>);
23
+ disconnect(bot: OneBotBot<C>): Promise<void>;
24
+ }
25
+ export declare namespace WsServer {
26
+ interface Options extends SharedConfig<'ws-reverse'> {
27
+ path?: string;
28
+ }
29
+ const Options: Schema<Options>;
30
+ }
31
+ export declare function accept(socket: Universal.WebSocket, bot: OneBotBot<Context, any>): void;
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "koishi-plugin-adapter-onebot-multi",
3
+ "description": "奶龙bot定制版onebot适配器,支持自动负载均衡,适配器级黑名单/白名单,提供状态监测web",
4
+ "version": "0.0.1",
5
+ "main": "lib/index.js",
6
+ "typings": "lib/index.d.ts",
7
+ "files": [
8
+ "lib",
9
+ "dist"
10
+ ],
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "chatbot",
14
+ "koishi",
15
+ "plugin",
16
+ "adapter",
17
+ "onebot",
18
+ "multi",
19
+ "load-balance"
20
+ ],
21
+ "koishi": {
22
+ "description": {
23
+ "en": "OneBot Multi-Bot Adapter with Load Balancing",
24
+ "zh": "奶龙bot定制版onebot适配器,支持自动负载均衡,适配器级黑名单/白名单,提供状态监测web"
25
+ },
26
+ "service": {
27
+ "implements": [
28
+ "adapter"
29
+ ],
30
+ "required": [
31
+ "database"
32
+ ]
33
+ }
34
+ },
35
+ "peerDependencies": {
36
+ "koishi": "^4.18.6"
37
+ },
38
+ "devDependencies": {
39
+ "@koishijs/plugin-server": "^3.2.4",
40
+ "@types/koa": "^2.15.0",
41
+ "@types/koa__router": "^12.0.4",
42
+ "@types/node": "^22.7.5"
43
+ },
44
+ "dependencies": {
45
+ "@koa/router": "^13.1.0",
46
+ "koa": "^2.15.3",
47
+ "qface": "^1.4.1"
48
+ }
49
+ }
package/readme.md ADDED
@@ -0,0 +1,5 @@
1
+ # koishi-plugin-adapter-onebot-multi
2
+
3
+ [![npm](https://img.shields.io/npm/v/koishi-plugin-adapter-onebot-multi?style=flat-square)](https://www.npmjs.com/package/koishi-plugin-adapter-onebot-multi)
4
+
5
+ 奶龙bot定制版onebot适配器,支持自动负载均衡,适配器级黑名单/白名单,提供webui