diff --git a/src/puppet-padchat/padchat-rpc.ts b/src/puppet-padchat/padchat-rpc.ts index 4d43b29d49fe6e0e361efde24490893907528aeb..de7ad71d7e9e974a5495cc0663397bce2af540cb 100644 --- a/src/puppet-padchat/padchat-rpc.ts +++ b/src/puppet-padchat/padchat-rpc.ts @@ -324,7 +324,7 @@ export class PadchatRpc extends EventEmitter { private async rpcCall( apiName : string, - ...params : (string | WXSearchContactTypeStatus)[] + ...params : string[] ): Promise { log.silly('PadchatRpc', 'rpcCall(%s, %s)', apiName, JSON.stringify(params).substr(0, 500)) return await this.jsonRpc.request(apiName, params) @@ -851,7 +851,13 @@ export class PadchatRpc extends EventEmitter { } public async WXAddUser(strangerV1: string, strangerV2: string, type: WXSearchContactTypeStatus, verify: string): Promise { - const result = await this.rpcCall('WXAddUser', strangerV1, strangerV2, type, verify) + const result = await this.rpcCall( + 'WXAddUser', + strangerV1, + strangerV2, + String(type), + verify, + ) log.silly('PadchatRpc', 'WXAddUser result: %s', JSON.stringify(result)) return result } diff --git a/src/puppet-padchat/pure-function-helpers/is-type.ts b/src/puppet-padchat/pure-function-helpers/is-type.ts index 63a958d35025161a878226070beea8e1230162a9..ebd9d4e5adc20ab328b532082e123689f8697530 100644 --- a/src/puppet-padchat/pure-function-helpers/is-type.ts +++ b/src/puppet-padchat/pure-function-helpers/is-type.ts @@ -1,34 +1,39 @@ export function isRoomId(id?: string): boolean { if (!id) { - throw new Error('no id') + // throw new Error('no id') + return false } return /@chatroom$/.test(id) } export function isContactId(id?: string): boolean { if (!id) { - throw new Error('no id') + return false + // throw new Error('no id') } return !isRoomId(id) } export function isContactOfficialId(id?: string): boolean { if (!id) { - throw new Error('no id') + return false + // throw new Error('no id') } return /^gh_/i.test(id) } export function isStrangerV1(strangerId?: string): boolean { if (!strangerId) { - throw new Error('no id') + return false + // throw new Error('no id') } return /^v1_/i.test(strangerId) } export function isStrangerV2(strangerId?: string): boolean { if (!strangerId) { - throw new Error('no id') + return false + // throw new Error('no id') } return /^v2_/i.test(strangerId) } diff --git a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.en.spec.ts b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.en.spec.ts index e89bc707eb9ff8fa1fa9b07eb633f7398636165e..b04b694148e3da9693a5c26f6a8197d5155ba9e9 100755 --- a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.en.spec.ts +++ b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.en.spec.ts @@ -141,8 +141,8 @@ test('roomJoinEventMessageParser() EN-bot-invite-other', async t => { t.deepEqual(event, EXPECTED_EVENT, 'should parse event') }) -test('roomJoinEventMessageParser() EN-bot-invite-others', async t => { - t.skip('should be the same as the bot-invite-other') +test('roomJoinEventMessageParser() EN-bot-invite-many', async t => { + t.skip('should be the same as the bot-invite-many') }) test('roomJoinEventMessageParser() EN-room-create', async t => { diff --git a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.zh.spec.ts b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.zh.spec.ts index dbea9308f2f7c6a48291964ae345a713067a940c..c31cdd26575dec4a0016505c8da099ff05214198 100755 --- a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.zh.spec.ts +++ b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.join.zh.spec.ts @@ -38,7 +38,7 @@ test('roomJoinEventMessageParser() ZH-other-invite-other', async t => { } const event = roomJoinEventMessageParser(MESSAGE_PAYLOAD) - console.log('payload:', event) + // console.log('payload:', event) t.deepEqual(event, EXPECTED_EVENT, 'should parse room join message payload') }) @@ -72,7 +72,7 @@ test('roomJoinEventMessageParser() ZH-other-invite-bot', async t => { t.deepEqual(event, EXPECTED_EVENT, 'should parse event') }) -test('roomJoinEventMessageParser() ZH-other-invite-bot-with-others', async t => { +test('roomJoinEventMessageParser() ZH-other-invite-bot-with-other', async t => { const MESSAGE_PAYLOAD: PadchatMessagePayload = { content : '"李卓桓"邀请你和"Huan LI++"加入了群聊', continue : 1, @@ -97,7 +97,7 @@ test('roomJoinEventMessageParser() ZH-other-invite-bot-with-others', async t => t.deepEqual(event, EXPECTED_EVENT, 'should parse event') }) -test('roomJoinEventMessageParser() ZH-bot-invite-other', async t => { +test('roomJoinEventMessageParser() ZH-bot-invite-one', async t => { const MESSAGE_PAYLOAD: PadchatMessagePayload = { content : '5354656522@chatroom:\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\tinvite\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n', continue : 1, @@ -122,7 +122,7 @@ test('roomJoinEventMessageParser() ZH-bot-invite-other', async t => { t.deepEqual(event, EXPECTED_EVENT, 'should parse event') }) -test('roomJoinEventMessageParser() ZH-bot-invite-others', async t => { +test('roomJoinEventMessageParser() ZH-bot-invite-three', async t => { t.skip('tbw') }) diff --git a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.spec.ts b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.spec.ts index f59ee24059a855a2b830f2e4bf390fa2e3ac44c8..fd1601712d3313d44a5a2483e57967fdedba2e16 100755 --- a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.spec.ts +++ b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.spec.ts @@ -122,7 +122,7 @@ test('splitChineseNameList()', async t => { const EXPECTED_LIST = ['李卓桓', '李佳芮', '桔小秘'] const list = splitChineseNameList(TEXT) - t.equal(list, EXPECTED_LIST, 'should split chinese name list') + t.deepEqual(list, EXPECTED_LIST, 'should split chinese name list') }) test('splitEnglihshNameList()', async t => { @@ -130,5 +130,5 @@ test('splitEnglihshNameList()', async t => { const EXPECTED_LIST = ['Zhuohuan', '李佳芮', '太阁_传话助手'] const list = splitEnglishNameList(TEXT) - t.equal(list, EXPECTED_LIST, 'should split english name list') + t.deepEqual(list, EXPECTED_LIST, 'should split english name list') }) diff --git a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.ts b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.ts index c6ddb9357cfa8b9d9924175910e63d4b3cffaaae..2dddd90e573dddae16dc16347a4e664864aa504a 100644 --- a/src/puppet-padchat/pure-function-helpers/room-event-message-parser.ts +++ b/src/puppet-padchat/pure-function-helpers/room-event-message-parser.ts @@ -85,11 +85,27 @@ export function roomJoinEventMessageParser( * when the message is a Recalled type, bot can undo the invitation */ if (rawPayload.sub_type === PadchatMessageType.Recalled) { + /** + * content: + * ``` + * 3453262102@chatroom: + * + * ... + * + * ``` + */ + const tryXmlText = content.replace(/^[^\n]+\n/, '') interface XmlSchema { - plain: string, + sysmsg: { + type: string, + delchatroommember: { + plain: string, + text: string, + }, + } } - const jsonPayload = toJson(content, { object: true }) as XmlSchema - content = jsonPayload.plain + const jsonPayload = toJson(tryXmlText, { object: true }) as XmlSchema + content = jsonPayload.sysmsg.delchatroommember.plain } let matchesForBotInviteOtherEn = null as null | string[]