wechaty/wechaty-puppet-padchat

让机器人保持“清醒状态”

Closed this issue · 1 comments

重要:请不要删除模板自行填写,所有不按照模板填写的issue,我们将不会处理。

0. 发 Issue 指南

  1. 请运行下面的命令,看问题是否可以被解决:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. 请在 FAQ 清单 看是否已有解决办法。

  2. 请先在issue 中搜关键信息,确认你要发的内容和之前的issue 不重复。

1. 提供你的包版本信息

  • wechaty 版本:0.26.1
  • wechaty-puppet-padpro 版本: 0.2.1
  • node 版本: (运行 node --version 获取版本)11.0.0
  • 你使用的操作系统:Win10

2. Bug 描述

请用精简的语言描述你遇到的bug

关于消息转发的机器人,(简而言之,我让微信机器人转发一个爬虫代码抓取到的消息,自动转发到微信群)
机器人在长时间没收到消息(一天左右)后,似乎进入了一种“休眠”或者“低功耗”的模式,我挂了大半天后,第二天再让他发转发消息时,前两三条消息都隔了半分钟左右才回复,延迟很明显,后面就感觉“唤醒”了,消息就瞬间回复。

由于我的机器人目前的消息量很少,但每条消息的时效性很重要,因此我想让机器人一直“清醒”的状态,时时刻刻都能做到“瞬间转发”。

由于没有任何Error,我无法确认是wechaty还是iPad接口的问题。

3. 复现的步骤 (或者解决的步骤)

这一部分非常重要,如果你无法给出复现步骤,我们也很难提供相应的解决办法:
我感觉这个问题应该不局限于我的代码,但出于完整性还是贴一下简化后的代码。

bot
  .on('scan', (qrcode, status) => console.log(`Scan QR Code to login: ${status}\nhttp://qr.liantu.com/api.php?text=${encodeURIComponent(qrcode)}`))
  .on('login', onLogin)
  .start()

async function onLogin(user){

      const room = await bot.Room.findAll()
      let group = room[0];
      scraper.on('message', async msg=>{group.say(msg)}) //这里代码有所简化, 新消息触发爬虫的message事件,然后消息传给wechaty
}



  • 第一步:自动发消息的机器人(虽然我的应用场景是爬虫转发,但我觉得其他自动发消息机器人也会有类似问题)
  • 第二步:在服务器上跑着,但不要给他发送任何消息,等待大半天
  • 第三步:再给它发消息,前一两条消息有明显延迟;继续发消息,延迟逐渐消失,恢复正常

我在微信群里问了,也有人有类似的体验。

4. 期待程序运行的结果

希望能一直保持清醒,立刻回复。

5. 程序实际运行的结果

请用精简的语言或者截图描述实际运行的结果(请不要在这里粘贴日志截图

没有Error,功能也实现了,只不过是发消息的时间延迟问题。。。