mirror of
https://github.com/yml2213/javascript.git
synced 2026-10-23 01:48:48 +08:00
160 lines
7.0 KiB
JavaScript
160 lines
7.0 KiB
JavaScript
"use strict";
|
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
});
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const node_fetch_1 = require("node-fetch");
|
|
const utils_1 = require("@xhmm/utils");
|
|
var APIList;
|
|
(function (APIList) {
|
|
APIList["send_private_msg"] = "send_private_msg";
|
|
APIList["send_group_msg"] = "send_group_msg";
|
|
APIList["send_msg"] = "send_msg";
|
|
APIList["delete_msg"] = "delete_msg";
|
|
APIList["send_like"] = "send_like";
|
|
APIList["set_group_kick"] = "set_group_kick";
|
|
APIList["set_group_ban"] = "set_group_ban";
|
|
APIList["set_group_anonymous_ban"] = "set_group_anonymous_ban";
|
|
APIList["set_group_whole_ban"] = "set_group_whole_ban";
|
|
APIList["set_group_admin"] = "set_group_admin";
|
|
APIList["set_group_anonymous"] = "set_group_anonymous";
|
|
APIList["set_group_card"] = "set_group_card";
|
|
APIList["set_group_leave"] = "set_group_leave";
|
|
APIList["set_group_special_title"] = "set_group_special_title";
|
|
APIList["set_friend_add_request"] = "set_friend_add_request";
|
|
APIList["set_group_add_request"] = "set_group_add_request";
|
|
APIList["get_login_info"] = "get_login_info";
|
|
APIList["get_stranger_info"] = "get_stranger_info";
|
|
APIList["get_friend_list"] = "get_friend_list";
|
|
APIList["get_group_list"] = "get_group_list";
|
|
APIList["get_group_info"] = "get_group_info";
|
|
APIList["get_group_member_info"] = "get_group_member_info";
|
|
APIList["get_group_member_list"] = "get_group_member_list";
|
|
APIList["get_cookies"] = "get_cookies";
|
|
APIList["get_csrf_token"] = "get_csrf_token";
|
|
APIList["get_credentials"] = "get_credentials";
|
|
APIList["get_record"] = "get_record";
|
|
APIList["get_image"] = "get_image";
|
|
APIList["can_send_image"] = "can_send_image";
|
|
APIList["can_send_record"] = "can_send_record";
|
|
APIList["get_status"] = "get_status";
|
|
APIList["get_version_info"] = "get_version_info";
|
|
APIList["set_restart_plugin"] = "set_restart_plugin";
|
|
APIList["clean_data_dir"] = "clean_data_dir";
|
|
APIList["clean_plugin_log"] = "clean_plugin_log";
|
|
})(APIList || (APIList = {}));
|
|
class HttpPluginError extends Error {
|
|
constructor(APIName, message, retcode) {
|
|
if (retcode)
|
|
super(`${APIName} failed, ${message}(${retcode})`);
|
|
else
|
|
super(`${APIName} failed, ${message}`);
|
|
this.name = this.constructor.name;
|
|
this.APIName = APIName;
|
|
if (retcode)
|
|
this.retcode = retcode;
|
|
Error.captureStackTrace(this, this.constructor);
|
|
}
|
|
}
|
|
class HttpPlugin {
|
|
constructor(endpoint, config) {
|
|
this.endpoint = endpoint;
|
|
this.config = config || {};
|
|
}
|
|
sendPrivateMsg(personQQ, message, escape = false) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.send_private_msg, {
|
|
user_id: personQQ,
|
|
message,
|
|
auto_escape: escape,
|
|
});
|
|
});
|
|
}
|
|
sendGroupMsg(groupQQ, message, escape = false) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.send_group_msg, {
|
|
group_id: groupQQ,
|
|
message,
|
|
auto_escape: escape,
|
|
});
|
|
});
|
|
}
|
|
sendMsg(numbers, message, escape = false) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.send_msg, {
|
|
user_id: numbers.user,
|
|
group_id: numbers.group,
|
|
message,
|
|
auto_escape: escape,
|
|
});
|
|
});
|
|
}
|
|
getGroupList() {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.get_group_list);
|
|
});
|
|
}
|
|
getGroupMemberList(groupQQ) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.get_group_member_list, {
|
|
group_id: groupQQ,
|
|
});
|
|
});
|
|
}
|
|
downloadImage(cqFile) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return yield this.getResponseData(APIList.get_image, {
|
|
file: cqFile,
|
|
});
|
|
});
|
|
}
|
|
getResponseData(api, data) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
try {
|
|
const response = yield node_fetch_1.default(`${this.endpoint}/${api}`, {
|
|
method: 'POST',
|
|
headers: utils_1.conditionalObjectMerge({
|
|
'Content-Type': 'application/json'
|
|
}, [
|
|
this.config.accessToken !== undefined,
|
|
{
|
|
Authorization: `Bearer ${this.config.accessToken}`,
|
|
},
|
|
]),
|
|
body: JSON.stringify(data)
|
|
});
|
|
if (response.status === 200) {
|
|
const { status, retcode, data } = yield response.json();
|
|
if (status === 'ok' && retcode === 0)
|
|
return data;
|
|
let reason = `请前往 https://cqhttp.cc/docs/#/API?id=响应说明 或 酷Q运行日志(不是http插件) 根据状态码${retcode}查询原因`;
|
|
if (status === 'failed') {
|
|
if (retcode === -23)
|
|
reason = `找不到与目标QQ的关系,消息无法发送`;
|
|
if (retcode === -34)
|
|
reason = '机器人被禁言了';
|
|
if (retcode === -38)
|
|
reason = '接收者帐号错误或帐号不在该群组内';
|
|
if (retcode === 100)
|
|
reason = '参数缺失或参数无效(比如QQ号小于0、message字段无内容等)';
|
|
}
|
|
return Promise.reject(new HttpPluginError(api, reason, retcode));
|
|
}
|
|
else {
|
|
return Promise.reject(new HttpPluginError(api, `HTTP响应码是${response.status}`));
|
|
}
|
|
}
|
|
catch (e) {
|
|
throw new HttpPluginError(api, e.message);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
exports.HttpPlugin = HttpPlugin;
|
|
//# sourceMappingURL=HttpPlugin.js.map
|