@lcap/cli
Version:
utils for lcap
91 lines • 2.92 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPersonName = exports.postRobotTeam = exports.postRobotP2P = exports.fetchToken = void 0;
const axios_1 = __importDefault(require("axios"));
const constant_1 = require("./constant");
const utils_1 = require("../utils");
function fetchToken(token) {
return axios_1.default
.post(constant_1.PopoApi.GetToken, {
appId: token.id,
appSecret: token.secret,
}, {
headers: {
'Content-Type': 'application/json',
},
})
.then(({ data }) => {
return data.data.openAccessToken;
});
}
exports.fetchToken = fetchToken;
/** 对单人发消息 */
async function postRobotP2P(token, body) {
const data = {
sender: body.sender,
receiver: body.receiver,
message: (0, utils_1.formatMessage)(body.message),
};
return axios_1.default.post(constant_1.PopoApi.ToPerson, data, {
headers: {
'Open-Access-Token': token,
'Content-Type': 'application/json',
},
});
}
exports.postRobotP2P = postRobotP2P;
/** 群发消息 */
async function postRobotTeam(token, body) {
const data = {
sender: body.sender,
receiver: body.receiver,
message: (0, utils_1.formatMessage)(body.message),
atUids: [],
isAtAll: false,
};
if (data.message.includes('@所有人')) {
data.isAtAll = true;
}
const emails = (data.message.match(/@[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+(\.[a-zA-Z]+)+/g) ?? [])
.map((email) => email.substring(1));
if (emails && emails.length > 0) {
const names = await Promise.all(emails.map((email) => getPersonName(token, email)));
for (let i = 0; i < emails.length; i++) {
const email = emails[i];
const name = names[i];
if (email && name && typeof name === 'string') {
data.message = data.message.replace(`@${email}`, `@${name}`);
data.atUids.push(email);
}
}
}
return axios_1.default.post(constant_1.PopoApi.ToTeam, data, {
headers: {
'Open-Access-Token': token,
'Content-Type': 'application/json',
},
});
}
exports.postRobotTeam = postRobotTeam;
/**
* 通过邮箱反查用户名称
*/
async function getPersonName(token, email) {
return axios_1.default
.get(constant_1.PopoApi.GetPerson, {
params: {
email,
},
headers: {
'Open-Access-Token': token,
'Content-Type': 'application/json',
},
})
.then(({ data }) => data.data.name)
.catch(() => void 0);
}
exports.getPersonName = getPersonName;
//# sourceMappingURL=api.js.map