-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js
110 lines (94 loc) · 4.54 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
* 以下仅为用法示意,详情请参照文档:https://bot.q.qq.com/wiki/develop/nodesdk/
* 其中对官方逻辑扩展,添加了诸多功能,修复了许多问题
*/
const { createOpenAPI, createWebsocket, AvailableIntentsEventsEnum } = require('qq-bot-sdk');
const log4js = require("log4js"); // 仅在需要 logger 时使用
const testConfigWs = {
appID: '',
token: '',
intents: [AvailableIntentsEventsEnum.GROUP_AND_C2C_EVENT],
// // 以下是使用 log4js 自定义 logger 用法
// logger: log4js.configure({
// appenders: { console: { type: "console", layout: { type: "pattern", pattern: "%[[%d] [%f:%l:%o] [%p]%] %m", } } },
// categories: { default: { appenders: ["console"], level: "all", enableCallStack: true, } },
// }).getLogger(),
// // 以下是完全自定义 logger 用法
// logger: { info: () => { } },
};
const client = createOpenAPI(testConfigWs);
const ws = createWebsocket(testConfigWs);
ws.on('READY', (wsdata) => {
console.log('[READY] 事件接收 :', wsdata);
});
ws.on('ERROR', (data) => {
console.log('[ERROR] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.GUILDS, (data) => {
console.log('[GUILDS] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.GUILD_MEMBERS, (data) => {
console.log('[GUILD_MEMBERS] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.GUILD_MESSAGES, (data) => {
console.log('[GUILD_MESSAGES] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.GUILD_MESSAGE_REACTIONS, (data) => {
console.log('[GUILD_MESSAGE_REACTIONS] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.DIRECT_MESSAGE, (data) => {
console.log('[DIRECT_MESSAGE] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.INTERACTION, (data) => {
console.log('[INTERACTION] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.MESSAGE_AUDIT, (data) => {
console.log('[MESSAGE_AUDIT] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.FORUMS_EVENT, (data) => {
console.log('[FORUMS_EVENT] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.AUDIO_ACTION, (data) => {
console.log('[AUDIO_ACTION] 事件接收 :', data);
});
ws.on(AvailableIntentsEventsEnum.PUBLIC_GUILD_MESSAGES, async (data) => {
console.log('[PUBLIC_GUILD_MESSAGES] 事件接收 :', data);
// ===== 下方为发送消息接口,请按需取消注释 ======
// await client.messageApi.postMessage(data.msg.channel_id, {
// content: '测试信息'
// }); // 发送频道消息
});
ws.on(AvailableIntentsEventsEnum.GROUP_AND_C2C_EVENT, async (data) => {
console.log('[GROUP_AND_C2C_EVENT] 事件接收 :', data);
// ===== 下方为发送消息接口,请按需取消注释 ======
// await client.c2cApi.postMessage(data.msg.author.id, {
// content: "测试文本",
// msg_id: data.msg.id,
// });
// await client.groupApi.postMessage(data.msg.group_id, {
// content: "测试文本",
// msg_id: data.msg.id,
// msg_seq: Math.round(Math.random() * (1 << 30)), // 回复消息的序号,与 msg_id 联合使用,避免相同消息id回复重复发送,不填默认是1。相同的 msg_id + msg_seq 重复发送会失败。
// }).then(res => {
// console.log(res.data);
// }); // 发送群消息
// await client.groupApi.postFile(data.msg.group_id, {
// file_type: 1, // 参数: 1.图片 2.视频 3.语音 4.文件(暂不开放)// 文件格式: 图片png/jpg 视频mp4 语音silk
// url: "https://www.w3school.com.cn/i/eg_tulip.jpg",
// srv_send_msg: true, // 为 true 时,消息会直接发送到目标端,占用主动消息频次,超频会发送失败。
// }).then(res => {
// console.log(res.data);
// }); // 主动发送群文件
// const fileRes = await client.groupApi.postFile(data.msg.group_id, {
// file_type: 1, // 参数见上文
// url: "https://www.w3school.com.cn/i/eg_tulip.jpg",
// srv_send_msg: false, // 设置为 false 不发送到目标端,仅拿到文件信息
// }); // 拿到文件信息
// console.log(fileRes.data);
// await client.groupApi.postMessage(data.msg.group_id, {
// msg_type: 7, // 发送富媒体
// content: "这是图文混排消息", // 当且仅当文件为图片时,才能实现图文混排,其余类型文件 content 会被忽略
// media: { file_info: fileRes.data.file_info },
// msg_id: data.msg.id,
// }).then(res => console.log(res.data)); // 通过文件信息发送文件
});