UNPKG

lemon-bot

Version:
160 lines 7.21 kB
"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