danni-cool / wechatbot-webhook

轻量、可部署的微信机器人webhook服务,使用http接口收发微信消息, 用它作为个人通知、AIGC 应用或者 coze、n8n等自动化工作流的消息节点
MIT License
1.18k stars 206 forks source link

feat: 处理合并消息转发 #219

Closed Daydaylw3 closed 1 month ago

Daydaylw3 commented 1 month ago

原本收到合并消息转发的消息,会直接抛出错误,现在捕获这个错误并处理

[2024-05-15T17:46:41.442] [WARN] - 17:46:41 WARN message-parser Error occurred while parse message attachment: {"MsgId":"9077318394394722874","FromUserName":"@@xxxxxxxxxxx","ToUserName":"@xxxxxxxxxx","MsgType":49,"Content":"@xxxxxxxxxxxx:\n该类型暂不支持,请在手机上查看","Status":3,"ImgStatus":2,"CreateTime":1715766398,"VoiceLength":0,"PlayLength":0,"FileName":"","FileSize":"","MediaId":"","Url":"","AppMsgType":0,"StatusNotifyCode":0,"StatusNotifyUserName":"","RecommendInfo":{"UserName":"","NickName":"","QQNum":0,"Province":"","City":"","Content":"","Signature":"","Alias":"","Scene":0,"VerifyFlag":0,"AttrStatus":0,"Sex":0,"Ticket":"","OpCode":0},"ForwardFlag":0,"AppInfo":{"AppID":"","Type":0},"HasProductId":0,"Ticket":"","ImgHeight":0,"ImgWidth":0,"SubMsgType":0,"NewMsgId":9077318394394723000,"OriContent":"","EncryFileName":"","isSendBySelf":false,"OriginalContent":"@xxxxxxxxxxxx:<br/>该类型暂不支持,请在手机上查看"} , TypeError: Cannot read properties of undefined (reading 'msg')
    at parseAppmsgMessagePayload (/app/node_modules/.pnpm/wechaty-puppet-wechat4u@1.14.13_patch_hash=nq4vns7vah46g6vxziyzqg5jey_@swc+core@1.3.101_wechaty-puppet@1.20.2/node_modules/wechaty-puppet-wechat4u/dist/cjs/src/wechat4u/messages/message-appmsg.js:34:76)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async appMsgParser (/app/node_modules/.pnpm/wechaty-puppet-wechat4u@1.14.13_patch_hash=nq4vns7vah46g6vxziyzqg5jey_@swc+core@1.3.101_wechaty-puppet@1.20.2/node_modules/wechaty-puppet-wechat4u/dist/cjs/src/wechat4u/schema-mapper/message/message-parser-appmsg.js:36:28)
    at async executeMessageParsers (/app/node_modules/.pnpm/wechaty-puppet-wechat4u@1.14.13_patch_hash=nq4vns7vah46g6vxziyzqg5jey_@swc+core@1.3.101_wechaty-puppet@1.20.2/node_modules/wechaty-puppet-wechat4u/dist/cjs/src/wechat4u/schema-mapper/message/message-parser.js:15:15)
    at async webMessageToWechaty (/app/node_modules/.pnpm/wechaty-puppet-wechat4u@1.14.13_patch_hash=nq4vns7vah46g6vxziyzqg5jey_@swc+core@1.3.101_wechaty-puppet@1.20.2/node_modules/wechaty-puppet-wechat4u/dist/cjs/src/wechat4u/schema-mapper/message.js:70:5)
    at async PuppetWechat4u.messagePayload (/app/node_modules/.pnpm/wechaty-puppet@1.20.2_patch_hash=wwr5xvwazgbyb26ud6vwdruala_rxjs@7.8.1/node_modules/wechaty-puppet/dist/cjs/src/mixins/message-mixin.js:50:29)
    at async PuppetWechat4u.messageSearch (/app/node_modules/.pnpm/wechaty-puppet@1.20.2_patch_hash=wwr5xvwazgbyb26ud6vwdruala_rxjs@7.8.1/node_modules/wechaty-puppet/dist/cjs/src/mixins/message-mixin.js:67:21)
    at async WechatifiedMessageImpl.findAll (/app/node_modules/.pnpm/wechaty@1.20.2_@swc+core@1.3.101_brolog@1.14.2_redux@4.2.1_rxjs@7.8.1/node_modules/wechaty/dist/cjs/src/user-modules/message.js:98:35)
    at async WechatifiedMessageImpl.find (/app/node_modules/.pnpm/wechaty@1.20.2_@swc+core@1.3.101_brolog@1.14.2_redux@4.2.1_rxjs@7.8.1/node_modules/wechaty/dist/cjs/src/user-modules/message.js:81:29)
    at async PuppetWechat4u.<anonymous> (/app/node_modules/.pnpm/wechaty@1.20.2_@swc+core@1.3.101_brolog@1.14.2_redux@4.2.1_rxjs@7.8.1/node_modules/wechaty/dist/cjs/src/wechaty-mixins/puppet-mixin.js:240:45) 
[2024-05-15T17:46:41.443] [INFO] - Message: Message#Attachment[🗣Contact<ʚDayday🥱ɞ>@👥Room<🤖测试>] 
[2024-05-15T17:46:41.444] [ERROR] - 向 RECVD_MSG_API 上报 message 事件出错: Error: unsupported message. id: 9077318394394722874
    at PuppetWechat4u.messageFile (/app/node_modules/.pnpm/wechaty-puppet-wechat4u@1.14.13_patch_hash=nq4vns7vah46g6vxziyzqg5jey_@swc+core@1.3.101_wechaty-puppet@1.20.2/node_modules/wechaty-puppet-wechat4u/dist/cjs/src/puppet-wechat4u.js:592:15)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async WechatifiedUserClass.toFileBox (/app/node_modules/.pnpm/wechaty@1.20.2_@swc+core@1.3.101_brolog@1.14.2_redux@4.2.1_rxjs@7.8.1/node_modules/wechaty/dist/cjs/src/user-modules/message.js:832:25)
    at async sendMsg2RecvdApi (/app/src/service/msgUploader.js:133:41)
    at async Object.onRecvdMessage (/app/src/service/msgSender.js:694:10)

如果 const steamFile = msg.toFileBox ? await msg.toFileBox() : msg.content() 这里没有抛出错误,则流程和以前一样

danni-cool commented 1 month ago

@Daydaylw3 感谢你的pr,稍后会进入测试和发布