wechaty-puppet-wechat4u
Version:
Wechat4u Puppet for Wechaty
143 lines • 5.65 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const is_type_js_1 = require("../utils/is-type.js");
const event_room_leave_js_1 = require("./event-room-leave.js");
const runner_js_1 = require("../utils/runner.js");
const web_schemas_js_1 = require("../../web-schemas.js");
const YOU_INVITE_OTHER_REGEX_LIST = [
/^你邀请"(.+)"加入了群聊 {2}/,
/^You invited (.+) to the group chat/,
];
const OTHER_INVITE_YOU_REGEX_LIST = [
/^"([^"]+?)"邀请你加入了群聊,群聊参与人还有:(.+)/,
/^(.+) invited you to a group chat with (.+)/,
];
const OTHER_INVITE_YOU_AND_OTHER_REGEX_LIST = [
/^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
/^(.+?) invited you and (.+?) to (the|a) group chat/,
];
const OTHER_INVITE_OTHER_REGEX_LIST = [
/^"(.+)"邀请"(.+)"加入了群聊/,
/^(.+?) invited (.+?) to (the|a) group chat/,
];
const OTHER_JOIN_VIA_YOUR_QRCODE_REGEX_LIST = [
/^" ?(.+)"通过扫描你分享的二维码加入群聊/,
/^" ?(.+)" joined group chat via the QR code you shared/,
];
const OTHER_JOIN_VIA_OTHER_QRCODE_REGEX_LIST = [
/^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
/^"(.+)" joined the group chat via the QR Code shared by "(.+)"/,
];
exports.default = async (puppet, message) => {
const roomId = message.FromUserName;
if (!(0, is_type_js_1.isRoomId)(roomId)) {
return null;
}
const timestamp = message.CreateTime;
if (![web_schemas_js_1.WebMessageType.SYS].includes(message.MsgType)) {
return null;
}
/**
* 1. You Invite Other to join the Room
* (including other join var qr code you shared)
* /^你邀请"(.+)"加入了群聊 {2}\$revoke\$/,
* /^" ?(.+)"通过扫描你分享的二维码加入群聊/,
*/
const youInviteOther = async () => {
let matches = null;
[...YOU_INVITE_OTHER_REGEX_LIST, ...OTHER_JOIN_VIA_YOUR_QRCODE_REGEX_LIST].some((re) => !!(matches = message.Content.match(re)));
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (matches) {
const inviteName = matches[1];
const inviteeId = (await puppet.roomMemberSearch(roomId, inviteName))[0];
return {
inviteeIdList: [inviteeId],
inviterId: puppet.currentUserId,
roomId,
timestamp,
};
}
return null;
};
/**
* 2. Other Invite you to join the Room
* /^"([^"]+?)"邀请你加入了群聊/,
*/
const otherInviteYou = async () => {
let matches = null;
OTHER_INVITE_YOU_REGEX_LIST.some((re) => !!(matches = message.Content.match(re)));
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (matches) {
const inviteName = matches[1];
const inviterId = (await puppet.roomMemberSearch(roomId, inviteName))[0];
return {
inviteeIdList: [puppet.currentUserId],
inviterId,
roomId,
timestamp,
};
}
return null;
};
/**
* 3. Other invite you and others to join the room
* /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
* /^"(.+)"邀请"(.+)"加入了群聊/,
*/
const otherInviteOther = async () => {
let matches = null;
[...OTHER_INVITE_YOU_AND_OTHER_REGEX_LIST, ...OTHER_INVITE_OTHER_REGEX_LIST].some((re) => !!(matches = message.Content.match(re)));
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (matches) {
const inviteeIdList = [];
const inviterName = matches[1];
const inviterId = (await puppet.roomMemberSearch(roomId, inviterName))[0];
const inviteeName = matches[2];
const inviteeId = (await puppet.roomMemberSearch(roomId, inviteeName))[0];
// 如果包含ni则把机器人的id放进去
if (message.Content.includes('你')) {
inviteeIdList.push(puppet.currentUserId);
}
inviteeIdList.push(inviteeId);
return {
inviteeIdList,
inviterId,
roomId,
timestamp,
};
}
return null;
};
/**
* 4. Other Invite Other via Qrcode to join a Room
* /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
*/
const otherJoinViaQrCode = async () => {
let matches = null;
OTHER_JOIN_VIA_OTHER_QRCODE_REGEX_LIST.some((re) => !!(matches = message.Content.match(re)));
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (matches) {
const inviteeIdList = [];
const inviteeName = matches[1];
const inviteeId = (await puppet.roomMemberSearch(roomId, inviteeName))[0];
inviteeIdList.push(inviteeId);
const inviterName = matches[2];
const inviterId = (await puppet.roomMemberSearch(roomId, inviterName))[0];
return {
inviteeIdList,
inviterId,
roomId,
timestamp,
};
}
return null;
};
const ret = await (0, runner_js_1.executeRunners)([youInviteOther, otherInviteYou, otherInviteOther, otherJoinViaQrCode]);
if (ret) {
ret.inviteeIdList.forEach((inviteeId) => {
(0, event_room_leave_js_1.removeRoomLeaveDebounce)(ret.roomId, inviteeId);
});
}
return ret;
};
//# sourceMappingURL=event-room-join.js.map
;