wechaty / puppet-padlocal

Puppet PadLocal is a Pad Protocol for WeChat
https://wechaty.js.org/docs/puppet-providers/padlocal
Apache License 2.0
642 stars 88 forks source link

体验版小程序卡片原样转发会变成线上版 #180

Open zihaooo opened 2 years ago

zihaooo commented 2 years ago

依赖版本:

"wechaty": "^1.20.2",
"wechaty-plugin-contrib": "^1.11.2",
"wechaty-puppet": "^1.20.2",
"wechaty-puppet-padlocal": "^1.20.1",

核心代码:

使用收到的payload构造新的小程序卡片

if (msg.type() === PUPPET.types.Message.MiniProgram) {
    const card = await msg.toMiniProgram()
    log.info(JSON.stringify(card))
    const payload = card.payload
    await receivers[0].say(new bot.MiniProgram(payload))
  }

观察到的payload不同

手动分享收到的sharedId和自动分享时填入的shareId为同一个(因为上面那段代码直接没有改payload),格式为:

1_${appid}_${长度32的hash code}_${UNIX时间戳}_0

收到的自动分享的卡片中,shareId被改写了,格式变为

0_${appid}_${9位数字}_${UNIX时间戳}_0

其中9位数字在我分享的其他小程序的卡片中也是同样的。

截图:

截图中两个小程序卡片一个是通过手动从体验版小程序中分享的,一个是通过上面那段代码在收到手动分享的卡片之后自动分享的。