node-karin 0.0.3
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/LICENSE +674 -0
- package/README.md +57 -0
- package/config/defSet/App.yaml +37 -0
- package/config/defSet/config.yaml +43 -0
- package/config/defSet/group.yaml +18 -0
- package/config/defSet/pm2.yaml +21 -0
- package/config/defSet/redis.yaml +18 -0
- package/config/defSet/server.yaml +42 -0
- package/config/view/App.yaml +74 -0
- package/config/view/config.yaml +100 -0
- package/config/view/group.yaml +62 -0
- package/config/view/pm2.yaml +41 -0
- package/config/view/redis.yaml +25 -0
- package/config/view/server.yaml +93 -0
- package/lib/adapter/onebot/onebot11.d.ts +430 -0
- package/lib/adapter/onebot/onebot11.js +1302 -0
- package/lib/core/init.d.ts +0 -0
- package/lib/core/init.js +4 -0
- package/lib/core/karin.d.ts +72 -0
- package/lib/core/karin.js +51 -0
- package/lib/core/listener.d.ts +121 -0
- package/lib/core/listener.js +188 -0
- package/lib/core/plugin.app.d.ts +15 -0
- package/lib/core/plugin.app.js +18 -0
- package/lib/core/plugin.d.ts +182 -0
- package/lib/core/plugin.js +138 -0
- package/lib/core/plugin.loader.d.ts +149 -0
- package/lib/core/plugin.loader.js +462 -0
- package/lib/core/server.d.ts +26 -0
- package/lib/core/server.js +213 -0
- package/lib/db/level.d.ts +20 -0
- package/lib/db/level.js +38 -0
- package/lib/db/redis.d.ts +41 -0
- package/lib/db/redis.js +137 -0
- package/lib/db/redis_level.d.ts +113 -0
- package/lib/db/redis_level.js +290 -0
- package/lib/event/event.d.ts +138 -0
- package/lib/event/event.handler.d.ts +29 -0
- package/lib/event/event.handler.js +142 -0
- package/lib/event/event.js +120 -0
- package/lib/event/message.d.ts +102 -0
- package/lib/event/message.handler.d.ts +25 -0
- package/lib/event/message.handler.js +240 -0
- package/lib/event/message.js +70 -0
- package/lib/event/notice.d.ts +49 -0
- package/lib/event/notice.js +15 -0
- package/lib/event/request.d.ts +49 -0
- package/lib/event/request.js +15 -0
- package/lib/event/review.handler.d.ts +54 -0
- package/lib/event/review.handler.js +382 -0
- package/lib/index.d.ts +23 -0
- package/lib/index.js +40 -0
- package/lib/renderer/app.d.ts +53 -0
- package/lib/renderer/app.js +93 -0
- package/lib/renderer/base.d.ts +30 -0
- package/lib/renderer/base.js +71 -0
- package/lib/renderer/client.d.ts +30 -0
- package/lib/renderer/client.js +159 -0
- package/lib/renderer/http.d.ts +19 -0
- package/lib/renderer/http.js +51 -0
- package/lib/renderer/server.d.ts +42 -0
- package/lib/renderer/server.js +112 -0
- package/lib/renderer/wormhole.d.ts +1 -0
- package/lib/renderer/wormhole.js +154 -0
- package/lib/types/adapter.d.ts +575 -0
- package/lib/types/adapter.js +1 -0
- package/lib/types/config.d.ts +327 -0
- package/lib/types/config.js +1 -0
- package/lib/types/element.d.ts +576 -0
- package/lib/types/element.js +1 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/index.js +8 -0
- package/lib/types/logger.d.ts +109 -0
- package/lib/types/logger.js +1 -0
- package/lib/types/onebots11.d.ts +1371 -0
- package/lib/types/onebots11.js +1 -0
- package/lib/types/plugin.d.ts +282 -0
- package/lib/types/plugin.js +1 -0
- package/lib/types/render.d.ts +111 -0
- package/lib/types/render.js +1 -0
- package/lib/types/reply.d.ts +40 -0
- package/lib/types/reply.js +1 -0
- package/lib/types/types.d.ts +898 -0
- package/lib/types/types.js +1 -0
- package/lib/utils/YamlEditor.d.ts +62 -0
- package/lib/utils/YamlEditor.js +208 -0
- package/lib/utils/button.d.ts +49 -0
- package/lib/utils/button.js +79 -0
- package/lib/utils/common.d.ts +123 -0
- package/lib/utils/common.js +413 -0
- package/lib/utils/config.d.ts +72 -0
- package/lib/utils/config.js +254 -0
- package/lib/utils/exec.d.ts +22 -0
- package/lib/utils/exec.js +36 -0
- package/lib/utils/ffmpeg.d.ts +12 -0
- package/lib/utils/ffmpeg.js +25 -0
- package/lib/utils/handler.d.ts +76 -0
- package/lib/utils/handler.js +102 -0
- package/lib/utils/logger.d.ts +3 -0
- package/lib/utils/logger.js +104 -0
- package/lib/utils/segment.d.ts +276 -0
- package/lib/utils/segment.js +448 -0
- package/lib/utils/update.d.ts +69 -0
- package/lib/utils/update.js +151 -0
- package/lib/utils/updateVersion.d.ts +33 -0
- package/lib/utils/updateVersion.js +145 -0
- package/package.json +92 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Reply, replyCallback } from '../types/reply.js';
|
|
2
|
+
import { KarinAdapter } from '../types/adapter.js';
|
|
3
|
+
import { Event, contact, Sender, SubEventForEvent } from '../types/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* - 事件基类 所有事件都继承自此类并且需要实现此类的所有属性
|
|
6
|
+
* @class KarinEvent
|
|
7
|
+
*/
|
|
8
|
+
export declare class KarinEvent {
|
|
9
|
+
/**
|
|
10
|
+
* - 机器人ID 请尽量使用UID
|
|
11
|
+
*/
|
|
12
|
+
self_id: string;
|
|
13
|
+
/**
|
|
14
|
+
* - 用户ID
|
|
15
|
+
*/
|
|
16
|
+
user_id: string;
|
|
17
|
+
/**
|
|
18
|
+
* - 群ID 仅在群聊中存在
|
|
19
|
+
* @default ''
|
|
20
|
+
*/
|
|
21
|
+
group_id: string;
|
|
22
|
+
/**
|
|
23
|
+
* - 事件类型
|
|
24
|
+
*/
|
|
25
|
+
event: Event;
|
|
26
|
+
/**
|
|
27
|
+
* - 事件子类型
|
|
28
|
+
*/
|
|
29
|
+
sub_event: SubEventForEvent<Event>;
|
|
30
|
+
/**
|
|
31
|
+
* - 事件ID
|
|
32
|
+
*/
|
|
33
|
+
event_id: string;
|
|
34
|
+
/**
|
|
35
|
+
* - 事件触发时间戳
|
|
36
|
+
*/
|
|
37
|
+
time: number;
|
|
38
|
+
/**
|
|
39
|
+
* - 事件联系人信息
|
|
40
|
+
*/
|
|
41
|
+
contact: contact;
|
|
42
|
+
/**
|
|
43
|
+
* - 事件发送者信息
|
|
44
|
+
*/
|
|
45
|
+
sender: Sender;
|
|
46
|
+
/**
|
|
47
|
+
* - 是否为主人
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
isMaster: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* - 是否为管理员
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
isAdmin: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* - 是否为私聊
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
isPrivate: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* - 是否为群聊
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
isGroup: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* - 是否为频道
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
isGuild: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* - 是否为群临时会话
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
isGroupTemp: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* - 日志函数字符串
|
|
78
|
+
*/
|
|
79
|
+
logFnc: string;
|
|
80
|
+
/**
|
|
81
|
+
* - 日志用户字符串
|
|
82
|
+
*/
|
|
83
|
+
logText: string;
|
|
84
|
+
/**
|
|
85
|
+
* - 存储器 由开发者自行调用
|
|
86
|
+
*/
|
|
87
|
+
store: Map<string, any>;
|
|
88
|
+
/**
|
|
89
|
+
* - 回复函数
|
|
90
|
+
*/
|
|
91
|
+
reply: Reply;
|
|
92
|
+
/**
|
|
93
|
+
* - 回复函数 由适配器实现,开发者不应该直接调用
|
|
94
|
+
*/
|
|
95
|
+
replyCallback: replyCallback;
|
|
96
|
+
/**
|
|
97
|
+
* - bot实现
|
|
98
|
+
*/
|
|
99
|
+
bot: KarinAdapter;
|
|
100
|
+
constructor({ event, self_id, user_id, group_id, time, contact, sender, sub_event, event_id, }: {
|
|
101
|
+
/**
|
|
102
|
+
* - 事件类型
|
|
103
|
+
*/
|
|
104
|
+
event: Event;
|
|
105
|
+
/**
|
|
106
|
+
* - 机器人ID 请尽量使用UID
|
|
107
|
+
*/
|
|
108
|
+
self_id: string;
|
|
109
|
+
/**
|
|
110
|
+
* - 用户ID
|
|
111
|
+
*/
|
|
112
|
+
user_id: string;
|
|
113
|
+
/**
|
|
114
|
+
* - 群ID 仅在群聊中需要提供
|
|
115
|
+
*/
|
|
116
|
+
group_id?: string;
|
|
117
|
+
/**
|
|
118
|
+
* - 事件触发时间戳
|
|
119
|
+
*/
|
|
120
|
+
time: number;
|
|
121
|
+
/**
|
|
122
|
+
* - 事件联系人信息
|
|
123
|
+
*/
|
|
124
|
+
contact: contact;
|
|
125
|
+
/**
|
|
126
|
+
* - 事件发送者信息
|
|
127
|
+
*/
|
|
128
|
+
sender: Sender;
|
|
129
|
+
/**
|
|
130
|
+
* - 事件子类型
|
|
131
|
+
*/
|
|
132
|
+
sub_event: SubEventForEvent<Event>;
|
|
133
|
+
/**
|
|
134
|
+
* - 事件ID
|
|
135
|
+
*/
|
|
136
|
+
event_id: string;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GroupCfg } from '../types/config.js';
|
|
2
|
+
import { KarinMessage } from './message.js';
|
|
3
|
+
import { KarinNotice } from './notice.js';
|
|
4
|
+
import { KarinRequest } from './request.js';
|
|
5
|
+
import { Event, Permission, SubEvent } from '../types/types.js';
|
|
6
|
+
export default class EventHandler {
|
|
7
|
+
e: KarinMessage | KarinNotice | KarinRequest;
|
|
8
|
+
config: GroupCfg | {};
|
|
9
|
+
/**
|
|
10
|
+
* 处理事件,加入自定义字段
|
|
11
|
+
*/
|
|
12
|
+
constructor(e: KarinMessage | KarinNotice | KarinRequest);
|
|
13
|
+
/**
|
|
14
|
+
* 事件处理
|
|
15
|
+
*/
|
|
16
|
+
review(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 根据事件类型过滤事件
|
|
19
|
+
*/
|
|
20
|
+
filtEvent(event: Event | `${Event}.${SubEvent}`): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 判断权限
|
|
23
|
+
*/
|
|
24
|
+
filterPermission(permission: Permission | undefined): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 快速回复
|
|
27
|
+
*/
|
|
28
|
+
reply(): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import Review from './review.handler.js'
|
|
2
|
+
import config from '../utils/config.js'
|
|
3
|
+
import logger from '../utils/logger.js'
|
|
4
|
+
import Common from '../utils/common.js'
|
|
5
|
+
import Segment from '../utils/segment.js'
|
|
6
|
+
import Listeners from '../core/listener.js'
|
|
7
|
+
export default class EventHandler {
|
|
8
|
+
e
|
|
9
|
+
config
|
|
10
|
+
/**
|
|
11
|
+
* 处理事件,加入自定义字段
|
|
12
|
+
*/
|
|
13
|
+
constructor (e) {
|
|
14
|
+
this.e = e
|
|
15
|
+
this.config = {}
|
|
16
|
+
/** 加入e.bot */
|
|
17
|
+
Object.defineProperty(this.e, 'bot', { value: Listeners.getBot(this.e.self_id) })
|
|
18
|
+
if (this.e.group_id) { this.config = config.group(this.e.group_id) }
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 事件处理
|
|
23
|
+
*/
|
|
24
|
+
review () {
|
|
25
|
+
/** 检查CD */
|
|
26
|
+
if (!Review.CD(this.e, this.config)) {
|
|
27
|
+
logger.debug('[消息拦截] 正在冷却中')
|
|
28
|
+
return true
|
|
29
|
+
}
|
|
30
|
+
/** 检查群聊黑白名单 */
|
|
31
|
+
if (!Review.GroupEnable(this.e)) {
|
|
32
|
+
logger.debug('[消息拦截] 未通过群聊黑白名单检查')
|
|
33
|
+
return true
|
|
34
|
+
}
|
|
35
|
+
/** 检查用户黑白名单 */
|
|
36
|
+
if (!Review.UserEnable(this.e)) {
|
|
37
|
+
logger.debug('[消息拦截] 未通过用户黑白名单检查')
|
|
38
|
+
return true
|
|
39
|
+
}
|
|
40
|
+
/** 都通过了 */
|
|
41
|
+
return false
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 根据事件类型过滤事件
|
|
46
|
+
*/
|
|
47
|
+
filtEvent (event) {
|
|
48
|
+
/** 事件映射表 */
|
|
49
|
+
const eventMap = {
|
|
50
|
+
message: () => `message.${this.e.sub_event}`,
|
|
51
|
+
message_sent: () => `message_sent.${this.e.sub_event}`,
|
|
52
|
+
meta_event: () => `message.${this.e.sub_event}`,
|
|
53
|
+
notice: () => `notice.${this.e.sub_event}`,
|
|
54
|
+
request: () => `request.${this.e.sub_event}`,
|
|
55
|
+
}
|
|
56
|
+
const eventType = eventMap[this.e.event]()
|
|
57
|
+
return eventType.includes(event)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 判断权限
|
|
62
|
+
*/
|
|
63
|
+
filterPermission (permission) {
|
|
64
|
+
if (!permission || permission === 'all') { return true }
|
|
65
|
+
if (permission === 'master') {
|
|
66
|
+
if (!this.e.isMaster) {
|
|
67
|
+
this.e.reply('暂无权限,只有主人才能操作')
|
|
68
|
+
return false
|
|
69
|
+
}
|
|
70
|
+
return true
|
|
71
|
+
}
|
|
72
|
+
if (permission === 'admin') {
|
|
73
|
+
if (!this.e.isMaster && !this.e.isAdmin) {
|
|
74
|
+
this.e.reply('暂无权限,只有管理员才能操作')
|
|
75
|
+
return false
|
|
76
|
+
}
|
|
77
|
+
return true
|
|
78
|
+
}
|
|
79
|
+
if (this.e.isGroup) {
|
|
80
|
+
const list = {
|
|
81
|
+
'group.owner': {
|
|
82
|
+
role: 'owner',
|
|
83
|
+
name: '群主',
|
|
84
|
+
},
|
|
85
|
+
'group.admin': {
|
|
86
|
+
role: 'admin',
|
|
87
|
+
name: '群管理员',
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
const role = list[permission]
|
|
91
|
+
if (role && this.e.sender?.role !== role.role) {
|
|
92
|
+
this.e.reply(`暂无权限,只有${role.name}才能操作`)
|
|
93
|
+
return false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return true
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* 快速回复
|
|
101
|
+
*/
|
|
102
|
+
reply () {
|
|
103
|
+
/**
|
|
104
|
+
* 快速回复
|
|
105
|
+
* @param elements 回复内容
|
|
106
|
+
* @param options 回复选项
|
|
107
|
+
*/
|
|
108
|
+
this.e.reply = async (elements = '', options = { reply: false, recallMsg: 0, at: false, retry_count: 1 }) => {
|
|
109
|
+
const message = Common.makeMessage(elements)
|
|
110
|
+
const { reply = false, recallMsg = 0, at, retry_count = 1 } = options
|
|
111
|
+
/** 加入at */
|
|
112
|
+
if (at && this.e.isGroup) { message.unshift(Segment.at(this.e.user_id)) }
|
|
113
|
+
/** 加入引用回复 */
|
|
114
|
+
if (reply && 'message_id' in this.e) { message.unshift(Segment.reply(this.e.message_id)) }
|
|
115
|
+
/** 先发 提升速度 */
|
|
116
|
+
const result = this.e.replyCallback(message, retry_count)
|
|
117
|
+
const ReplyLog = Common.makeMessageLog(message)
|
|
118
|
+
if (this.e.isGroup) {
|
|
119
|
+
Review.GroupMsgPrint(this.e) && logger.bot('info', this.e.self_id, `${logger.green(`Send Group ${this.e.group_id}: `)}${ReplyLog}`)
|
|
120
|
+
} else {
|
|
121
|
+
logger.bot('info', this.e.self_id, `${logger.green(`Send private ${this.e.user_id}: `)}${ReplyLog}`)
|
|
122
|
+
}
|
|
123
|
+
let message_id = ''
|
|
124
|
+
try {
|
|
125
|
+
Listeners.emit('karin:count:send', 1)
|
|
126
|
+
/** 取结果 */
|
|
127
|
+
const Res = await result
|
|
128
|
+
message_id = Res.message_id || ''
|
|
129
|
+
logger.bot('debug', this.e.self_id, `回复消息结果:${JSON.stringify(result)}`)
|
|
130
|
+
} catch (error) {
|
|
131
|
+
logger.bot('error', this.e.self_id, `回复消息失败:${ReplyLog}`)
|
|
132
|
+
logger.bot('error', this.e.self_id, error.stack || error.message || JSON.stringify(error))
|
|
133
|
+
}
|
|
134
|
+
/** 快速撤回 */
|
|
135
|
+
if (recallMsg > 0 && message_id) {
|
|
136
|
+
setTimeout(() => this.e.bot.RecallMessage(this.e.contact, message_id), recallMsg * 1000)
|
|
137
|
+
}
|
|
138
|
+
return result
|
|
139
|
+
}
|
|
140
|
+
Object.freeze(this.e.reply)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* - 事件基类 所有事件都继承自此类并且需要实现此类的所有属性
|
|
3
|
+
* @class KarinEvent
|
|
4
|
+
*/
|
|
5
|
+
export class KarinEvent {
|
|
6
|
+
/**
|
|
7
|
+
* - 机器人ID 请尽量使用UID
|
|
8
|
+
*/
|
|
9
|
+
self_id
|
|
10
|
+
/**
|
|
11
|
+
* - 用户ID
|
|
12
|
+
*/
|
|
13
|
+
user_id
|
|
14
|
+
/**
|
|
15
|
+
* - 群ID 仅在群聊中存在
|
|
16
|
+
* @default ''
|
|
17
|
+
*/
|
|
18
|
+
group_id
|
|
19
|
+
/**
|
|
20
|
+
* - 事件类型
|
|
21
|
+
*/
|
|
22
|
+
event
|
|
23
|
+
/**
|
|
24
|
+
* - 事件子类型
|
|
25
|
+
*/
|
|
26
|
+
sub_event
|
|
27
|
+
/**
|
|
28
|
+
* - 事件ID
|
|
29
|
+
*/
|
|
30
|
+
event_id
|
|
31
|
+
/**
|
|
32
|
+
* - 事件触发时间戳
|
|
33
|
+
*/
|
|
34
|
+
time
|
|
35
|
+
/**
|
|
36
|
+
* - 事件联系人信息
|
|
37
|
+
*/
|
|
38
|
+
contact
|
|
39
|
+
/**
|
|
40
|
+
* - 事件发送者信息
|
|
41
|
+
*/
|
|
42
|
+
sender
|
|
43
|
+
/**
|
|
44
|
+
* - 是否为主人
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
isMaster
|
|
48
|
+
/**
|
|
49
|
+
* - 是否为管理员
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
isAdmin
|
|
53
|
+
/**
|
|
54
|
+
* - 是否为私聊
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
isPrivate
|
|
58
|
+
/**
|
|
59
|
+
* - 是否为群聊
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
isGroup
|
|
63
|
+
/**
|
|
64
|
+
* - 是否为频道
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
67
|
+
isGuild
|
|
68
|
+
/**
|
|
69
|
+
* - 是否为群临时会话
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
isGroupTemp
|
|
73
|
+
/**
|
|
74
|
+
* - 日志函数字符串
|
|
75
|
+
*/
|
|
76
|
+
logFnc
|
|
77
|
+
/**
|
|
78
|
+
* - 日志用户字符串
|
|
79
|
+
*/
|
|
80
|
+
logText
|
|
81
|
+
/**
|
|
82
|
+
* - 存储器 由开发者自行调用
|
|
83
|
+
*/
|
|
84
|
+
store
|
|
85
|
+
/**
|
|
86
|
+
* - 回复函数
|
|
87
|
+
*/
|
|
88
|
+
reply
|
|
89
|
+
/**
|
|
90
|
+
* - 回复函数 由适配器实现,开发者不应该直接调用
|
|
91
|
+
*/
|
|
92
|
+
replyCallback
|
|
93
|
+
/**
|
|
94
|
+
* - bot实现
|
|
95
|
+
*/
|
|
96
|
+
bot
|
|
97
|
+
constructor ({ event, self_id, user_id, group_id = '', time, contact, sender, sub_event, event_id }) {
|
|
98
|
+
this.self_id = self_id
|
|
99
|
+
this.user_id = user_id
|
|
100
|
+
this.group_id = group_id
|
|
101
|
+
this.time = time
|
|
102
|
+
this.event = event
|
|
103
|
+
this.event_id = event_id
|
|
104
|
+
this.contact = contact
|
|
105
|
+
this.sender = sender
|
|
106
|
+
this.sub_event = sub_event
|
|
107
|
+
this.isMaster = false
|
|
108
|
+
this.isAdmin = false
|
|
109
|
+
this.isPrivate = false
|
|
110
|
+
this.isGroup = false
|
|
111
|
+
this.isGuild = false
|
|
112
|
+
this.isGroupTemp = false
|
|
113
|
+
this.logFnc = ''
|
|
114
|
+
this.logText = ''
|
|
115
|
+
this.store = new Map()
|
|
116
|
+
this.reply = (elements, options) => Promise.resolve({ message_id: '' })
|
|
117
|
+
this.replyCallback = (elements, options) => Promise.resolve({ message_id: '' })
|
|
118
|
+
this.bot = {}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { KarinEvent } from './event.js';
|
|
2
|
+
import { KarinElement } from '../types/element.js';
|
|
3
|
+
import { contact, Sender } from '../types/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* - 消息事件基类
|
|
6
|
+
*/
|
|
7
|
+
export declare class KarinMessage extends KarinEvent {
|
|
8
|
+
constructor({ event, self_id, user_id, time, message_id, message_seq, raw_message, contact, sender, elements, group_id, }: {
|
|
9
|
+
/**
|
|
10
|
+
* - 事件类型
|
|
11
|
+
*/
|
|
12
|
+
event: 'message' | 'message_sent';
|
|
13
|
+
/**
|
|
14
|
+
* - 机器人ID 请尽量使用UID
|
|
15
|
+
*/
|
|
16
|
+
self_id: string;
|
|
17
|
+
/**
|
|
18
|
+
* - 用户ID
|
|
19
|
+
*/
|
|
20
|
+
user_id: string;
|
|
21
|
+
/**
|
|
22
|
+
* - 事件触发时间戳
|
|
23
|
+
*/
|
|
24
|
+
time: number;
|
|
25
|
+
/**
|
|
26
|
+
* - 消息ID
|
|
27
|
+
*/
|
|
28
|
+
message_id: string;
|
|
29
|
+
/**
|
|
30
|
+
* - 消息序列号
|
|
31
|
+
*/
|
|
32
|
+
message_seq?: string;
|
|
33
|
+
/**
|
|
34
|
+
* - 原始消息文本
|
|
35
|
+
*/
|
|
36
|
+
raw_message: string;
|
|
37
|
+
/**
|
|
38
|
+
* 事件联系人信息
|
|
39
|
+
*/
|
|
40
|
+
contact: contact;
|
|
41
|
+
/**
|
|
42
|
+
* 事件发送者信息
|
|
43
|
+
*/
|
|
44
|
+
sender: Sender;
|
|
45
|
+
/**
|
|
46
|
+
* 消息体元素
|
|
47
|
+
*/
|
|
48
|
+
elements: Array<KarinElement>;
|
|
49
|
+
/**
|
|
50
|
+
* 群ID
|
|
51
|
+
*/
|
|
52
|
+
group_id: string;
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* - 消息ID
|
|
56
|
+
*/
|
|
57
|
+
message_id: string;
|
|
58
|
+
/**
|
|
59
|
+
* - 消息序列号
|
|
60
|
+
*/
|
|
61
|
+
message_seq?: string;
|
|
62
|
+
/**
|
|
63
|
+
* - 原始消息文本
|
|
64
|
+
*/
|
|
65
|
+
raw_message: string;
|
|
66
|
+
/**
|
|
67
|
+
* - 消息体元素
|
|
68
|
+
*/
|
|
69
|
+
elements: Array<KarinElement>;
|
|
70
|
+
/**
|
|
71
|
+
* - 框架处理后的文本
|
|
72
|
+
*/
|
|
73
|
+
msg: string;
|
|
74
|
+
/**
|
|
75
|
+
* - 图片数组
|
|
76
|
+
*/
|
|
77
|
+
image: Array<string>;
|
|
78
|
+
/**
|
|
79
|
+
* - AT数组
|
|
80
|
+
*/
|
|
81
|
+
at: Array<string>;
|
|
82
|
+
/**
|
|
83
|
+
* - 是否AT机器人
|
|
84
|
+
*/
|
|
85
|
+
atBot: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* - 是否AT全体
|
|
88
|
+
*/
|
|
89
|
+
atAll: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* - 文件元素
|
|
92
|
+
*/
|
|
93
|
+
file: object;
|
|
94
|
+
/**
|
|
95
|
+
* - 引用消息ID
|
|
96
|
+
*/
|
|
97
|
+
reply_id: string;
|
|
98
|
+
/**
|
|
99
|
+
* - 消息别名
|
|
100
|
+
*/
|
|
101
|
+
alias: string;
|
|
102
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { KarinMessage } from './message.js';
|
|
2
|
+
import EventHandler from './event.handler.js';
|
|
3
|
+
/**
|
|
4
|
+
* 消息事件
|
|
5
|
+
*/
|
|
6
|
+
export default class Message extends EventHandler {
|
|
7
|
+
e: KarinMessage;
|
|
8
|
+
/**
|
|
9
|
+
* - 是否打印群消息日志
|
|
10
|
+
*/
|
|
11
|
+
GroupMsgPrint: boolean;
|
|
12
|
+
constructor(e: KarinMessage);
|
|
13
|
+
/**
|
|
14
|
+
* 处理消息
|
|
15
|
+
*/
|
|
16
|
+
deal(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* 处理消息体
|
|
19
|
+
*/
|
|
20
|
+
dealMsg(): void;
|
|
21
|
+
/**
|
|
22
|
+
* 处理上下文
|
|
23
|
+
*/
|
|
24
|
+
context(): Promise<boolean>;
|
|
25
|
+
}
|