mirai-js
Version:
QQ robot development framework based on Mirai-api-http.
77 lines (65 loc) • 1.81 kB
JavaScript
;
const {
errCodeMap
} = require('../util/errCode');
const axios = require('axios');
const {
URL
} = require('../polyfill/URL');
const errorHandler = require('../util/errorHandler');
const path = require('path');
const {
isBrowserEnv
} = require('../util/isBrowserEnv');
const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
/**
* FIXME: mirai-core 的问题,有时候收不到 MemberJoinRequestEvent 事件
* 该功能未经测试
* @description 响应好友请求
* @param {string} baseUrl mirai-api-http server 的地址
* @param {string} sessionKey 会话标识
* @param {number} eventId 响应申请事件的标识
* @param {number} fromId 事件对应申请人QQ号
* @param {number} groupId 事件对应申请人的群号
* @param {number} operate 响应的操作类型
* @param {string} message 回复的信息
* @returns {void}
*/
module.exports = async ({
baseUrl,
sessionKey,
eventId,
fromId,
groupId,
operate,
message = ''
}) => {
try {
// 拼接 url
const url = new URL('/resp/memberJoinRequestEvent', baseUrl).toString(); // 请求
const responseData = await axios.post(url, {
sessionKey,
eventId,
fromId,
groupId,
operate,
message
});
try {
var {
data: {
code,
msg: serverMessage
}
} = responseData;
} catch (error) {
throw new Error('请求返回格式出错,请检查 mirai-console');
} // 抛出 mirai 的异常,到 catch 中处理后再抛出
if (code in errCodeMap) {
throw new Error(serverMessage);
}
} catch (error) {
console.error(`mirai-js: error ${locationStr}`);
errorHandler(error);
}
};