Git Product home page Git Product logo

donut-tester's Introduction

donut-tester

We have launched a new puppet wechaty-puppet-donut. It is ready for testing, and Alpha Testing Volunteers are needed.

Unlike the previous puppet-pad* version, wechaty-puppet-donut is a windows hook solution. Compare with puppet-pad*, the new puppet has improvement in some aspect below:

  • Support mini app
  • Support WeChat Work Mix Message

If you want to benefit from all the new features, you are welcomed to apply for joining the Alpha Testing List.

You can leave a comment under Issue 1941: [Call for Volunteers] Win32 Puppets: wechaty-puppet-donut is going to ready for testing!, introduce yourself about who you are and what you want to do (please DO follow the following TEMPLATE and fill it in details, or you might not be able to be selected), so that we can be able to add you to the alpha testing list if you are qualified.

Run

Install

Only need to install wechaty by command:

npm install wechaty@next

Example

import { Wechaty } from 'wechaty'
import { ScanStatus } from 'wechaty-puppet'
import QrcodeTerminal from 'qrcode-terminal';

const token = 'PUT_YOUR_TOKEN_HERE'

const bot = new Wechaty({
  puppet: 'wechaty-puppet-service',
  puppetOptions: {
    token,
  }
});

bot
  .on('scan', (qrcode, status) => {
    if (status === ScanStatus.Waiting) {
      QrcodeTerminal.generate(qrcode, {
        small: true
      })
    }
  })
  .on('login', async user => {
    console.log(`user: ${JSON.stringify(user)}`)
  })
  .on('message', async message => {
    console.log(`message: ${JSON.stringify(message)}`)
  })
  .start()

Here is the requirement for the alpha test user

  1. Strong willingness & motivation in wechaty-puppet-donut
  2. Have the ability & engineering power to fix the basic bug instead of just asking for support
  3. Good to communicate with the developers in the community
  4. The basic requirement for bot online time: we might take the test token back if the bot is offline for more than 1 day.
  5. Willing to write a blog to share the experience of using wechaty-puppet-donut

Wechaty Puppet Donut Alpha Tester Apply Template

  1. Introduce Yourself(who you are):

  2. Explain the Problem You Want to Solve:(what you do):

  3. Are Your Bot Related with the Following Tasks? (YES/NO) Gambling Adault & Sex

  4. Your Email:

  5. Your Wechat:

  6. I Had Joined the Wechaty Developers' Home Wechat Room by Scan QRCode from README.md: (Please join the group if you are not, and then say YES at here)

  7. I understand that the Wechaty Puppet Donut is in very Early Alpha Stage, and I have the necessary engineering technics to deal with the bugs instead of just asking for support: (Please say YES, then followed by your Name at here)

Unsupported API List

The unsupported api will throw Wechaty Puppet Unsupported API Error.

  1. get contact alias
  2. get room member alias
  3. get room QR code
  4. all Tag related methods
  5. get bot qrcode

Puppet Comparison

功能 donut padpro padplus macpro
<消息>
收发文本
收发个人名片
收发图文链接
发送图片、文件 ✅(对内容有大小限制,20M以下)
接收图片、文件 ✅(对内容有大小限制,25M以下)
发送视频
接收视频
发送小程序
接收动图
发送动图
接收语音消息
发送语音消息
转发文本
转发图片
转发图文链接
转发音频
转发视频
转发文件
转发动图
转发小程序
<群组>
创建群聊
设置群公告
获取群公告
群二维码
拉人进群
踢人出群
退出群聊
改群名称
入群事件
离群事件
群名称变更事件
@群成员
群列表
群成员列表
群详情
<联系人>
修改备注
添加好友
自动通过好友
好友列表
好友详情
<其他>
登录事件
扫码状态
登出事件
依赖协议 windows iPad iPad Mac

donut-tester's People

Contributors

lijiarui avatar su-chang avatar windmemory avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

donut-tester's Issues

await room.sync() throw exception

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer: 0.48.10

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:v13.12.0

  • What os are you using
    Answer: Mac

2. Describe the bug

Give a clear and concise description of what the bug is.
throw exception when call await room.sync

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

15:43:09 ERR PuppetHostie dirtyPayload() rejection: 12 UNIMPLEMENTED: RPC method not implemented /wechaty.Puppet/DirtyPayload
Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

BotSentry报警逻辑

【管理者】接到【警报通知】后,人工通知【微信号】的持有者并提醒其登录,登录后【超时响应】次数清零。

概念说明
微信号:被监控是否在线的微信号;
Bot-Sentry:一个用来监控【微信号】是否掉线的公众号;
超时响应:由【Bot-Sentry】发出#ding后,若【微信号】在90s内没有回复dong,则记做一次超时;
警报通知:若某微信号【超时响应】次数超过3次,则向【管理者】进行报警;

已完成

  • 将Juzi.Bot添加到【管理者】中,并将接收到的报警信息转发到某个微信群【ChatOps - Alarm】

待优化

  • 在某段时间内【超时响应】次数超过3次,进行【警报通知】
  • 将【微信号】和其持有者进行绑定,从而直接通知,无需转发

ERR PuppetHostie start() rejection: connect ETIMEDOUT 104.31.73.129:443

Follow the instructions for running the demo, but report the following error after startup,
Token I've blurred.

  • mac OS
  • node v12.10.0
  • wechaty@next
18:06:24 SILL Config WECHATY_LOG set level to silly
18:06:24 INFO Config registering process.on("unhandledRejection") for development/debug
18:06:24 VERB Config constructor()
Debugger listening on ws://127.0.0.1:63171/e2c83044-0875-4086-a447-27395f045366
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
18:06:30 VERB Wechaty contructor()
18:06:30 VERB StateSwitch constructor(Wechaty, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
18:06:30 VERB StateSwitch constructor(WechatyReady, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
18:06:30 VERB Wechaty on(scan, function) registered
18:06:30 VERB Wechaty addListenerFunction(scan)
18:06:30 VERB Wechaty on(login, function) registered
18:06:30 VERB Wechaty addListenerFunction(login)
18:06:30 VERB Wechaty on(message, function) registered
18:06:30 VERB Wechaty addListenerFunction(message)
18:06:30 INFO Wechaty <wechaty-puppet-hostie>() start() v0.38.4 is starting...
18:06:30 VERB Wechaty id: ckbhrhr0d0000x9ud6j715wz3
18:06:30 SILL StateSwitch <Wechaty> on() is false
18:06:30 SILL StateSwitch <WechatyReady> off() is true
18:06:30 VERB StateSwitch <WechatyReady> off(true) <- (true)
18:06:30 SILL StateSwitch <Wechaty> on() is false
18:06:30 VERB StateSwitch <Wechaty> on(pending) <- (false)
18:06:30 VERB MemoryCard constructor(undefined)
18:06:30 VERB MemoryCard getStorage() for storage type: N/A
18:06:30 VERB MemoryCard load() from storage: N/A
18:06:30 VERB MemoryCard load() no storage
18:06:30 VERB Wechaty initPuppet() wechaty-puppet-hostie
18:06:30 VERB MemoryCard multiplex(puppet)
18:06:30 VERB MemoryCard static multiplex(MemoryCard<>, puppet)
18:06:30 VERB MemoryCard constructor({"multiplex":{"name":"puppet","parent":{"payload":{},"multiplexNameList":[]}}})
18:06:30 VERB PuppetManager resolve({puppet: wechaty-puppet-hostie, puppetOptions: {"token":"donut-test-user-"}})
18:06:30 VERB PuppetManager resolveName(wechaty-puppet-hostie)
18:06:30 VERB PuppetManager checkModule(wechaty-puppet-hostie)
18:06:30 SILL PuppetManager checkModule() wechaty-puppet-hostie installed version 0.6.1 satisfied range ^0.6.1
18:06:30 VERB Puppet constructor({"token":"donut-test-user-"}) #0
18:06:30 VERB StateSwitch constructor(PuppetHostie, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
18:06:30 VERB MemoryCard constructor(undefined)
18:06:30 VERB MemoryCard getStorage() for storage type: N/A
18:06:30 VERB MemoryCard load() from storage: N/A
18:06:30 VERB MemoryCard load() no storage
18:06:30 VERB Puppet constructor() watchdog timeout set to 60 seconds
18:06:30 VERB HotImport callerResolve(., /Users/sunshinearea/node_modules/wechaty-puppet/dist/src/puppet.js)
18:06:30 SILL HotImport callerResolve() callsites() file=/Users/sunshinearea/node_modules/hot-import/dist/src/hot-import.js, type=Object
18:06:30 SILL HotImport callerResolve() callsites() file=/Users/sunshinearea/node_modules/wechaty-puppet/dist/src/puppet.js, type=null
18:06:30 SILL HotImport callerResolve() callsites() file=/Users/sunshinearea/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js, type=null
18:06:30 SILL HotImport callerResolve() callerFile=/Users/sunshinearea/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js
18:06:30 VERB Puppet constructor() childClassPath=/Users/sunshinearea/node_modules/wechaty-puppet-hostie/dist/src/client
18:06:30 VERB Puppet constructor() memory.load() done
18:06:30 VERB Puppet setMemory()
18:06:30 VERB Wechaty initPuppetEventBridge(Puppet#0<PuppetHostie>())
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(friendship) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(login) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(logout) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(message) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(room-invite) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(room-join) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(room-leave) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(room-topic) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(scan) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(dong) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(error) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(heartbeat) (listenerCount:1) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(ready) (listenerCount:0) registering...
18:06:30 VERB Wechaty initPuppetEventBridge() puppet.on(reset) (listenerCount:1) registering...
18:06:30 VERB Wechaty initAccessory(Puppet#0<PuppetHostie>())
18:06:30 SILL Accessory <Contact> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <ContactSelf> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Friendship> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Image> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Message> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Room> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <RoomInvitation> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Tag> static set wechaty = "Wechaty#ckbhrhr0d0000x9ud6j715wz3<wechaty-puppet-hostie>()"
18:06:30 SILL Accessory <Contact> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <ContactSelf> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <Friendship> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <Image> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <Message> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <Room> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <RoomInvitation> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 SILL Accessory <Tag> static set puppet = "Puppet#0<PuppetHostie>()"
18:06:30 VERB PuppetHostie start()
18:06:30 SILL StateSwitch <PuppetHostie> on() is false
18:06:30 SILL StateSwitch <PuppetHostie> on() is false
18:06:30 VERB StateSwitch <PuppetHostie> on(pending) <- (false)
18:06:30 VERB PuppetHostie startGrpcClient()
18:06:30 VERB PuppetHostie discoverHostieIp(donut-test-user-)
18:07:46 ERR PuppetHostie start() rejection: connect ETIMEDOUT 104.31.73.129:443
18:07:46 SILL StateSwitch <PuppetHostie> off() is false
18:07:46 VERB StateSwitch <PuppetHostie> off(true) <- (false)
Error: connect ETIMEDOUT 104.31.73.129:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  address: '104.31.73.129',
  port: 443
}
18:07:46 ERR Wechaty start() exception: connect ETIMEDOUT 104.31.73.129:443
18:07:46 ERR Config ###########################
18:07:46 ERR Config unhandledRejection: Error: connect ETIMEDOUT 104.31.73.129:443 [object Promise]
18:07:46 ERR Config ###########################
18:07:46 ERR Config process.on(unhandledRejection) promise.catch(connect ETIMEDOUT 104.31.73.129:443)
Config Error: connect ETIMEDOUT 104.31.73.129:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  address: '104.31.73.129',
  port: 443
}
(node:40077) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 1)
Waiting for the debugger to disconnect...

微信登录确认、二维码已失效、请重新扫码登录

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:
    0.51.5
  • What is your wechaty-puppet-donut version?
    Answer:
    not find
  • What is your node version? (run node --version)
    Answer:
    v12.18.0
  • What os are you using
    Answer:
    windows10

2. Describe the bug

Give a clear and concise description of what the bug is.
`11:13:49 VERB Puppet setMemory()
11:13:49 VERB Wechaty initPuppetEventBridge(Puppet#0())
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(friendship) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(login) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(logout) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(message) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(room-invite) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(room-join) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(room-leave) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(room-topic) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(scan) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(dirty) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(dong) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(error) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(heartbeat) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(ready) (listenerCount:0) registering...
11:13:49 VERB Wechaty initPuppetEventBridge() puppet.on(reset) (listenerCount:0) registering...
11:13:49 VERB Wechaty wechatifyUserModules(Puppet#0())
11:13:49 VERB PuppetHostie start()
11:13:49 VERB StateSwitch on(pending) <- (false)
11:13:49 VERB PuppetHostie startGrpcClient()
11:13:49 VERB PuppetHostie discoverHostieIp(puppet_donut_xxxxx)(notice i hide the token)
11:13:50 VERB PuppetHostie startGrpcStream()
11:13:50 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_SCAN(22), payload:"{"qrcode":"http://weixin.qq.com/x/g_pFzcVXMadAzWBKA9hg","status":2}"})
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █ ██▀▀▄██▄ ▄▀ █ ▄▄▄▄▄ █
█ █ █ █ ▀█ █ █▄▄ ▀▀█ █ █ █
█ █▄▄▄█ █▀ █▄▄ ▄ ▀▄▀██ █▄▄▄█ █
█▄▄▄▄▄▄▄█▄█ ▀▄█▄▀ ▀ ▀ █▄▄▄▄▄▄▄█
█ ▄██ ▄▀██▄█▄▄▀█▀▀██ █▀ ▀ █
█▄▀▄▀██▄▄ ▄█▀▄▀ ▄▀ █ ▀█▀▀██▀ █
█▄▄ █ ▄ █▀▀▄▀ ▀▀▀▄██▄█▀▀▀▀█ ▀█
█▀▄ █▀▄▀█ █ ▄█▀ ▀ █▀ ▀█ ▀█▄▀ █
█▀█▄▀▀█▄██▀▀█▄█▄▀▀█▀█▄ ▀ ▀▄█ ▀█
████ ▄▄ ▄ █▀█▀ █▀▄▀▄▄ ▀▀▄▄▀ █
█▄▄█▄▄█▄█▀ ▄▄▀█▀▄▀ █ ▄▄▄ ▄██ █
█ ▄▄▄▄▄ █▀ █ ▄██ ▀█ █▄█ ▄█▄█
█ █ █ █▄▀██▄▀▀▄ ▄▀ ▄ ▄▄▄█▀█ █
█ █▄▄▄█ █▀▄ █▀▄ ▄▄▀▀▄ ▀▀██ ▄ █
█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄██▄▄▄█▄▄▄█▄██

11:13:50 VERB StateSwitch on(true) <- (pending)
11:13:50 VERB Wechaty on(heartbeat, listener) registering... listenerCount: 0
11:13:50 VERB StateSwitch on(true) <- (pending)
`

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. git clone https://github.com/wechaty/wechaty-getting-started
  2. change examples/ding-dong-bot.js
  3. change content is
    `/**
  • Wechaty - WeChat Bot SDK for Personal Account, Powered by TypeScript, Docker, and 💖

/**

  • You can ignore the next line becasue it is using for CodeSandbox
    */
    require('./.code-sandbox.js')

function onScan (qrcode, status) {
if (status === ScanStatus.Waiting || status === ScanStatus.Timeout) {
require('qrcode-terminal').generate(qrcode, { small: true }) // show qrcode on console

const qrcodeImageUrl = [
  'https://wechaty.js.org/qrcode/',
  encodeURIComponent(qrcode),
].join('')

log.info('StarterBot', 'onScan: %s(%s) - %s', ScanStatus[status], status, qrcodeImageUrl)

} else {
log.info('StarterBot', 'onScan: %s(%s)', ScanStatus[status], status)
}
}

function onLogin (user) {
log.info('StarterBot', '%s login', user)
}

function onLogout (user) {
log.info('StarterBot', '%s logout', user)
}

async function onMessage (msg) {
log.info('StarterBot', msg.toString())

if (msg.text() === 'ding') {
await msg.say('dong')
}
}
const token = 'puppet_donut_xxxx'// hide real token

const bot = new Wechaty({
puppet: 'wechaty-puppet-donut',
puppetOptions: {
token,
}
});

bot.on('scan', onScan)
bot.on('login', onLogin)
bot.on('logout', onLogout)
bot.on('message', onMessage)

bot.start()
.then(() => log.info('StarterBot', 'Starter Bot Started.'))
.catch(e => log.error('StarterBot', e))
`
4.npm run start

4. Expected behavior

Give a clear and concise description of what you expected to happen.
i can login it but tip 微信登录确认、二维码已失效、请重新扫码登录

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.
微信登录确认、二维码已失效、请重新扫码登录

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

WARN Puppet dogReset() reason: {"data":"onGrpcStreamEvent(EVENT_TYPE_LOGIN)","timeout":60000}

Today, i instead the padplus token by donut token, just modified the main function (.js file ) follow by the example from https://github.com/juzibot/donut-tester as bellow:

=========================================================
const { Wechaty } = require("wechaty") // Wechaty核心包
const config = require("./config") // 配置文件

const onScan = require("./onScan") // 机器人需要扫描二维码时监听回调
const onRoomJoin = require("./onRoomJoin") // 加入房间监听回调
const onMessage = require("./onMessage") // 消息监听回调
const onFriendShip = require("./onFriendShip") // 好友添加监听回调

const token = config.token

// 初始化
const bot = new Wechaty({
puppet: "wechaty-puppet-hostie",
puppetOptions: {token,}
})

bot
.on("scan", onScan) // 机器人需要扫描二维码时监听
.on("room-join", onRoomJoin) // 加入房间监听
.on("message", onMessage(bot)) // 消息监听
.on("friendship", onFriendShip) // 好友添加监听
.start()

On the 1st time to start, it works well. I can login var QRcode, the info of windows client has been login shown on the phone and also received the message from "Bot Setry" on wechat client.

Under this case, i sent several wechat message to bot, it works well. And then i use my ex-wechat account create a room and add bot, sent message in the room via my ex-wechat account, no response on bot. wait about 2-3 mins, the waring "WARN Puppet dogReset() reason: {"data":"onGrpcStreamEvent(EVENT_TYPE_LOGIN)","timeout":60000}
" pops up.

i restart bot, got the same issue. So i logout the windows cline from my phone. and restart bot, unfortunately no login qr-code pops up, and get the same waring info as below screenshot:

image

version info:
"qrcode-terminal": "^0.12.0",
"request": "^2.88.2",
"urlencode": "^1.1.0",
"wechaty": "^0.51.1",
"wechaty-puppet": "^0.32.3",

please help me to check where is wrong? thanks!

Event 'room-leave' CAN'T touch off

Important:Please file the issue follow the template, or we won't help you to solve the problem.

1. Versions

  • What is your wechaty version?
    Answer: python-wechaty:0.6.7, python-puppet:0.0.16, python-puppet-hostie:0.2.12

  • What is your wechaty-puppet-donut version?
    Answer: as above

  • What is your node version? (run node --version)
    Answer: without node

  • What os are you using
    Answer: Window7 and docker images python3.7-slim

2. Describe the bug

Event 'room-join' can't touch off

3. To Reproduce

bot = Wechaty().on('room-leave', xxx_function)
await bot.start()

4. Expected behavior

5. Actual behavior

6. Full Output Logs

7. Additional context

after Wechat PC client upgrade, this event can't touch off anymore

[bug]

Segment fault due to flash-store revert to v0.14.1

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:

  • What os are you using
    Answer:

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:
16:58:27 VERB PuppetServiceImpl stop()
16:58:27 VERB EventStreamManager stop()
16:58:27 VERB EventStreamManager this.onStreamingCallEnd() this.eventStream.on(finish) fired
16:58:27 VERB EventStreamManager connectPuppetEventToStreamingCall() unconnect() 13 callbacks
16:58:27 VERB PuppetDonut stop()
16:58:27 SILL StateSwitch <PuppetDonut> off() is false
16:58:27 SILL StateSwitch <PuppetDonut> off() is false
16:58:27 VERB StateSwitch <PuppetDonut> off(pending) <- (false)
16:58:27 VERB PuppetDonut stopBridge()
16:58:27 SILL StateSwitch <PuppetDonut> on() is false
16:58:27 VERB Bridge stop()
16:58:27 VERB CacheManager release()
16:58:27 VERB CacheManager releaseCache()
16:58:27 SILL CacheManager releaseCache() closing caches ...
npm ERR! code ELIFECYCLE
npm ERR! errno 3221225477
npm ERR! [email protected] io-client: `ts-node bin/io-client`
npm ERR! Exit status 3221225477
npm ERR!
npm ERR! Failed at the [email protected] io-client script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2020-04-14T08_58_27_608Z-debug.log
/c/Program Files (x86)/nodejs/npm: line 34:   960 Segmentation fault      "$NODE_EXE" "$NPM_CLI_JS" "$@"

7. Additional context

Add any other context about the problem here.

[bug]

UNIMPLEMENTED: RPC method not implemented /wechaty.Puppet/Start

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:

  • What os are you using
    Answer:

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
~/work/wechaty-puppet-hostie on  master! ⌚ 13:21:39
$ ts-node examples/ding-dong-bot.ts

Puppet Version: Puppet#0<PuppetHostie>()@0.7.1

Please wait... I'm trying to login in...


161.189.112.252:8788
13:21:48 ERR PuppetHostie start() rejection: 12 UNIMPLEMENTED: RPC method not implemented /wechaty.Puppet/Start
Bot start() fail: Error: 12 UNIMPLEMENTED: RPC method not implemented /wechaty.Puppet/Start
    at Object.exports.createStatusError (/Users/dingchaofei/work/wechaty-puppet-hostie/node_modules/grpc/src/common.js:91:15)
    at Object.onReceiveStatus (/Users/dingchaofei/work/wechaty-puppet-hostie/node_modules/grpc/src/client_interceptors.js:1209:28)
    at InterceptingListener._callNext (/Users/dingchaofei/work/wechaty-puppet-hostie/node_modules/grpc/src/client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (/Users/dingchaofei/work/wechaty-puppet-hostie/node_modules/grpc/src/client_interceptors.js:618:8)
    at callback (/Users/dingchaofei/work/wechaty-puppet-hostie/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 12,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: 'RPC method not implemented /wechaty.Puppet/Start'
}
13:21:48 WARN PuppetHostie stop() is called on a OFF puppet. await ready(off) and return.

7. Additional context

github.com/chatie/grpc The proto library has recently been adjusted, so the server should use the latest proto, and now the client will report an error if it uses the latest proto.

[bug]

通过file-box获取到网络的文件进行推送报错

我在 node js中使用以下的代码推送网络文件的时候报错,
console.log('message='+message)
const { FileBox } = require('file-box')
const fileSay = FileBox.fromUrl( FileURL,decodeURI(FileReName),)
console.log('REPLY: %s'+fileSay.toString())
console.log('---------------------------------'+ fileSay.toString())
返回以下信息:

13 INTERNAL: can not get message callback response, data: {"content":"","to_wxid":"1XXXXXXX@chatroom"}

在未升级的时候,使用 wechaty-puppet-padplus服务是可以通过此方法推送的。

ERR PuppetHostie stop() stop GRPC rejection: 2 UNKNOWN: Stream removed

(node:34586) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
20:21:22 ERR PuppetHostie stop() stop GRPC rejection: 2 UNKNOWN: Stream removed

it happended multiple times

监控报警中DDR的计算规则

DDR(ding-dong rate)计算规则

规则介绍

  1. 微信号首次登录会进行数据初始化

    DingDongObject {
     dingNum: number;
     dongNum: number;
     warnNum: number;
     onlineTime: number;
     offlineTime: number;
    }
  2. 每间隔1分钟由官方公众号BotSentry发一条#ding的消息,对应微信号自动回复dong,以此记做一个完整的统计周期

  3. 若超过90秒未回复dong,则记做一次超时

  4. 连续3次超时,公众号会向管理员进行报警

  5. 每次重新登录会继承之前的数据,并将离线时长按分钟数转换为发送#ding的次数

计算公式

DING_NUM = (NOW_TIME - OFFLINE_TIME) / 60 + PRE_DING_NUM
DDR = DONG_NUM / DING_NUM

数据说明

NOW_TIME: 微信号登录的时间
OFFLINE_TIME: 微信号掉线的时间
PRE_DING_NUM: 上次登录期间公众号向微信号发送#ding的总次数
DING_NUM: 公众号向微信号发送#ding的总次数
DONG_NUM: 微信号回复公众号dong的总次数

inviteeList is not a list on room join event

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:
    0.40.10

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:
    v13.12.0

  • What os are you using
    Answer:
    Mac

2. Describe the bug

Give a clear and concise description of what the bug is.

The inviteeList is an object when I invite one person into the room.

room.on('join', (room, inviteeList, inviter) =>

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

Cannot get sender's alias in room

Cannot get sender's alias in room follow by below coding, but this works well with padplus:

  const room = await msg.room() // 获取群聊
  await room.sync()
  let sender_alias = await room.alias(msg.from())  //获取发信人群昵称

version info:
"wechaty": "^0.51.1",
"wechaty-puppet": "^0.32.3",

Some MiniProgram parameters maybe invalid

donut:
<shareId>_wx7c54357940c1d76b_efe86c3ead0082fae490588e850406b0_1593101540_</shareId>
wechat:
<shareId><![CDATA[0_wx7c54357940c1d76a_20a3b1336c2807932df41a0193618e04_1593101576_0]]></shareId>

Donut maybe discard some extinfo:


-		<extinfo />
-		<sourceusername>gh_1c0dae5a5bb3@app</sourceusername>
-		<sourcedisplayname>App名称</sourcedisplayname>
-		<thumburl />
-		<md5 />
-		<statextstr />
-		<directshare>0</directshare>

Error: 2 UNKNOWN: Stream removed

Here is the last few lines of logs. Nothing unusual was logged.

message: {"_events":{},"_eventsCount":0,"id":"8750110666592211461","payload":{"filename":"","fromId":"wxid_d03nhnfu54pa12","id":"8750110666592211461","mentionIdList":[],"roomId":"","text":"I GOT THE. Gov money so i can trnfg","timestamp":1596289340000,"toId":"wxid_s27n2bzu71612","type":7}}
check
I GOT THE. Gov money so i can trnfg Message {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  id: '8750110666592211461',
  payload: {
    filename: '',
    fromId: 'wxid_d03nhnfu54pa12',
    id: '8750110666592211461',
    mentionIdList: [],
    roomId: '',
    text: 'I GOT THE. Gov money so i can trnfg',
    timestamp: 1596289340000,
    toId: 'wxid_s27n2bzu71612',
    type: 7
  },
  [Symbol(kCapture)]: false,
  [Symbol(name)]: 'Message',
  [Symbol(counter)]: 1772
}
message: {"_events":{},"_eventsCount":0,"id":"408865040613571269","payload":{"filename":"","fromId":"wxid_d03nhnfu54pa12","id":"408865040613571269","mentionIdList":[],"roomId":"","text":"U","timestamp":1596289342000,"toId":"wxid_s27n2bzu71612","type":7}}
check
U Message {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  id: '408865040613571269',
  payload: {
    filename: '',
    fromId: 'wxid_d03nhnfu54pa12',
    id: '408865040613571269',
    mentionIdList: [],
    roomId: '',
    text: 'U',
    timestamp: 1596289342000,
    toId: 'wxid_s27n2bzu71612',
    type: 7
  },
  [Symbol(kCapture)]: false,
  [Symbol(name)]: 'Message',
  [Symbol(counter)]: 1773
}

It was still working on 1st August 9:42pm. I was chatting with a friend. My bot was doing the logging.

IMG_4235

But at 9:51pm I got the Stream removed error while the bot was still running. And then my donut server stopped working & no logs were returned ever since then. I didn't receive any prompts to re-sign-in, or anything. Everything just stopped (though my server was still running with me still signed into the donut).

Did something happen to the grpc server?

ERR PuppetHostie stop() this.grpcClient.stop() rejection: 14 UNAVAILABLE: failed to connect to all addresses
ERR PuppetHostie start() rejection: no endpoint
WARN Puppet reset() exception: Error: no endpoint
Error: 
    at PuppetHostie.<anonymous> (/home/git/live/donut-test-ground/node_modules/wechaty/src/wechaty.ts:678:32)
    at PuppetHostie.emit (events.js:321:20)
    at PuppetHostie.EventEmitter.emit (domain.js:485:12)
    at PuppetHostie.emit (/home/git/live/donut-test-ground/node_modules/wechaty-puppet/src/puppet.ts:307:18)
    at /home/git/live/donut-test-ground/node_modules/wechaty-puppet/src/puppet.ts:434:14
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
Error: 2 UNKNOWN: Stream removed
    at Object.exports.createStatusError (/home/git/live/donut-test-ground/node_modules/grpc/src/common.js:91:15)
    at Object.onReceiveStatus (/home/git/live/donut-test-ground/node_modules/grpc/src/client_interceptors.js:1209:28)
    at InterceptingListener._callNext (/home/git/live/donut-test-ground/node_modules/grpc/src/client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (/home/git/live/donut-test-ground/node_modules/grpc/src/client_interceptors.js:618:8)
    at callback (/home/git/live/donut-test-ground/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 2,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: 'Stream removed'
}

个人微信扫码并确认登录后没有反应

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer: 0.51.1

  • What is your wechaty-puppet-donut version?
    Answer: "wechaty-puppet-hostie": "^0.11.10"

  • What is your node version? (run node --version)
    Answer:10.15.0

  • What os are you using
    Answer: win10

2. Describe the bug

出现二维码,使用个人微信扫码后点击登录,但是实际并没有登录成功,还在反复出现新的二维码。

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. npm install wechaty@next
  2. npm install wechaty-puppet-hostie@next
  3. node ./index.js

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

A Pannel for dev to reboot the token instance

Is your feature request related to a problem? Please describe.

The bot sometimes gets problems or triggers bug which can only be solved by a reboot.
However, only staff members can reboot the instance. And they cannot respond in time.
We would like to reboot the token instance by ourselves.

Describe the solution you'd like
BotSentry CMD or web UI to reboot the instance.

Describe alternatives you've considered
N/A

Additional context
N/A

[enhancement]

message的函数触发非常慢,达到10多秒

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer: 0.49.8

  • What is your wechaty-puppet-donut version?
    Answer: "wechaty-puppet-hostie": "^0.10.8",

  • What is your node version? (run node --version)
    Answer: 14

  • What os are you using
    Answer: Windows 10

2. Describe the bug

发送图片的时候,message的回调特别慢,达到10多秒(基本没有10秒以内),而PadPlus的协议的只需要1-2秒就可以触发,我用的就是Example里面的代码。
.on('message', async message => {
console.log(message: ${JSON.stringify(message)})
})

3. To Reproduce

我用的就是Example里面的代码,也做了对比视频,已经发给Juzi.BOT。

4. Expected behavior

希望跟PadPlus的速度差不多

5. Actual behavior

现在的反应时间是10-15秒

6. Full Output Logs

程序没有出错,没有设置Log

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

donut failed to start

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install

The problem is still there after I run the above commands.

  1. Please search in FAQ List first, and make sure your problem has not been solved before.

Not found
3. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:
    v0.38.4

  • What is your wechaty-puppet-donut version?
    Answer:
    I don't know. I install npm install wechaty@next

  • What is your node version? (run node --version)
    Answer:
    v13.12.0

  • What os are you using
    Answer:
    Mac OS

2. Describe the bug

Give a clear and concise description of what the bug is.

18:49:04 INFO Wechaty <wechaty-puppet-hostie>() start() v0.38.4 is starting...
18:49:05 ERR PuppetHostie start() rejection: 14 UNAVAILABLE: failed to connect to all addresses
Error: 14 UNAVAILABLE: failed to connect to all addresses
    at Object.exports.createStatusError (/Users/tree/WeChatProjects/bmzf-bot/node_modules/grpc/src/common.js:91:15)
    at Object.onReceiveStatus (/Users/tree/WeChatProjects/bmzf-bot/node_modules/grpc/src/client_interceptors.js:1209:28)
    at InterceptingListener._callNext (/Users/tree/WeChatProjects/bmzf-bot/node_modules/grpc/src/client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (/Users/tree/WeChatProjects/bmzf-bot/node_modules/grpc/src/client_interceptors.js:618:8)
    at callback (/Users/tree/WeChatProjects/bmzf-bot/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 14,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: 'failed to connect to all addresses'
}
18:49:05 ERR Wechaty start() exception: 14 UNAVAILABLE: failed to connect to all addresses
18:49:05 ERR StarterBot Error: 14 UNAVAILABLE: failed to connect to all addresses
18:49:05 WARN PuppetHostie stop() is called on a OFF puppet. await ready(off) and return.
18:49:05 ERR PuppetHostie start() rejection: puppetClient had already inited
18:49:05 WARN Puppet reset() exception: Error: puppetClient had already inited
(node:87174) UnhandledPromiseRejectionWarning: Error
    at PuppetHostie.<anonymous> (/Users/tree/WeChatProjects/bmzf-bot/node_modules/wechaty/dist/src/wechaty.js:433:44)
    at PuppetHostie.emit (events.js:315:20)
    at PuppetHostie.EventEmitter.emit (domain.js:485:12)
    at PuppetHostie.emit (/Users/tree/WeChatProjects/bmzf-bot/node_modules/wechaty-puppet/dist/src/puppet.js:162:22)
    at /Users/tree/WeChatProjects/bmzf-bot/node_modules/wechaty-puppet/dist/src/puppet.js:191:18
(node:87174) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:87174) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Here is my code

function getWindowBot() {
  const token = ''
  return new Wechaty({
    puppet: 'wechaty-puppet-hostie',
    puppetOptions: {
      token,
    }
  })
}

const bot = new getWindowBot()

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

7. Additional context

Add any other context about the problem here.

[bug]

When my robot deleted the friend, the friend did not delete the case to add again with an error

"{\"contactId\":\"dymiloveyou\",\"hello\":\"\",\"id\":\"6098368222767267530\",\"scene\":0,\"stranger\":\"v3_020b3826fd0301000000000077a62090f0710a000000501ea9a3dba12f95f6b60a0536a1adb66632a379d32ee8c162521f792ffbf66e5874a0cf5aed3d5f168ca80c76272d932af6756a19fb0cd6225ae462@stranger\",\"ticket\":\"v4_000b708f0b0400000100000000005d4979349c038b37fa500773b75f1000000050ded0b020927e3c97896a09d47e6e9e018f050c892ed81a2411734233324950ae96aff08fa51248985dd3734d405733366605849af5c77c4f49e5c4f2128229cac1822d80683ffc9976a9b47733a31e056f01c60a0ae7884544c4075e4fd698f103ef4dc8930aac0425a64fd2ece2931b76d1500c7687bd@stranger\",\"type\":2}"
Error: 13 INTERNAL: Wechaty Puppet Unsupported API Error. Learn More At https://github.com/wechaty/wechaty-puppet/wiki/Compatibility
    at Object.exports.createStatusError (/Users/xuezhiwen/github/mywe/node_modules/grpc/src/common.js:91:15)
    at Object.onReceiveStatus (/Users/xuezhiwen/github/mywe/node_modules/grpc/src/client_interceptors.js:1209:28)
    at InterceptingListener._callNext (/Users/xuezhiwen/github/mywe/node_modules/grpc/src/client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (/Users/xuezhiwen/github/mywe/node_modules/grpc/src/client_interceptors.js:618:8)
    at callback (/Users/xuezhiwen/github/mywe/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 13,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: 'Wechaty Puppet Unsupported API Error. Learn More At https://github.com/wechaty/wechaty-puppet/wiki/Compatibility'
}
on('friendship', async friendship => {
    console.log(JSON.stringify(friendship))
    if (true) {
      friendship.accept().catch((err) => {
        console.log(err)
      })
    }
  })

bot.on("room-join",xxxxxx) doesn't work

Bot can't monitor room-join either in normal wechat room or ex -wechat external room by bellow code:

bot
.on("room-join", onRoomJoin) // 加入房间监听

version info:
"wechaty": "^0.51.1",
"wechaty-puppet": "^0.32.3",

添加好友添加不上,User do not exist

    //可以搜索到
    var v = await bot.Friendship.search({ weixin: 'kc07327' })
    //添加操作时候报错
  var v1=  await   bot.Friendship.add(v,'hello')

报错信息
Error: 13 INTERNAL: Can not search contact by wxid_2u3gi8xhcznk22, status: -4 reason: User do not exist

FileBox image naming potential risk

1. Versions

  • What is your wechaty version?
    Answer:

    python-wechaty 0.5.dev1
    wechaty-puppet 0.0.8
    wechaty-puppet-hostie 0.2.2

  • What is your wechaty-puppet-donut version?
    Answer: as above

  • What is your node version? (run node --version)
    Answer: I'm using python-wechaty

  • What os are you using
    Answer:

    docker images build from python:3.7-slim

2. Describe the bug

for image_url in image_urls:
    file_box = FileBox.from_url(f'''{image}''', name='jing-dong.jpg')

code as above, if there're some images need to use FileBox function from_url to send, the paramater name is always the same one(such like jing-dong.jpg), it will make the server(it shoule be grpc) side breakdown and finally get the connection lost from our code.

3. To Reproduce

Steps to reproduce the behavior:

  1. using above code and make sure image_urls is be identified, urls shoule be different.
  2. send the images to a chat and wait, the issue will reproduce(it will take a long time)

4. Expected behavior

I know the Windows Hook should save the url image and send to a chat, the image saving name is indentified by name that from_url given, I suggest to add a timestamp on image's naming when saving the image

5. Actual behavior

6. Full Output Logs

7. Additional context

[bug]

Room ready() member.ready() exception

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install

done

  1. Please search in FAQ List first, and make sure your problem has not been solved before.
    done

  2. Please search in the issue first, and make sure your problem had not been reported before
    done

1. Versions

  • What is your wechaty version?
    Answer: v0.50.7

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer: v10.16.1

  • What os are you using
    Answer: centOs 6.5

2. Describe the bug

Seems something wrong with Room.memberAll(), it will throw the follow error when the Bot relogin:

ERR Room ready() member.ready() exception:
Error: 13 INTERNAL: TIMEOUT, sync contact timeout, id: wxid_xxxxxxx

and will show every member in the room which memberAll() was called

user not found by token

之前用rock的token没问题,但是换成donut却提示我user not found by token,能告诉我该怎么办吗?

13:10:45 ERR PuppetHostie start() rejection: 16 UNAUTHENTICATED: {code:8,message:"user not found by token puppet_donut_0501ab484faec11b"}
Error: 16 UNAUTHENTICATED: {code:8,message:"user not found by token puppet_donut_0501ab484faec11b"}
    at Object.exports.createStatusError (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\common.js:91:15)
    at Object.onReceiveStatus (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:1209:28)
    at InterceptingListener._callNext (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:618:8)
    at callback (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:847:24) {
  code: 16,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: '{code:8,message:"user not found by token puppet_donut_0501ab484faec11b"}'
}
13:10:45 ERR Wechaty start() exception: 16 UNAUTHENTICATED: {code:8,message:"user not found by token puppet_donut_0501ab484faec11b"}
(node:14728) UnhandledPromiseRejectionWarning: Error: 16 UNAUTHENTICATED: {code:8,message:"user not found by token puppet_donut_0501ab484faec11b"}
    at Object.exports.createStatusError (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\common.js:91:15)
    at Object.onReceiveStatus (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:1209:28)
    at InterceptingListener._callNext (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:618:8)
    at callback (D:\node-workspace\wechaty-getting-started\node_modules\grpc\src\client_interceptors.js:847:24)
(node:14728) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:14728) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
13:10:45 WARN PuppetHostie stop() is called on a OFF puppet. await ready(off) and return.
13:10:45 ERR PuppetHostie start() rejection: event stream exists
13:10:45 WARN Puppet reset() exception: Error: event stream exists
(node:14728) UnhandledPromiseRejectionWarning: Error
    at PuppetHostie.<anonymous> (D:\node-workspace\wechaty-getting-started\node_modules\wechaty\dist\src\wechaty.js:271:44)
    at PuppetHostie.emit (events.js:314:20)
    at PuppetHostie.EventEmitter.emit (domain.js:483:12)
    at D:\node-workspace\wechaty-getting-started\node_modules\wechaty-puppet\dist\src\puppet.js:230:18
(node:14728) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)

Modify group name

🚨 The issue tracker is not for questions 🚨
After modify group name,it show old name when receive message.

Unknow reason for PuppetServiceImpl stop()

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:

  • What os are you using
    Answer:

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:
18:09:58 VERB PuppetDonut messageRawPayloadParser({"at_user_list":[],"from_wxid":"wxid_orp7dihe2pm112","is_pc":0,"msg":"dong","msgid":"7392016307941416295","room_wxid":"17962906510@chatroom","timestamp":1586945397,"to_wxid":"17962906510@chatroom","wx_type":1})
18:09:58 VERB Room ready()
18:09:58 VERB IoClient onMessage(Message#Text[🗣Contact<jessicaTu>@👥Room<ChatOps - CTP Status>] dong)
18:09:59 VERB PuppetServiceImpl messagePayload()
18:09:59 VERB Puppet messagePayload(7392016307941416295)
18:10:14 VERB PuppetServiceImpl ding()
18:10:14 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:10:29 VERB PuppetServiceImpl ding()
18:10:29 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:10:46 VERB PuppetServiceImpl ding()
18:10:46 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:11:02 VERB PuppetServiceImpl ding()
18:11:02 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:11:21 VERB PuppetServiceImpl ding()
18:11:21 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:11:37 VERB PuppetServiceImpl ding()
18:11:37 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:11:53 VERB PuppetServiceImpl ding()
18:11:53 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:12:08 VERB PuppetServiceImpl ding()
18:12:08 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:12:23 VERB PuppetServiceImpl ding()
18:12:23 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:12:39 VERB PuppetServiceImpl ding()
18:12:39 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:12:55 VERB PuppetServiceImpl ding()
18:12:55 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:13:11 VERB PuppetServiceImpl ding()
18:13:11 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:13:28 VERB PuppetServiceImpl ding()
18:13:28 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:13:46 VERB PuppetServiceImpl ding()
18:13:46 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:14:01 VERB PuppetServiceImpl ding()
18:14:01 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:14:17 VERB PuppetServiceImpl ding()
18:14:17 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:14:32 VERB PuppetServiceImpl ding()
18:14:32 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:15:03 VERB PuppetServiceImpl ding()
18:15:03 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:15:23 VERB PuppetServiceImpl ding()
18:15:23 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:15:40 VERB PuppetServiceImpl ding()
18:15:40 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:15:59 VERB PuppetServiceImpl ding()
18:15:59 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:16:18 VERB PuppetServiceImpl ding()
18:16:18 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:16:36 VERB PuppetServiceImpl ding()
18:16:36 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:19:04 VERB PuppetServiceImpl ding()
18:19:04 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
18:19:04 VERB PuppetServiceImpl stop()
18:19:04 VERB EventStreamManager stop()
18:19:04 VERB EventStreamManager this.onStreamingCallEnd() this.eventStream.on(finish) fired
18:19:04 VERB EventStreamManager connectPuppetEventToStreamingCall() unconnect() 13 callbacks
18:19:04 VERB PuppetDonut stop()
18:19:04 VERB StateSwitch <PuppetDonut> off(pending) <- (false)
18:19:04 VERB PuppetDonut stopBridge()
18:19:04 VERB Bridge stop()
18:19:04 VERB CacheManager release()
18:19:04 VERB CacheManager releaseCache()
18:31:52 WARN Io initWebSocket() close event[1001: CloudFlare WebSocket proxy restarting]
18:31:52 VERB Io reconnect()
18:31:52 WARN Io reconnect() will reconnect after 0 s
18:31:52 VERB Io initWebSocket()
18:31:53 VERB Io initWebSocket() connected with protocol [io|0.0.1|ck910t2di0000j8tkadnl77nh]

7. Additional context

Add any other context about the problem here.

[bug]

Image message should return xml content.

Is your feature request related to a problem? Please describe.
I find image message return xml content as text property in puppet-padpro,but in donut I find the text is empty.Can the donut return xml content for image message?

[enhancement]

Same QR Code Shows Up Upon Login

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install

Done

  1. Please search in FAQ List first, and make sure your problem has not been solved before.
    Done

  2. Please search in the issue first, and make sure your problem had not been reported before
    Done

1. Versions

  • What is your wechaty version?
    Answer: 0.40.10

  • What is your wechaty-puppet-donut version?
    Answer: 0.8.3

  • What is your node version? (run node --version)
    Answer: 10.16.0

  • What os are you using
    Answer: Ubuntu 18.04.4 LTS in development environment and Cent OS 7.8.2003.

2. Describe the bug

Last night, I logged off from the Windows WeChat through my phone and then logged in when I was trying to test my onReady handler. However, after running for several hours, the login QR code appeared on the terminal and the bot stopped working. I double checked my phone and it seemed that the Windows login was still there. I sent the login message to the BotSentry as usual but received a QR code instead of logging in directly. I scanned the QR code but it had already expired. Then I repeated this procedure for several times but I constantly got the same expired QR code.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:
I'm not sure how to describe the reproduction of this problem w/o spilling my serect key since it happens in the login phase but here's how I got into this problem:

  • Login with puppet-donut just as usual by sending a message to BotSentry
  • Logout from Windows device from WeChat's mobile app
  • Login with puppet-donut

4. Expected behavior

I should receive a new QR code when I login through the bot.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!
Sorry about this lengthy log message but I couldn't collapse the log message with code formatting.

16:58:52 SILL Puppet Config: WECHATY_LOG set level to silly

16:58:53 INFO Config registering process.on("unhandledRejection") for development/debug

16:58:53 VERB Config constructor()

Loading Config: [object Object]

16:58:53 VERB Wechaty constructor()

16:58:53 VERB Wechaty constructor() WechatyOptions.profile DEPRECATED. use WechatyOptions.name instead.

16:58:53 VERB StateSwitch constructor(Wechaty, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")

16:58:53 VERB StateSwitch constructor(WechatyReady, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")

16:58:53 VERB Wechaty on(scan, function) registered

16:58:53 VERB Wechaty addListenerFunction(scan)

16:58:53 VERB WechatyPluginContrib VoteOut({"room":["(Redacted)@chatroom","(Redacted)@chatroom"],"threshold":10,"whitelist":[],"downEmoji":["[弱]","[ThumbsDown]"],"warn":["您的聊天内容招致众怒,启动桃片放逐程序,当前票数为 {{ downNum }},当天累计票数达到 {{ threshold }} 时,你将被请出此群。"],"kick":"经 {{ voters }} 几人投票,你即将被放逐。","repeat":"你已经投票过 {{ votee }} 了,无需再投。"})

16:58:53 VERB WechatyPluginContrib roomMatcher(["(Redacted)@chatroom","(Redacted)@chatroom"])

16:58:53 VERB WechatyPluginContrib contactMatcher([])

16:58:53 VERB WechatyPluginContrib roomTalker("你已经投票过 {{ votee }} 了,无需再投。")

16:58:53 VERB WechatyPluginContrib roomTalker(["您的聊天内容招致众怒,启动桃片放逐程序,当前票数为 {{ downNum }},当天累计票数达到 {{ threshold }} 时,你将被请出此群。"])

16:58:53 VERB WechatyPluginContrib messageTalker("经 {{ voters }} 几人投票,你即将被放逐。")

16:58:53 VERB WechatyPluginContrib VoteOut() VoteOutPlugin(Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>())

16:58:53 VERB Wechaty on(heartbeat, function) registered

16:58:53 VERB Wechaty addListenerFunction(heartbeat)

16:58:53 VERB Wechaty on(message, function) registered

16:58:53 VERB Wechaty addListenerFunction(message)

16:58:53 VERB WechatyPluginContrib EventHotHandler("{"friendship":"../src/handlers/onFriendship","message":"../src/handlers/onMessage"}")

16:58:53 VERB HotImport callerResolve(../src/handlers/onFriendship, /home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-plugin-contrib/dist/src/contrib/event-hot-handler.js)

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/hot-import/dist/src/hot-import.js, type=Object

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-plugin-contrib/dist/src/contrib/event-hot-handler.js, type=Object

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/src/bot.js, type=Object

16:58:53 SILL HotImport callerResolve() callerFile=/home/danielz/WebstormProjects/icso-wechat-bot/src/bot.js

16:58:53 VERB HotImport callerResolve(../src/handlers/onMessage, /home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-plugin-contrib/dist/src/contrib/event-hot-handler.js)

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/hot-import/dist/src/hot-import.js, type=Object

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-plugin-contrib/dist/src/contrib/event-hot-handler.js, type=Object

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/src/bot.js, type=Object

16:58:53 SILL HotImport callerResolve() callerFile=/home/danielz/WebstormProjects/icso-wechat-bot/src/bot.js

16:58:53 VERB WechatyPluginContrib EventHotHandler installing on Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>() ...

16:58:53 VERB HotImport hotImport(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onFriendship, true)

16:58:53 VERB HotImport callerResolve(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onFriendship, undefined)

16:58:53 SILL HotImport importFile(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onFriendship.js)

16:58:53 VERB HotImport hotImport(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onMessage, true)

16:58:53 VERB HotImport callerResolve(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onMessage, undefined)

16:58:53 SILL HotImport importFile(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onMessage.js)

16:58:53 VERB Wechaty <wechaty-puppet-hostie>(ICSO Helper) start() v0.40.10 is starting...

16:58:53 VERB Wechaty id: ckbwrce9t00005t5n6cuiepwq

16:58:53 SILL StateSwitch <Wechaty> on() is false

16:58:53 SILL StateSwitch <WechatyReady> off() is true

16:58:53 VERB StateSwitch <WechatyReady> off(true) <- (true)

16:58:53 SILL StateSwitch <Wechaty> on() is false

16:58:53 VERB StateSwitch <Wechaty> on(pending) <- (false)

16:58:53 VERB MemoryCard constructor("ICSO Helper")

16:58:53 VERB MemoryCard getStorage() for storage type: N/A

16:58:53 VERB getStorage name: ICSO Helper, options: {"type":"file"}

16:58:53 VERB StorageFile constructor(ICSO Helper, ...)

16:58:53 VERB StorageBackend constructor(ICSO Helper, { type: file })

16:58:53 VERB MemoryCard load() from storage: StorageFile</home/danielz/WebstormProjects/icso-wechat-bot/ICSO Helper.memory-card.json>

16:58:53 VERB StorageFile load() from /home/danielz/WebstormProjects/icso-wechat-bot/ICSO Helper.memory-card.json

16:58:53 VERB MemoryCard load() file not exist, NOOP

16:58:53 VERB Wechaty initPuppet() wechaty-puppet-hostie

16:58:53 VERB MemoryCard multiplex(puppet)

16:58:53 VERB MemoryCard static multiplex(MemoryCard<ICSO Helper>, puppet)

16:58:53 VERB MemoryCard constructor({"name":"ICSO Helper","multiplex":{"name":"puppet","parent":{"options":{"name":"ICSO Helper"},"name":"ICSO Helper","payload":{},"multiplexNameList":[],"storage":{"name":"ICSO Helper","options":{"type":"file"},"absFileName":"/home/danielz/WebstormProjects/icso-wechat-bot/ICSO Helper.memory-card.json"}}}})

16:58:53 VERB PuppetManager resolve({puppet: wechaty-puppet-hostie, puppetOptions: {"token":"donut-test-user-(Redacted)"}})

16:58:53 VERB PuppetManager resolveName(wechaty-puppet-hostie)

16:58:53 VERB PuppetManager checkModule(wechaty-puppet-hostie)

16:58:53 SILL PuppetManager checkModule() wechaty-puppet-hostie installed version 0.8.3 satisfied range ^0.8.3

16:58:53 SILL HotImport initProxyModule(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onFriendship.js)

16:58:53 SILL HotImport cloneProperties()

16:58:53 SILL HotImport cloneProperties() cloning default

16:58:53 SILL HotImport makeHot(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onFriendship.js)

16:58:53 SILL HotImport initProxyModule(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onMessage.js)

16:58:53 SILL HotImport cloneProperties()

16:58:53 SILL HotImport cloneProperties() cloning default

16:58:53 SILL HotImport makeHot(/home/danielz/WebstormProjects/icso-wechat-bot/src/handlers/onMessage.js)

16:58:53 VERB Wechaty on(friendship, function) registered

16:58:53 VERB Wechaty addListenerFunction(friendship)

16:58:53 VERB Wechaty on(message, function) registered

16:58:53 VERB Wechaty addListenerFunction(message)

16:58:53 VERB Puppet constructor({"token":"donut-test-user-(Redacted)"}) #0

16:58:53 VERB StateSwitch constructor(PuppetHostie, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")

16:58:53 VERB MemoryCard constructor(undefined)

16:58:53 VERB MemoryCard getStorage() for storage type: N/A

16:58:53 VERB MemoryCard load() from storage: N/A

16:58:53 VERB MemoryCard load() no storage

16:58:53 VERB Puppet constructor() watchdog timeout set to 60 seconds

16:58:53 VERB HotImport callerResolve(., /home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-puppet/dist/src/puppet.js)

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/hot-import/dist/src/hot-import.js, type=Object

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-puppet/dist/src/puppet.js, type=null

16:58:53 SILL HotImport callerResolve() callsites() file=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js, type=null

16:58:53 SILL HotImport callerResolve() callerFile=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js

16:58:53 VERB Puppet constructor() childClassPath=/home/danielz/WebstormProjects/icso-wechat-bot/node_modules/wechaty-puppet-hostie/dist/src/client

16:58:53 VERB Puppet constructor() memory.load() done

16:58:53 VERB Puppet setMemory()

16:58:53 VERB Wechaty initPuppetEventBridge(Puppet#0<PuppetHostie>(ICSO Helper))

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(friendship) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(login) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(logout) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(message) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(room-invite) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(room-join) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(room-leave) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(room-topic) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(scan) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(dong) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(error) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(heartbeat) (listenerCount:1) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(ready) (listenerCount:0) registering...

16:58:53 VERB Wechaty initPuppetEventBridge() puppet.on(reset) (listenerCount:1) registering...

16:58:53 VERB Wechaty initAccessory(Puppet#0<PuppetHostie>(ICSO Helper))

16:58:53 SILL Accessory <Contact> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <ContactSelf> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Friendship> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Image> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Message> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Room> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <RoomInvitation> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Tag> static set wechaty = "Wechaty#ckbwrce(Redacted)<wechaty-puppet-hostie>(ICSO Helper)"

16:58:53 SILL Accessory <Contact> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <ContactSelf> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <Friendship> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <Image> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <Message> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <Room> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <RoomInvitation> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 SILL Accessory <Tag> static set puppet = "Puppet#0<PuppetHostie>(ICSO Helper)"

16:58:53 VERB PuppetHostie start()

16:58:53 SILL StateSwitch <PuppetHostie> on() is false

16:58:53 SILL StateSwitch <PuppetHostie> on() is false

16:58:53 VERB StateSwitch <PuppetHostie> on(pending) <- (false)

16:58:53 VERB PuppetHostie startGrpcClient()

16:58:53 VERB PuppetHostie discoverHostieIp(donut-test-user-**(Redacted)**)

16:58:53 VERB PuppetHostie startGrpcStream()

16:58:54 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_SCAN(22), payload:"
{"qrcode":"http://weixin.qq.com/x/YuR07kI**Redacted**","status":2}"})

[QR Code]

16:58:54 SILL StateSwitch <PuppetHostie> on() is pending

16:58:54 VERB StateSwitch <PuppetHostie> on(true) <- (pending)

16:58:54 VERB Puppet recover$() switchOn$ fired

16:58:54 VERB Puppet recover$() heartbeat: undefined

16:58:54 VERB Puppet recover$() switchOn$ fired

16:58:54 VERB Puppet recover$() heartbeat: undefined

16:58:54 VERB Wechaty on(heartbeat, function) registered

16:58:54 VERB Wechaty addListenerFunction(heartbeat)

16:58:54 SILL StateSwitch <Wechaty> on() is pending

16:58:54 VERB StateSwitch <Wechaty> on(true) <- (pending)

16:59:09 VERB Puppet recover$() heartbeatDing()

16:59:09 SILL PuppetHostie ding(recover$() CPR #0)

16:59:09 VERB PuppetHostie constructor() recover$().subscribe() next(0)

16:59:09 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

16:59:09 SILL Wechaty memoryCheck() free: 665 MB, require: 4 MB

16:59:09 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:09 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:24 VERB Puppet recover$() heartbeatDing()

16:59:24 SILL PuppetHostie ding(recover$() CPR #0)

16:59:24 VERB PuppetHostie constructor() recover$().subscribe() next(0)

16:59:25 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

16:59:25 SILL Wechaty memoryCheck() free: 646 MB, require: 4 MB

16:59:25 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:25 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:40 VERB Puppet recover$() heartbeatDing()

16:59:40 SILL PuppetHostie ding(recover$() CPR #0)

16:59:40 VERB PuppetHostie constructor() recover$().subscribe() next(0)

16:59:40 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

16:59:40 SILL Wechaty memoryCheck() free: 654 MB, require: 4 MB

16:59:40 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:40 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:55 VERB Puppet recover$() heartbeatDing()

16:59:55 SILL PuppetHostie ding(recover$() CPR #0)

16:59:55 VERB PuppetHostie constructor() recover$().subscribe() next(0)

16:59:55 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

16:59:55 SILL Wechaty memoryCheck() free: 650 MB, require: 4 MB

16:59:55 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

16:59:55 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:10 VERB Puppet recover$() heartbeatDing()

17:00:10 SILL PuppetHostie ding(recover$() CPR #0)

17:00:10 VERB PuppetHostie constructor() recover$().subscribe() next(0)

17:00:11 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

17:00:11 SILL Wechaty memoryCheck() free: 647 MB, require: 4 MB

17:00:11 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:11 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:26 VERB Puppet recover$() heartbeatDing()

17:00:26 SILL PuppetHostie ding(recover$() CPR #0)

17:00:26 VERB PuppetHostie constructor() recover$().subscribe() next(0)

17:00:26 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

17:00:26 SILL Wechaty memoryCheck() free: 651 MB, require: 4 MB

17:00:26 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:26 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:41 VERB Puppet recover$() heartbeatDing()

17:00:41 SILL PuppetHostie ding(recover$() CPR #0)

17:00:41 VERB PuppetHostie constructor() recover$().subscribe() next(0)

17:00:41 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_DONG(3), payload:"{"data":"recover$() CPR #0"}"})

17:00:41 SILL Wechaty memoryCheck() free: 643 MB, require: 4 MB

17:00:41 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:41 VERB Puppet recover$() heartbeat: {"data":"onGrpcStreamEvent(EVENT_TYPE_DONG)","timeout":60000}

17:00:56 VERB Puppet recover$() heartbeatDing()

17:00:56 SILL PuppetHostie ding(recover$() CPR #0)

7. Additional context

Everything worked well until I clicked "logged out from Windows device" on my phone.

[bug]

Is Channels activities supported?

Channels is a new feature for Wechat. People can post their video works through this new gateway, which is just located below the gateway of Moments. Nowadays more and more people are making use of this new deployed feature and more and more Channels activities are shared through WeChat personal account by means of private messages and chatting groups.

I checked the Donut log and found that this kinds of message (Channels activities,视频号信息) is actually NOT unknown , but with a type number of 51. Is this meant that this kind of message is already fully supported by our puppet? If so, how should I prepare for a new Channel activity to send/forward to someone via PM or to a group?

Here goes the segment of the log:
2020-07-01 09:54:12,949 - Wechaty - INFO - receive message <talker Contact <wxid_xxx> <xxxx>, say to contact <Contact <wxid_yyyyy> <yyyyyyy>>, <?xml version="1.0"?> <msg> <appmsg appid="" sdkver="0"> <title>当前微信版本不支持展示该内容,请升级至最新版本。</title> <des /> <action /> <type>51</type> <showtype>0</showtype> <soundtype>0</soundtype> <mediatagname /> ...

Send MiniProgram in proper format

Is your feature request related to a problem? Please describe.

  1. when sending mini-program, the description is not respected on iPhone but it can be shown on Android phones.
  2. How to generate the thumbnail url and thumbnail key for an image?

Describe the solution you'd like

I hope both 1 & 2 can be fixed.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

[enhancement]

Database is not open

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer:

  • What os are you using
    Answer:

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:
17:36:24 VERB EventStreamManager grpcEmit(EVENT_TYPE_MESSAGE[2], {"messageId":"2586266925152520311"})
17:36:24 VERB PuppetDonut messageRawPayloadParser({"at_user_list":[],"from_wxid":"wxid_0mp2uchkzsx122","is_pc":1,"msg":"Message#Text[🗣Contact<OssChat>]\tDer! I'm going to exit now, see you, bye!\nOSSChat v0.4.2","msgid":"2586266925152520311","room_wxid":"18995691396@chatroom","timestamp":1586856984,"to_wxid":"18995691396@chatroom","wx_type":1})
17:36:24 SILL Puppet messagePayload(2586266925152520311) cache SET
17:36:24 VERB Room ready()
17:36:24 SILL Contact ready() @ Puppet#0<PuppetDonut>(donut-oss) with id="wxid_0mp2uchkzsx122"
17:36:24 SILL Contact ready() isReady() true
17:36:24 VERB IoClient onMessage(Message#Text[🗣Contact<OssChat>@👥Room<ChatOps - OSSChat>]      Message#Text[🗣Contact<OssChat>] Der! I'm going to exit now, see you, )
17:36:24 SILL Io ioMessage() is a nop function before be overwriten from cloud
17:36:24 VERB PuppetServiceImpl messagePayload()
17:36:24 VERB Puppet messagePayload(2586266925152520311)
17:36:29 SILL Io start() setInterval() ws.ping()
17:36:33 VERB PuppetServiceImpl stop()
17:36:33 VERB EventStreamManager stop()
17:36:33 VERB EventStreamManager this.onStreamingCallEnd() this.eventStream.on(finish) fired
17:36:33 VERB EventStreamManager connectPuppetEventToStreamingCall() unconnect() 13 callbacks
17:36:33 VERB PuppetDonut stop()
17:36:33 SILL StateSwitch <PuppetDonut> off() is false
17:36:33 SILL StateSwitch <PuppetDonut> off() is false
17:36:33 VERB StateSwitch <PuppetDonut> off(pending) <- (false)
17:36:33 VERB PuppetDonut stopBridge()
17:36:33 SILL StateSwitch <PuppetDonut> on() is false
17:36:33 VERB Bridge stop()
17:36:33 VERB CacheManager release()
17:36:33 VERB CacheManager releaseCache()
17:36:33 SILL CacheManager releaseCache() closing caches ...
17:36:39 SILL Io start() setInterval() ws.ping()
17:36:39 VERB PuppetServiceImpl ding()
17:36:39 SILL PuppetDonut ding(recover$() CPR)
17:36:42 SILL Io initWebSocket() ws.on(message): {"name":"online","payload":"puppet-hostie"}
17:36:42 WARN Io UNKNOWN on(online): puppet-hostie
17:36:42 SILL Io initWebSocket() ws.on(message): {"name":"offline","payload":"puppet-hostie"}
17:36:42 WARN Io UNKNOWN on(offline): puppet-hostie
17:36:43 VERB PuppetServiceImpl start()
17:36:43 VERB PuppetDonut start()
17:36:43 SILL StateSwitch <PuppetDonut> on() is false
17:36:43 SILL StateSwitch <PuppetDonut> on() is false
17:36:43 VERB StateSwitch <PuppetDonut> on(pending) <- (false)
17:36:43 VERB Bridge init()
17:36:43 VERB Donut constructor(C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll)
17:36:43 VERB Donut(ffi-adapter) constructor() singleton
17:36:43 VERB Donut(ffi-adapter) GetUserWeChatVersion()
17:36:43 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
17:36:43 VERB Donut(ffi-adapter) UseUtf8()
17:36:43 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
17:36:43 VERB PuppetDonut startBridge()
17:36:43 SILL StateSwitch <PuppetDonut> off() is false
17:36:43 VERB Bridge start()
17:36:43 VERB BridgeCallback getConnectCallback()
17:36:43 VERB BridgeCallback getCloseCallback()
17:36:43 VERB BridgeCallback getEventCallback()
17:36:43 VERB Donut(ffi-adapter) InitWeChatSocket(?(?,???,???)
17:36:43 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
17:36:43 VERB PuppetServiceImpl event()
17:36:43 VERB EventStreamManager start(stream)
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() for Puppet#0<PuppetDonut>(donut-oss)
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(friendship) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(login) (listenerCount:2) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(logout) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(message) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-invite) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-join) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-leave) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-topic) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(scan) (listenerCount:2) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(dong) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(error) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(heartbeat) (listenerCount:2) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(ready) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(reset) (listenerCount:1) registering...
17:36:43 VERB EventStreamManager onStreamingCallEnd(callback)
17:36:43 VERB EventStreamManager start() puppet is logged in, emit a login event for downstream
17:36:43 VERB Puppet selfId()
17:36:43 VERB EventStreamManager grpcEmit(EVENT_TYPE_LOGIN[25], {"contactId":"wxid_0mp2uchkzsx122"})
17:36:43 VERB Donut(ffi-adapter) InjectWeChatPid(7348,C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WeChatHelper.dll)
17:36:43 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
17:36:44 SILL Bridge reconnect client id : 7348
17:36:44 SILL StateSwitch <PuppetDonut> on() is pending
17:36:44 VERB StateSwitch <PuppetDonut> on(true) <- (pending)
17:36:44 SILL ConnectCallback: 2
17:36:44 VERB PuppetServiceImpl contactPayload()
17:36:44 VERB Bridge processEvent(DEBUG_LOG)
17:36:44 SILL debug log: "Client[1] is Connected!!!"
17:36:44 VERB Bridge processEvent(UNREAD_MSG_COUNT_CHANGE_MSG)
17:36:44 WARN Bridge onEvent() Unknown EventType: 11088, payload : {"login_hwnd":0,"main_hwnd":8062322,"pid":7348}
17:36:44 VERB Bridge processEvent(USER_LOGIN)
17:36:44 SILL init cache manager
17:36:44 VERB CacheManager init()
17:36:44 VERB CacheManager init() CacheManager has been initialized, no need to initialize again.
17:36:44 VERB PuppetDonut onLogin(wxid_0mp2uchkzsx122)
17:36:44 WARN PuppetDonut onLogin(wxid_0mp2uchkzsx122) already login? NOOP
17:36:44 VERB PuppetServiceImpl messageSendText()
17:36:44 VERB PuppetDonut messageSendText("17376996519@chatroom", [太阳] (OSSChat,OSSChat))
17:36:44 SILL request(SEND_TEXTMSG, [object Object])
17:36:44 VERB Donut(ffi-adapter) SendWeChatData(2,{"data":{"content":"[太阳] (OSSChat,OSSChat)","to_wxid":"17376996519@chatroom"},"type":11036})
17:36:44 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
17:36:44 VERB PuppetServiceImpl roomPayload()
17:36:44 VERB Puppet roomPayload(18995691396@chatroom)
17:36:44 VERB Bridge processEvent(RECV_TEXT_MSG)
17:36:44 VERB PuppetDonut onMessage({"at_user_list":[],"from_wxid":"wxid_0mp2uchkzsx122","is_pc":1,"msg":"[太阳] (OSSChat,OSSChat)","msgid":"1146061183493906033","room_wxid":"17376996519@chatroom","timestamp":1586857004,"to_wxid":"17376996519@chatroom","wx_type":1})
17:36:44 VERB PuppetDonut contactRawPayload(wxid_0mp2uchkzsx122)
17:36:44 VERB Bridge contactRawPayload(wxid_0mp2uchkzsx122)
17:36:44 ERR Config ###########################
17:36:44 ERR Config unhandledRejection: ReadError: Database is not open [object Promise]
17:36:44 ERR Config ###########################
17:36:44 ERR Config process.on(unhandledRejection) promise.catch(Database is not open)
Config ReadError: Database is not open
    at maybeError (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\levelup\lib\levelup.js:339:32)
    at LevelUP.get (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\levelup\lib\levelup.js:181:7)
    at FlashStore.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\dist\flash-store.js:181:54)
    at step (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\dist\config.js:11:19)
    at Object.next (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\bundles\flash-store.umd.js:4:53)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\dist\flash-store.js:59:34
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\dist\flash-store.js:45:1)
    at FlashStore.get (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\flash-store\dist\flash-store.js:171:1)
    at CacheManager.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\donut\cache-manager.ts:78:40)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\cache-manager.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\cache-manager.js:4:12)
    at CacheManager.getContact (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\cache-manager.js:63:16)
    at Bridge.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\donut\bridge.ts:400:46)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:4:12)
    at Bridge.contactRawPayload (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:340:16)
    at PuppetDonut.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\puppet-donut.ts:616:24)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:4:12)
    at PuppetDonut.contactRawPayload (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:497:16)
    at PuppetDonut.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\puppet-donut.ts:276:18)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:4:12)
    at PuppetDonut.onMessage (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\puppet-donut.js:196:16)
    at Bridge.emit (events.js:198:13)
    at Bridge.EventEmitter.emit (domain.js:448:20)
    at Bridge.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\donut\bridge.ts:310:14)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:4:12)
    at Bridge.processEvent (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:164:16)
    at Bridge.<anonymous> (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\src\donut\bridge.ts:210:18)
    at Generator.next (<anonymous>)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:4:12)
    at Bridge.onEvent (C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dist\src\donut\bridge.js:148:16)
    at C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\ffi\lib\callback.js:66:25
(node:8320) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 4)
17:36:44 VERB PuppetServiceImpl roomMemberList()
17:36:44 VERB PuppetDonut roomMemberList(18995691396@chatroom)
17:36:44 SILL Bridge roomMemberList(18995691396@chatroom)
17:36:44 ERR PuppetServiceImpl grpcError() roomMemberList() rejection: Database is not open
{ code: 13, details: 'Database is not open' }

7. Additional context

Add any other context about the problem here.

[bug]

ERROR - internal error <'Contact' object has no attribute '_events'>

Important:Please file the issue follow the template, or we won't help you to solve the problem.

1. Versions

  • What is your wechaty version?
    Answer: python-wechaty:0.6.7, python-puppet:0.0.16, python-puppet-hostie:0.2.12

  • What is your wechaty-puppet-donut version?
    Answer: as above

  • What is your node version? (run node --version)
    Answer: without node

  • What os are you using
    Answer: Window7 and docker images python3.7-slim

2. Describe the bug

Event 'friendship' can't touch off

3. To Reproduce

bot = Wechaty().on('friendship', xxx_function)
await bot.start()

4. Expected behavior

5. Actual behavior

6. Full Output Logs

2020-08-07 15:11:41,323 - Wechaty - INFO - receive <friendship> event <EventFriendshipPayload(friendship_id='4737034829204869855')>
2020-08-07 15:11:41,323 - FriendShip - INFO - Friendship constructor 4737034829204869855
2020-08-07 15:11:41,325 - FriendShip - INFO - ready() sync the friendship payload
2020-08-07 15:11:41,404 - FriendShip - INFO - get hello message <添加好友测试> of friendship <FriendshipPayloadResponse(id='4737034829204869855', contact_id='wxid_vfvfj40w8j6z22', hello='添加好友测试', type=2, stranger='v1_320ddbe36f749accb5004445f5f617feb76de39d175d4fead70ee58cff3e69836adc2753aa9ea84756608ddeae13ad33@stranger', ticket='v4_000b708f0b0400000100000000003baf758d70799fd94cc0acfe2c5f1000000050ded0b020927e3c97896a09d47e6e9e0246e036c498b8591641bb7704b5c240d606ef3a112f11e788fb50fc98ea02236441728eeba3815a9376f05eac9baa2cd153f627b7bdc08e814da0f8b63b186cf2abc588a39899d174d98f7d74b7afea90aac2dd33d316cb5c634ab3e7db0e495c0aeddf6b5d18bc13@stranger', scene=30)>
2020-08-07 15:11:41,404 - Wechaty - ERROR - internal error <'Contact' object has no attribute '_events'>

7. Additional context

after Wechat PC client upgrade, this event can't touch off anymore

[bug]

Unexpect message type for donut

I am using Wechaty.Grpc, sorry for did not follow the existing issue template.

I made a test with Wechaty.Grpc and donut token, I got the wrong message type from donut.

Here is the complete code:

    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var url = @"https://api.chatie.io/v0/hosties/" + "puppet_donut_xxxxxx";
            HostieEndPoint model = new HostieEndPoint();
            using (var client = new HttpClient())
            {
                var response = client.GetAsync(url).Result;
                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    model = JsonConvert.DeserializeObject<HostieEndPoint>(await response.Content.ReadAsStringAsync());
                }
            }

            string endPoint = model.IP + ":" + model.Port;
            // 方式一
            endPoint = "http://" + model.IP + ":" + model.Port;


            AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);

            // 方式一
            var channel = Grpc.Net.Client.GrpcChannel.ForAddress(endPoint);

            //var channel = new Channel(endPoint, ChannelCredentials.Insecure);



            var grpcClient = new PuppetClient(channel);

            try
            {
                var version = grpcClient.Version(new VersionRequest()).Version;

                //var resonse = grpcClient.Ding(new DingRequest() { Data = "ding" });

                //await channel.ShutdownAsync();
            }
            catch (Exception ex)
            {

            }
            var ministring = "";
            var eventStream = grpcClient.Event(new EventRequest());
            var stream = Task.Run(async () =>
            {
                await foreach (var resp in eventStream.ResponseStream.ReadAllAsync())
                {
                    EventType eventType = resp.Type;
                    string payload = resp.Payload;
                    if (eventType == EventType.Scan)
                    {
                        var eventData = JsonConvert.DeserializeObject<EventScanPayload>(payload);
                        string qrcodeImageUrl = "https://wechaty.github.io/qrcode/" + eventData.Qrcode;
                        Console.WriteLine($"onScan {eventData.Status},qrCodeUrl:{qrcodeImageUrl}");

                        Url generator = new Url(qrcodeImageUrl);

                        QRCodeGenerator qrGenerator = new QRCodeGenerator();
                        QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.L);

                        AsciiQRCode qrCodeAsi = new AsciiQRCode(qrCodeData);
                        string qrCodeAsAsciiArt = qrCodeAsi.GetGraphic(1);
                        Console.WriteLine(qrCodeAsAsciiArt);
                    }
                    else if (eventType == EventType.Message)
                    {
                        var message = JsonConvert.DeserializeObject<EventMessagePayload>(payload);
                        var request = new MessagePayloadRequest()
                        {
                            Id = message.MessageId
                        };
                        var response = await grpcClient.MessagePayloadAsync(request);
                        //by checking the message type response.Type, here are test result
                        //received message type  message type from response.Type
                        //  MINI LOCATION 
                       // TEXT VIDEO 
                       //LOCATION CHATHISTORY    
                    }
                }
            });



            await grpcClient.StartAsync(new StartRequest());
        
            Console.ReadKey();
        }
        public partial class EventMessagePayload
        {
            [JsonProperty("messageId")]
            public string MessageId { get; set; }
        }
        public partial class MessagePayload
        {
            [JsonProperty("filename", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string Filename { get; set; }

            [JsonProperty("id", Required = Required.Always)]
            public string Id { get; set; }

            [JsonProperty("text", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string Text { get; set; }

            [JsonProperty("timestamp", Required = Required.Always)]
            public double Timestamp { get; set; }

            [JsonProperty("type", Required = Required.Always)]
            public MessageType Type { get; set; }

            [JsonProperty("fromId", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string FromId { get; set; }

            [JsonProperty("mentionIdList", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public List<string> MentionIdList { get; set; }

            [JsonProperty("roomId", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string RoomId { get; set; }

            [JsonProperty("toId", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string ToId { get; set; }
        }

        public partial class EventScanPayload 
        {
            [JsonProperty("data", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string Data { get; set; }

            [JsonProperty("qrcode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
            public string Qrcode { get; set; }

            [JsonProperty("status")]
            public ScanStatus Status { get; set; }
        }
        public enum ScanStatus
        {
            Unknown = 0,
            Cancel = 1,
            Waiting = 2,
            Scanned = 3,
            Confirmed = 4,
            Timeout = 5,
        }
        public class HostieEndPoint
        {
            public string Port { get; set; }
            public string IP { get; set; }
        }
    }

By checking the message type from response.Type. It will return unmatched result.
If I received MiniProgram, response.Type is LOCATION,
If I received Text, response.Type is VIDEO,
If I received LOCATION , response.Type is CHATHISTORY .

Can not remove all listener in stop() method

Log

22:22:13 VERB PuppetServiceImpl stop()
22:22:13 VERB EventStreamManager stop()
22:22:13 VERB PuppetDonut stop()
22:22:13 SILL StateSwitch <PuppetDonut> off() is false
22:22:13 SILL StateSwitch <PuppetDonut> off() is false
22:22:13 VERB StateSwitch <PuppetDonut> off(pending) <- (false)
22:22:13 VERB PuppetDonut stopBridge()
22:22:13 SILL StateSwitch <PuppetDonut> on() is false
22:22:13 VERB Bridge stop()
22:22:13 VERB CacheManager release()
22:22:13 VERB CacheManager releaseCache()
22:22:13 SILL CacheManager releaseCache() closing caches ...
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/ecHPL1QCVQianiamcosNfWeML3kE7KMMLklK7ia2gBlibSRIcMGibE5fqr0lsHZuvKsA3pL7iah90CgSGMIofZmJEtfg/132","city":"","country":"","nickname":"秋诺","province":"","remark":"","sex":0,"wxid":"wxid_ukbow33duc4421"})
22:22:13 SILL Puppet contactPayload(wxid_ukbow33duc4421) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/1O7sFwJ7eOq5tPnZINp8N6GmroDz6M36BuL99ZuSWtibmInWvrUt46JUU8Y9z1crMajlxZfTMsLNgDb8fqEhTVTNZpyrMeib1mdpxyl1CMoMM/132","city":"","country":"","nickname":"曾李","province":"","remark":"","sex":0,"wxid":"a421674376"})
22:22:13 SILL Puppet contactPayload(a421674376) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/FceTa9LlfzbVBLsbPG5icOvBR8ghZbgCdXOnKnnb18KQr1RueHmiaE4Y32LsyLRV355ZO0IsKDmGrpcHoez91ib7g/132","city":"","country":"","nickname":"Winphy","province":"","remark":"","sex":0,"wxid":"wxid_qd8phu580e9x21"})
22:22:13 SILL Puppet contactPayload(wxid_qd8phu580e9x21) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/MnbrvojC9hIYib15kYzREQxrhx3rb3DIm1DpnkZqAGDI3mCjqf50UrE6l2Y8JLDmssWEozSQ1lJ5Wj5MSK86hNgAc9a7sBAgO00ic9A0hqzv4/132","city":"","country":"","nickname":"most_wanted","province":"","remark":"","sex":0,"wxid":"hippylw"})
22:22:13 SILL Puppet contactPayload(hippylw) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/ww06WOuoOpl0Oic3oYjegbzQZH9VlXwQicx1icj9nKvk2sRyk6gMJg46PAcwlKyCWcd38UDlK3fkMibmcHpYE6pYmj7d2IiblxbgxyTCAENSecq8/132","city":"","country":"","nickname":"周靖","province":"","remark":"","sex":1,"wxid":"wxid_0063620636212"})
22:22:13 SILL Puppet contactPayload(wxid_0063620636212) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/V7Jmp3Ih9LqMQTicR3sqz3eYp3RbEQvM7KAM7KnO0ia8QBeib6fcsiaXqGFdVqzhagAUlwwAgxSdicWU61qb46ibt1AQ/132","city":"","country":"","nickname":"leaf","province":"","remark":"","sex":1,"wxid":"pyleaf"})
22:22:13 SILL Puppet contactPayload(pyleaf) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/KG85EjWbaHKbW0Lvu4b9Sy0s31QGBCmHx7WCfCibddJSB1mSVofQkSMh4sq5Z6w81QvvyVfIKAdzM0t9uzGWtUhTmOguWWibhN25pQrrCXUIQ/132","city":"","country":"","nickname":"鍾珊","province":"","remark":"","sex":0,"wxid":"wxid_qdjekvu416q921"})
22:22:13 SILL Puppet contactPayload(wxid_qdjekvu416q921) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/R9LJd35WodaVHicnWITKK0taEzSViaLyzVnEe6o0WibpqnjNtl1C4ppia93S8t7GgoxEVjB40b62UXjiaw5alfXSQxg/132","city":"","country":"","nickname":"₂₀₂₀⁰³升哥","province":"","remark":"","sex":0,"wxid":"gaorisheng"})
22:22:13 SILL Puppet contactPayload(gaorisheng) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/etUibPSnhEtLWWicD8s4lJhr8nc9R8nibia2HCFMAQiawFhrN0T4wtSbyibkibl6xQNRyyXTzI98sVoz3F9rwuO6If0N1ib7WYAgluic8aA7PtgVcC8g/132","city":"","country":"","nickname":"自动出底价🐎","province":"","remark":"","sex":0,"wxid":"wxid_i3xbnrjhu44k12"})
22:22:13 SILL Puppet contactPayload(wxid_i3xbnrjhu44k12) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/HqbSHeibyGtCbhctibMCpYenxufxnxW09kVc4gCa12Dd1sjTpW8BaNStJib94QPnIeUU9X7d4oswEa1xkBCHlBhT1Ww17Cb62IRHC3RPkEKhms/132","city":"","country":"","nickname":"辉","province":"","remark":"","sex":0,"wxid":"wxid_7uo0u71qwptn21"})
22:22:13 SILL Puppet contactPayload(wxid_7uo0u71qwptn21) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/FQ7ibo8mnfFWNd5OIgQ4IxSUOrftVSc3kcMJT28Yj8BO1Rjb6ThV8AUnsxeqVqSKGULKZJ3vk4Obc5Cw4pEovdCkyIAvyjU04sEqQ4GR4NiaQ/132","city":"","country":"","nickname":"橘子汁课堂@张明鑫","province":"","remark":"","sex":0,"wxid":"wxid_12xn2xxfs5ox22"})
22:22:13 SILL Puppet contactPayload(wxid_12xn2xxfs5ox22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/9YKtqF8yvA3dGUibU1KBickgXuUNqQiccibPhj7Y6cbw5cI5Sks4Sa2IYMnBC5tj2MUZzyUQ2aob39FEicp1JrAQILe0w4ProhWwUyLcic2doCzg0/132","city":"","country":"","nickname":"听榆大叔","province":"","remark":"","sex":0,"wxid":"lixionglue"})
22:22:13 SILL Puppet contactPayload(lixionglue) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/BJ9aIcZJibD9jOrtM1H1ibzQiarMEEtW6x6tb2pDHQ3eOzlJlz7eXuiaelU9dEAdIibiaYicfM21m9WGUz5SO7fMvMmmg/132","city":"","country":"","nickname":"龚平","province":"","remark":"","sex":0,"wxid":"gopain"})
22:22:13 SILL Puppet contactPayload(gopain) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/yyN13BwLic9n1mQsDERutsZJb2KDWtjlQWIZTDcPL3FRdpTr50z5zspAyibm0YNflpeDtB2LscqMpfgjTVwfwlLA/132","city":"","country":"","nickname":"A梦网络科技","province":"","remark":"","sex":0,"wxid":"wxid_fl73au38gvnh22"})
22:22:13 SILL Puppet contactPayload(wxid_fl73au38gvnh22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/2q9awykNgr64kupia6iaibPOmnf36h3ibBw83ictFghJjFd4H8ibQfzoaFZoSJOia95uvbyhGoroNNhpTShEHr3SR99rg/132","city":"","country":"","nickname":"SimMan","province":"","remark":"","sex":0,"wxid":"simman"})
22:22:13 SILL Puppet contactPayload(simman) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/IgRcZIMdg3tXjEy9SialL2kMkVtcdeuss3mSpYBtPejPALSSfgUnmB0DKic7zEGiaJf1iaJNQufrUoljQEGYjX4erEaEoqUbLCU9eWNaVNTQ5qw/132","city":"","country":"","nickname":"小龙","province":"","remark":"","sex":0,"wxid":"xiaolongss"})
22:22:13 SILL Puppet contactPayload(xiaolongss) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/oCticdjE0sGib8S0L273LHfmug44xP6jprGiaZRzYo77UvlQNbQDDeBsCrbl3ibic17E8d5ZwK8H4hltOLQB9siarcEquNLagIYwuAaQl9zZvPcWQ/132","city":"","country":"","nickname":"none","province":"","remark":"","sex":0,"wxid":"NONE_001"})
22:22:13 SILL Puppet contactPayload(NONE_001) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/u7vqXEfBNicXicicrwjxbkQb8bu1KY7UvAvOv9kaiciculLmT1lBT09JGDIHpNUOzrkSyib4iaSnDX1iaX7I2ThvEiahVhUkatCPibM0nVstU6yP9KfaI/132","city":"","country":"","nickname":"卓米科技","province":"","remark":"","sex":0,"wxid":"wxid_64h3jsgi8c1c22"})
22:22:13 SILL Puppet contactPayload(wxid_64h3jsgi8c1c22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/0RDqoEb7V5kQnPNlZqlbNPATyW5zQUoDbELrHfObibeJI0pa5hwXchop8jTa0OAct4Lre0VXKTBe3I6qgrNicDCQM3dkicR0HufrR5icu5503w8/132","city":"","country":"","nickname":"涵元","province":"","remark":"","sex":0,"wxid":"wxid_89prl95wy0ib12"})
22:22:13 SILL Puppet contactPayload(wxid_89prl95wy0ib12) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/ticTia4IhXeJCDLbTTiawLZtXOfbCxuo5JIPDo3b1RqCudgBUssNYZSJ8TH1XRYenicU26brtxn1qzUicpSJVSl72EI5zgkyy04ASfABNOH6zhpo/132","city":"","country":"","nickname":"lee🙃","province":"","remark":"","sex":1,"wxid":"lcj999"})
22:22:13 SILL Puppet contactPayload(lcj999) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/Is0icV3vHIqz1HFQ7M6iajZNUHyh9amE50z1IK41JHJ1iaibyy4gwIrZoKg22qzF8XMZ3VRfXxyJMPtuD1hte3uTTA/132","city":"","country":"","nickname":"Zen","province":"","remark":"","sex":0,"wxid":"congpeijun888"})
22:22:13 SILL Puppet contactPayload(congpeijun888) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/jCFHBaENQWD2yrBwuMcIeDqrmHSHwrW8KicgXOQmhWUAmic8hRqR1PywDHDz9ibkc3yCI6GQ6k8YYujBrBF0jkg0w/132","city":"","country":"","nickname":"Lou, Lin","province":"","remark":"","sex":0,"wxid":"ideall"})
22:22:13 SILL Puppet contactPayload(ideall) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/7bn1pqO3VZuJj9iajIg5j7EaYn2IiaZ87N3F8BRK5sx1L36YibibVmeHhyBCaDiaudmzx7mgo7u6MMp12pxibOESWdJic9kA4Wqut5WL57RFujty9s/132","city":"","country":"","nickname":"墨迹公子","province":"","remark":"","sex":0,"wxid":"wxid_wvozvul9j6no22"})
22:22:13 SILL Puppet contactPayload(wxid_wvozvul9j6no22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/m04pL5z5DIM3LSNQ4hoBrf3ibkgReUGcBpRV6yiaeUbwNXjGfTpJIEOHeQwwZjg9MDvXiaDjwMzGVdk0SmpZkZxJH6ibPv2TxeZzzRmrSqNQiauM/132","city":"","country":"","nickname":"永远积极向上的韩冬","province":"","remark":"","sex":0,"wxid":"wxid_gete363tokgz22"})
22:22:13 SILL Puppet contactPayload(wxid_gete363tokgz22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/sVlnsenBfQGwxH9BF7jAJDsFqiaiajPJfOIll3LrpCEysJ9Pw78iaGoQDrpI1CvCYacL01RBjicHe49TGeBstW4moA/132","city":"","country":"","nickname":"管宁川John","province":"","remark":"","sex":0,"wxid":"guanningchuan"})
22:22:13 SILL Puppet contactPayload(guanningchuan) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/e2qybUaUbyZ5d3boVm8WfJa4PEicgRCGcfaX4J6ibOTt7HW9fjKcIqbhheRD09SFZRbbUA6VbOV1eVqfW6IVpuFfZx2wqkS0EKHYTMaOdXCsg/132","city":"","country":"","nickname":"༺viks࿄刘畅࿔࿆࿐ོ","province":"","remark":"","sex":0,"wxid":"anderleo"})
22:22:13 SILL Puppet contactPayload(anderleo) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/AAw6czvYUvAq9ZkKaDibYDYy5Ntc0ybHKQyF71XWZy9rQmF8ibyxP4UFF7mMAOyfQv0RQib3NpGvq6LmbyqG6ib2sQVuLxApBmVOhJ3JicianiaEbc/132","city":"","country":"","nickname":"张京","province":"","remark":"","sex":0,"wxid":"zhangjin_3427"})
22:22:13 SILL Puppet contactPayload(zhangjin_3427) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/MzicNtIzhsPo7Y8vzjHjJKB7auyVq1lqszicqbvaq5w8mZy6obmVicO1CJtTAuQkJXcKSzPlYAW98XuXicqkDVWdwv7pdfvNNduwibPz8gK3eTcw/132","city":"","country":"","nickname":"清谷","province":"","remark":"","sex":0,"wxid":"xiphin"})
22:22:13 SILL Puppet contactPayload(xiphin) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/nXo20ScicOZNTn4HMdolefHeFu9YdSKKV07xuloFGa3lthhKP9WHKMdRYEZVLqVawgGjj5mf9ljyGRDZyogcfOYsSicE2BCHFbFW8icicdicDyw4/132","city":"","country":"","nickname":"ALEX-行者","province":"","remark":"","sex":0,"wxid":"licles_love_you"})
22:22:13 SILL Puppet contactPayload(licles_love_you) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/vV98o1hmt7iawJQcKEcmt0fguqLjx4evcibyh6esgUnibMSSpb7oEU4w9Av0SkGicmbHZj9WAVghyo2GL8mic3hsEmcRLiacHsmEPw0OZnXIl1cicg/132","city":"","country":"","nickname":"乔","province":"","remark":"","sex":0,"wxid":"wxid_i8g2sucdhagm22"})
22:22:13 SILL Puppet contactPayload(wxid_i8g2sucdhagm22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/ibTzgJJxBtsic9RSHKesQQh4KkMPcQ8JLTmVKKMt3IEYpgzD26mhP1JiaAgcvgbZ8hJCOy0pNvO0IwuuYgZYImlp7EPm73UlIicfagZ43UUcdyw/132","city":"","country":"","nickname":"林菁菁","province":"","remark":"","sex":0,"wxid":"wxid_afkvc92wdxp322"})
22:22:13 SILL Puppet contactPayload(wxid_afkvc92wdxp322) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/Tp0YhAohdd1un4IwAeYxw7iawTFzPpNf1ibISFIZXDSCuQicdWkp4ySUMED4OyIESoAm2icXjVTKicscUB0MxJ95HxA/132","city":"","country":"","nickname":"薛定谔的猫","province":"","remark":"","sex":0,"wxid":"along729"})
22:22:13 SILL Puppet contactPayload(along729) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/08wiagySp1TicqPcmXUk31lLIXoTeF8Crqc1IAdMQN1qzI58vdsFv8zvHGP6eE6Kz5eKO4btzTs2CO7kyUibL7EzXNeakDwEBenuyGQI4t9eMg/132","city":"","country":"","nickname":"小夏同學","province":"","remark":"","sex":0,"wxid":"wxid_jgpgcdg171wl21"})
22:22:13 SILL Puppet contactPayload(wxid_jgpgcdg171wl21) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/qoErs9GHIEfibPpPED3h72jziax0hd5vgPaIoPWEicElsCCIU0eUzUn7XxIcvPNdY97Y7JwsRiaT0Ms60E9dhF1Dow/132","city":"","country":"","nickname":"刘潜","province":"","remark":"","sex":0,"wxid":"chertiger"})
22:22:13 SILL Puppet contactPayload(chertiger) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/4k7uwfMqCvuVOCW1Zl7KrOhgETKFG8SSyz7IySEDUnsSukLwk5WUxlsoticy23Ax6dKxcSN4E2VCCzEEkMU2Bqg/132","city":"","country":"","nickname":"李","province":"","remark":"","sex":0,"wxid":"wxid_ieubsnnr4kug22"})
22:22:13 SILL Puppet contactPayload(wxid_ieubsnnr4kug22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/mc9tZgfgZWCUia1VZXI96LlGicics9XxaZXubCiaVcElo57icBtX7CaPv8UbqT0b7La8ho1CstveCLgpicdd21W3LwwUKbuajkQhSRU2clA8MbJRY/132","city":"","country":"","nickname":"小羊","province":"","remark":"","sex":0,"wxid":"wxid_dgi8lowk71ye21"})
22:22:13 SILL Puppet contactPayload(wxid_dgi8lowk71ye21) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/rRDJib71gRU2QOEVM2BMibVUOPpp4HFE8tpGNUHtMI0fQK5qu09ib4lftWYZxibbRU0kdAFuzlFkISLDZO8IAib1m7w/132","city":"","country":"","nickname":"糖糖","province":"","remark":"","sex":0,"wxid":"youvince"})
22:22:13 SILL Puppet contactPayload(youvince) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/1jqjIY7zLgPu85H38qwp9LuIGbknLPia896rFiarIP3e3j7n9iabGu7n7OR3qpkppRhJJ93U2zttS9atJrdI3x86xOia5kvlFroeRrj2mLsnflk/132","city":"","country":"","nickname":"Alan","province":"","remark":"","sex":0,"wxid":"wxid_lzm8s0h5hjat22"})
22:22:13 SILL Puppet contactPayload(wxid_lzm8s0h5hjat22) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaEKnGGAZTFvwceuWeYcLl9HWtI8Q2JYIjpvyd5GwTHmAiag/132","city":"","country":"","nickname":"Kirill K","province":"","remark":"","sex":0,"wxid":"wxid_8hnsa1u04irf12"})
22:22:13 SILL Puppet contactPayload(wxid_8hnsa1u04irf12) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/JHibzJtRdezQtnfucficjTdEA1QqnHrcIgiakibXZNibgOX7OETztNuchfcNPOK7lZVtbGMbOwicVNFSqibLAVj3A5Rdg/132","city":"","country":"","nickname":"曾杰+","province":"","remark":"","sex":1,"wxid":"zengjie0417"})
22:22:13 SILL Puppet contactPayload(zengjie0417) cache SET
22:22:13 SILL Bridge contactRawPayload() cache HIT
22:22:13 VERB PuppetDonut contactRawPayloadParser({"account":"","avatar":"http://wx.qlogo.cn/mmhead/ver_1/odzIfkOHh8YOJRbhM1bnmIjwAvRoMobm17T2RHtw3OU7pHGicWcibAuy41S2mHia5U3eXZxz7zLRnv4RxucDXMgV7sOe5DNzfI65A05w1eiatRA/132","city":"","country":"","nickname":"iNe","province":"","remark":"","sex":0,"wxid":"baoaiqisha"})
22:22:13 SILL Puppet contactPayload(baoaiqisha) cache SET
22:22:13 VERB EventStreamManager this.onStreamingCallEnd() this.eventStream.on(finish) fired
22:22:13 SILL CacheManager releaseCache() cache closed.
22:22:13 SILL StateSwitch <PuppetDonut> off() is pending
22:22:13 VERB StateSwitch <PuppetDonut> off(true) <- (pending)
22:22:13 SILL Io initWebSocket() ws.on(message): {"name":"online","payload":"puppet-hostie"}
22:22:13 SILL Io initWebSocket() ws.on(message): {"name":"offline","payload":"puppet-hostie"}
22:22:14 VERB PuppetServiceImpl start()
22:22:14 VERB PuppetDonut start()
22:22:14 SILL StateSwitch <PuppetDonut> on() is false
22:22:14 SILL StateSwitch <PuppetDonut> on() is false
22:22:14 VERB StateSwitch <PuppetDonut> on(pending) <- (false)
22:22:14 VERB Bridge init()
22:22:14 VERB Donut constructor(C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll)
22:22:14 VERB Donut(ffi-adapter) constructor() singleton
22:22:14 VERB Donut(ffi-adapter) GetUserWeChatVersion(��������������������)
22:22:14 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:14 VERB Donut(ffi-adapter) UseUtf8()
22:22:14 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:14 VERB PuppetDonut startBridge()
22:22:14 SILL StateSwitch <PuppetDonut> off() is false
22:22:14 VERB Bridge start()
22:22:14 VERB BridgeCallback getConnectCallback()
22:22:14 VERB BridgeCallback getCloseCallback()
22:22:14 VERB BridgeCallback getEventCallback()
22:22:14 VERB Donut(ffi-adapter) InitWeChatSocket((�p,���p,���p)
22:22:14 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:14 VERB PuppetServiceImpl event()
22:22:14 VERB EventStreamManager start(stream)
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() for Puppet#0<PuppetDonut>(donut-oss)
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(friendship) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(login) (listenerCount:3) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(logout) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(message) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-invite) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-join) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-leave) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(room-topic) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(scan) (listenerCount:3) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(dong) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(error) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(heartbeat) (listenerCount:3) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(ready) (listenerCount:2) registering...
22:22:14 VERB EventStreamManager connectPuppetEventToStreamingCall() this.puppet.on(reset) (listenerCount:1) registering...
22:22:14 VERB EventStreamManager onStreamingCallEnd(callback)
22:22:14 VERB EventStreamManager start() puppet is logged in, emit a login event for downstream
22:22:14 VERB Puppet selfId()
22:22:14 VERB EventStreamManager grpcEmit(EVENT_TYPE_LOGIN[25], {"contactId":"wxid_0mp2uchkzsx122"})
22:22:14 VERB Donut(ffi-adapter) InjectWeChatPid(5608,C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WeChatHelper.dll)
22:22:14 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:15 SILL Bridge reconnect client id : 5608
22:22:15 SILL StateSwitch <PuppetDonut> on() is pending
22:22:15 VERB StateSwitch <PuppetDonut> on(true) <- (pending)
22:22:15 SILL ConnectCallback: 2 
22:22:15 VERB Bridge processEvent(DEBUG_LOG)
22:22:15 SILL debug log: "Client[1] is Connected!!!" 
22:22:15 VERB Bridge processEvent(UNREAD_MSG_COUNT_CHANGE_MSG)
22:22:15 VERB Bridge processEvent(USER_LOGIN)
22:22:15 SILL init cache manager 
22:22:15 VERB CacheManager init()
22:22:15 VERB CacheManager initCache(wxid_0mp2uchkzsx122)
22:22:15 VERB CacheManager initCache() inited [object Promise] Contacts,  cachedir="C:\Users\Administrator\.wechaty\puppet-donut-cache\flash-store-v0.12\wxid_0mp2uchkzsx122"
22:22:15 VERB PuppetDonut onLogin(wxid_0mp2uchkzsx122)
22:22:15 VERB PuppetServiceImpl messageSendText()
22:22:15 VERB PuppetDonut messageSendText("17376996519@chatroom", [太阳] (OSSChat,OSSChat))
22:22:15 SILL request(SEND_TEXTMSG, [object Object]) 
22:22:15 VERB Donut(ffi-adapter) SendWeChatData(2,{"data":{"content":"[太阳] (OSSChat,OSSChat)","to_wxid":"17376996519@chatroom"},"type":11036})
22:22:15 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:15 VERB PuppetServiceImpl messageSendText()
22:22:15 VERB PuppetDonut messageSendText("18995691396@chatroom", Der! I just got online!
OSSChat v0.4.4)
22:22:15 SILL request(SEND_TEXTMSG, [object Object]) 
22:22:15 VERB Donut(ffi-adapter) SendWeChatData(2,{"data":{"content":"Der! I just got online!\nOSSChat v0.4.4","to_wxid":"18995691396@chatroom"},"type":11036})
22:22:15 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
22:22:15 VERB Bridge processEvent(RECV_TEXT_MSG)
22:22:15 VERB PuppetDonut onMessage({"at_user_list":[],"from_wxid":"wxid_0mp2uchkzsx122","is_pc":1,"msg":"[太阳] (OSSChat,OSSChat)","msgid":"5137891416564703925","room_wxid":"17376996519@chatroom","timestamp":1587306135,"to_wxid":"17376996519@chatroom","wx_type":1})
22:22:15 VERB PuppetDonut contactRawPayload(wxid_0mp2uchkzsx122)
22:22:15 VERB Bridge contactRawPayload(wxid_0mp2uchkzsx122)
22:22:15 SILL Bridge contactRawPayload() cache HIT
22:22:15 VERB Message static load(5137891416564703925)
22:22:15 SILL Accessory #1114<Message> constructor()
22:22:15 VERB Message constructor(5137891416564703925) for class Message
22:22:15 VERB Message ready()
22:22:15 VERB Puppet messagePayload(5137891416564703925)
22:22:15 SILL Puppet messagePayloadCache(5137891416564703925) cache MISS
22:22:15 VERB PuppetDonut messageRawPayload(5137891416564703925)
22:22:15 VERB Bridge messageRawPayload(5137891416564703925)
22:22:15 VERB EventStreamManager grpcEmit(EVENT_TYPE_MESSAGE[2], {"messageId":"5137891416564703925"})
22:22:15 VERB EventStreamManager grpcEmit(EVENT_TYPE_MESSAGE[2], {"messageId":"5137891416564703925"})
22:22:15 VERB PuppetDonut messageRawPayloadParser()

Related code

private async stopBridge (bridge: Bridge): Promise<void> {
    log.verbose(PRE, 'stopBridge()')

    if (this.state.on()) {
      const e = new Error('stopBridge() found targetState != off, no stop anymore')
      log.warn(PRE, e.message)
      throw e
    }

    bridge.removeAllListeners()

    try {
      await bridge.stop()
    } catch (e) {
      log.error(PRE, 'stopBridge() exception: %s', e.message)
      await bridge.stop().catch(e => {
        log.error(PRE, 'stopBridge() bridge.stop() rejection: %s', e)
      })
      this.emit('error', e)

      throw e
    }
  }

wss api.chatie.io return "payload": "0.0.0.0"

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:@latest

  • What is your wechaty-puppet-donut version?
    Answer:

  • What is your node version? (run node --version)
    Answer: v10.20.1

  • What os are you using
    Answer: win10

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run 'node bot.js'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

16:06:07 ERR PuppetHostie start() rejection: no endpoint
Error: no endpoint
    at PuppetHostie.<anonymous> (D:\Work\github\wechaty-getting-started\node_modules\wechaty-puppet-hostie\dist\src\client\puppet-hostie.js:85:27)
    at Generator.next (<anonymous>)
    at fulfilled (D:\Work\github\wechaty-getting-started\node_modules\wechaty-puppet-hostie\dist\src\client\puppet-hostie.js:5:58)
    at process._tickCallback (internal/process/next_tick.js:68:7)
16:06:07 ERR Wechaty start() exception: no endpoint
Bot error: Error: no endpoint
    at PuppetHostie.<anonymous> (D:\Work\github\wechaty-getting-started\node_modules\wechaty-puppet-hostie\dist\src\client\puppet-hostie.js:85:27)
    at Generator.next (<anonymous>)
    at fulfilled (D:\Work\github\wechaty-getting-started\node_modules\wechaty-puppet-hostie\dist\src\client\puppet-hostie.js:5:58)
    at process._tickCallback (internal/process/next_tick.js:68:7)
16:06:07 WARN PuppetHostie stop() is called on a OFF puppet. await ready(off) and return.
16:06:07 INFO Wechaty <wechaty-puppet-hostie> stop() v0.38.4 is stoping ...
Waiting for the debugger to disconnect...

Process finished with exit code 0

7. Additional context

Add any other context about the problem here.

[bug] wss return

 {
  "name": "hostie",
  "payload": "0.0.0.0"
}

After send some url link messages, the WeChat crashed.

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer:0.37.5

  • What is your wechaty-puppet-donut version?
    Answer:0.0.23

  • What is your node version? (run node --version)
    Answer: 10.16.0

  • What os are you using
    Answer:MacOS

2. Describe the bug

Give a clear and concise description of what the bug is.

3. To Reproduce

This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.

Steps to reproduce the behavior:

  1. run '...'
  2. ...
  3. ...

4. Expected behavior

Give a clear and concise description of what you expected to happen.

5. Actual behavior

If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:
15:10:23 SILL Puppet contactPayload(wxid_7906109061112) cache SET
15:10:26 SILL Io start() setInterval() ws.ping()
15:10:27 ERR PuppetServiceImpl grpcError() roomPayload() rejection: get room timeout
{ code: 13, details: 'get room timeout' }
15:10:27 VERB PuppetServiceImpl messageSendUrl()
15:10:27 VERB PuppetDonut messageSendUrl("8676247154@chatroom", {"description":"Kudos, SonarCloud Quality Gate passed!\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) to review)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL)\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/25.png' alt='33.9%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list) [33.9% Coverage](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='2.3%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list) [2.3% Duplication](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list)\n\n","thumbnailUrl":"https://avatars2.githubusercontent.com/in/12526?v=4","title":"#356 add today for dependent item apache/incubator-dolphinscheduler","url":"https://github.com/apache/incubator-dolphinscheduler/pull/356#issuecomment-613265892"})
15:10:27 SILL request(SEND_LINKMSG, [object Object])
15:10:27 VERB Donut(ffi-adapter) SendWeChatData(1,{"data":{"desc":"Kudos, SonarCloud Quality Gate passed!\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) to review)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL)\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/25.png' alt='33.9%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list) [33.9% Coverage](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='2.3%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list) [2.3% Duplication](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list)\n\n","image_url":"https://avatars2.githubusercontent.com/in/12526?v=4","title":"#356 add today for dependent item apache/incubator-dolphinscheduler","to_wxid":"8676247154@chatroom","url":"https://github.com/apache/incubator-dolphinscheduler/pull/356#issuecomment-613265892"},"type":11039})
15:10:27 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
15:10:32 VERB PuppetServiceImpl messageSendUrl()
15:10:32 VERB PuppetDonut messageSendUrl("19237597168@chatroom", {"description":"Kudos, SonarCloud Quality Gate passed!\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) to review)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL)\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/25.png' alt='33.9%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list) [33.9% Coverage](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='2.3%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list) [2.3% Duplication](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list)\n\n","thumbnailUrl":"https://avatars2.githubusercontent.com/in/12526?v=4","title":"#356 add today for dependent item apache/incubator-dolphinscheduler","url":"https://github.com/apache/incubator-dolphinscheduler/pull/356#issuecomment-613265892"})
15:10:32 SILL request(SEND_LINKMSG, [object Object])
15:10:32 VERB Donut(ffi-adapter) SendWeChatData(1,{"data":{"desc":"Kudos, SonarCloud Quality Gate passed!\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=BUG)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=SECURITY_HOTSPOT) to review)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache-dolphinscheduler&pullRequest=356&resolved=false&types=CODE_SMELL)\n\n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/25.png' alt='33.9%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list) [33.9% Coverage](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_coverage&view=list)  \n[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='2.3%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list) [2.3% Duplication](https://sonarcloud.io/component_measures?id=apache-dolphinscheduler&pullRequest=356&metric=new_duplicated_lines_density&view=list)\n\n","image_url":"https://avatars2.githubusercontent.com/in/12526?v=4","title":"#356 add today for dependent item apache/incubator-dolphinscheduler","to_wxid":"19237597168@chatroom","url":"https://github.com/apache/incubator-dolphinscheduler/pull/356#issuecomment-613265892"},"type":11039})
15:10:32 VERB ffi-adapter Backend.lib(0: "C:\Users\Administrator\Desktop\testPuppetWindows\wechaty\node_modules\@juzibot\wechaty-puppet-donut\dlls\WxLoader.dll")
15:10:35 VERB PuppetServiceImpl ding()
15:10:35 SILL PuppetDonut ding(recover$() CPR)
15:10:35 VERB EventStreamManager grpcEmit(EVENT_TYPE_DONG[3], {"data":"recover$() CPR"})
15:10:36 SILL Io start() setInterval() ws.ping()
15:10:46 SILL Io start() setInterval() ws.ping()
15:10:49 SILL You have already close WeChat : 1

7. Additional context

Add any other context about the problem here.

[bug]

Emoticon message not supported.

If we send an Emoticon (自定义表情动图) to our Donut bot, it will only received the following Unknown type message:

	<?xml version="1.0"?>
<msg>
	<appmsg appid="" sdkver="0">
		<title />

启动报错,扫码没反应,登录不上

Important:Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

  1. Please run the following command and check whether the problem has been fixed:
rm -rf package-lock.json
rm -rf node_modules
npm install
  1. Please search in FAQ List first, and make sure your problem has not been solved before.

  2. Please search in the issue first, and make sure your problem had not been reported before

1. Versions

  • What is your wechaty version?
    Answer: wechaty@next

  • What is your wechaty-puppet-donut version?
    Answer: "wechaty-puppet-hostie": "^0.10.8",

  • What is your node version? (run node --version)
    Answer: 14.14.0

  • What os are you using
    Answer: mac os

2. Describe the bug

Error: 13 INTERNAL: no cache manager
at Object.exports.createStatusError (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/common.js:91:15)
at Object.onReceiveStatus (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:1209:28)
at InterceptingListener._callNext (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:618:8)
at callback (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:847:24) {
code: 13,
metadata: Metadata { _internal_repr: {}, flags: 0 },
details: 'no cache manager'
}

3. To Reproduce

Steps to reproduce the behavior:

  1. run npm start (just start the bot)

4. Expected behavior

no error

5. Actual behavior

image

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

Show Logs
$ WECHATY_LOG=silly node yourbot.js

Question: Paste your FULL(DO NOT ONLY PROVIDE FRAGMENTS) log messages
Answer:

> [email protected] start /Users/mac2/Desktop/operationBot
> WECHATY_LOG=silly node bin/www

17:58:28 SILL Puppet Config: WECHATY_LOG set level to silly
17:58:28 INFO Config registering process.on("unhandledRejection") for development/debug
17:58:28 VERB Config constructor()
17:58:29 VERB Wechaty constructor()
17:58:29 VERB StateSwitch constructor(Wechaty, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
17:58:29 VERB StateSwitch constructor(WechatyReady, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
17:58:29 VERB Wechaty on(scan, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(login, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(logout, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(message, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(friendship, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(room-invite, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(room-join, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(room-leave, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty on(room-topic, listener) registering... listenerCount: 0
17:58:29 VERB Wechaty <wechaty-puppet-hostie>() start() v0.49.8 is starting...
17:58:29 VERB Wechaty id: ckhonwbv30000wgax6io1fhik
17:58:29 SILL StateSwitch <Wechaty> on() is false
17:58:29 SILL StateSwitch <WechatyReady> off() is true
17:58:29 VERB StateSwitch <WechatyReady> off(true) <- (true)
17:58:29 SILL StateSwitch <Wechaty> on() is false
17:58:29 VERB StateSwitch <Wechaty> on(pending) <- (false)
17:58:29 VERB MemoryCard constructor(undefined)
17:58:29 VERB MemoryCard getStorage() for storage type: N/A
17:58:29 VERB MemoryCard load() from storage: N/A
17:58:29 VERB MemoryCard load() no storage
17:58:29 VERB Wechaty initPuppet() wechaty-puppet-hostie
17:58:29 VERB MemoryCard multiplex(puppet)
17:58:29 VERB MemoryCard static multiplex(MemoryCard<>, puppet)
17:58:29 VERB MemoryCard constructor({"multiplex":{"name":"puppet","parent":{"payload":{},"multiplexNameList":[]}}})
17:58:29 VERB PuppetManager resolve({puppet: wechaty-puppet-hostie, puppetOptions: {"token":"puppet_donut_0ddbc6275167a5e1"}})
17:58:29 VERB PuppetManager resolveName(wechaty-puppet-hostie)
17:58:29 VERB PuppetManager checkModule(wechaty-puppet-hostie)
17:58:29 SILL PuppetManager checkModule() wechaty-puppet-hostie installed version 0.11.10 satisfied range *
17:58:29 VERB Puppet constructor({"token":"puppet_donut_0ddbc6275167a5e1"}) #0
17:58:29 VERB StateSwitch constructor(PuppetHostie, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
17:58:29 VERB MemoryCard constructor(undefined)
17:58:29 VERB MemoryCard getStorage() for storage type: N/A
17:58:29 VERB MemoryCard load() from storage: N/A
17:58:29 VERB MemoryCard load() no storage
17:58:29 VERB Puppet constructor() watchdog timeout set to 60 seconds
17:58:29 VERB HotImport callerResolve(., /Users/mac2/Desktop/operationBot/node_modules/wechaty-puppet/dist/src/puppet.js)
17:58:29 SILL HotImport callerResolve() callsites() file=/Users/mac2/Desktop/operationBot/node_modules/hot-import/dist/src/hot-import.js, type=Object
17:58:29 SILL HotImport callerResolve() callsites() file=/Users/mac2/Desktop/operationBot/node_modules/wechaty-puppet/dist/src/puppet.js, type=null
17:58:29 SILL HotImport callerResolve() callsites() file=/Users/mac2/Desktop/operationBot/node_modules/wechaty/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js, type=null
17:58:29 SILL HotImport callerResolve() callerFile=/Users/mac2/Desktop/operationBot/node_modules/wechaty/node_modules/wechaty-puppet-hostie/dist/src/client/puppet-hostie.js
17:58:29 VERB Puppet constructor() childClassPath=/Users/mac2/Desktop/operationBot/node_modules/wechaty/node_modules/wechaty-puppet-hostie/dist/src/client
17:58:29 VERB Puppet setMemory()
17:58:29 VERB Wechaty initPuppetEventBridge(Puppet#0<PuppetHostie>())
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(friendship) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(login) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(logout) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(message) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(room-invite) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(room-join) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(room-leave) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(room-topic) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(scan) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(dirty) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(dong) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(error) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(heartbeat) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(ready) (listenerCount:0) registering...
17:58:29 VERB Wechaty initPuppetEventBridge() puppet.on(reset) (listenerCount:0) registering...
17:58:29 VERB Wechaty wechatifyUserModules(Puppet#0<PuppetHostie>())
17:58:29 VERB PuppetHostie start()
17:58:29 SILL StateSwitch <PuppetHostie> on() is false
17:58:29 SILL StateSwitch <PuppetHostie> on() is false
17:58:29 VERB StateSwitch <PuppetHostie> on(pending) <- (false)
17:58:29 VERB PuppetHostie startGrpcClient()
17:58:29 VERB PuppetHostie discoverHostieIp(puppet_donut_0ddbc6275167a5e1)
17:58:30 VERB PuppetHostie startGrpcStream()
17:58:30 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_SCAN(22), payload:"{"qrcode":"http://weixin.qq.com/x/w9KRG3IE2olBoH9GcJ5Z","status":2}"})
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▄▄▄ ▀▀ ▄▀▀▄▀ █ ▄▄▄▄▄ █
█ █   █ ██▄▀ █ ▀▀▀▀█ ██ █   █ █
█ █▄▄▄█ ██▀▄ ▄▄██ ▄█▄▀█ █▄▄▄█ █
█▄▄▄▄▄▄▄█ ▀▄█ ▀▄▀▄█▄█▄█▄▄▄▄▄▄▄█
█ ▄▀▄ ▀▄▀▀▄▀█▄▄ ▄▄ ▄▀▀█▄▀▀█▀▀▄█
█▀▄ █ ▀▄▄█▄██▄▄▀▄█ ▄█▀█▄▀▄█▄█▀█
███▄▄▄▄▄  ▄ █▀▀▀▀  ▀█▄▄  ▀▀█▀ █
█ ▀▀▄▄▀▄█▀▄ █▀██ █▄▄ ▄███▄▄ █ █
█▀ ▀▄█▀▄▄ █▀ ▄▀█▀█ █  ▀██▀▀▀▀██
█  ▄▀█▄▄▀ ██▀▄▀  ▄█ ▄▀ ▄█▄▀▀█▄█
█▄▄█▄▄▄▄█ ▀█▄▀██ ▀█▀▄ ▄▄▄  ▄▄██
█ ▄▄▄▄▄ ███▀ ▀█▀▄▄▀█  █▄█  █▀██
█ █   █ █ ▀▀▄▄▄█▄ █▄ ▄ ▄▄▄█▀▄▀█
█ █▄▄▄█ █▀▀▄ ▄█▀▄▀▄▄█▄█▀  ▀ ▄ █
█▄▄▄▄▄▄▄█▄▄▄█▄█▄██▄██▄███▄█████

StarterBot onScan: %s(%s) - %s Waiting 2 https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fweixin.qq.com%2Fx%2Fw9KRG3IE2olBoH9GcJ5Z
17:58:30 SILL StateSwitch <PuppetHostie> on() is pending
17:58:30 VERB StateSwitch <PuppetHostie> on(true) <- (pending)
17:58:30 VERB Wechaty on(heartbeat, listener) registering... listenerCount: 0
17:58:30 SILL StateSwitch <Wechaty> on() is pending
17:58:30 VERB StateSwitch <Wechaty> on(true) <- (pending)
StarterBot Starter Bot Started.
17:58:30 VERB Room findAll()
17:58:30 VERB Puppet roomSearch()
17:58:30 VERB PuppetHostie roomList()
17:58:30 VERB Room findAll() rejected: 13 INTERNAL: no cache manager
Error: 13 INTERNAL: no cache manager
    at Object.exports.createStatusError (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/common.js:91:15)
    at Object.onReceiveStatus (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:1209:28)
    at InterceptingListener._callNext (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:618:8)
    at callback (/Users/mac2/Desktop/operationBot/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 13,
  metadata: Metadata { _internal_repr: {}, flags: 0 },
  details: 'no cache manager'
}
17:58:41 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_HEARTBEAT(1), payload:"{"data":"debounce before login","timeout":60000}"})
17:58:41 SILL Wechaty memoryCheck() free: 97 MB, require: 4 MB
17:59:26 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_HEARTBEAT(1), payload:"{"data":"debounce before login","timeout":60000}"})
17:59:26 SILL Wechaty memoryCheck() free: 19 MB, require: 4 MB
17:59:56 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_HEARTBEAT(1), payload:"{"data":"debounce before login","timeout":60000}"})
17:59:56 SILL Wechaty memoryCheck() free: 89 MB, require: 4 MB
18:00:15 VERB PuppetHostie onGrpcStreamEvent({type:EVENT_TYPE_SCAN(22), payload:"{"qrcode":"http://weixin.qq.com/x/46h1SgneB3jl-j_YVHun","status":2}"})
18:00:15 SILL Wechaty memoryCheck() free: 170 MB, require: 4 MB

7. Additional context

[bug]

No response for scan code login

image
启动程序后,扫码,手机上点了确定但是程序还会继续推送二维码,手机上也没有登录提示。已经删除了node_modules和package-lock.json并重新下载

Event 'room-join' CAN'T touch off

Important:Please file the issue follow the template, or we won't help you to solve the problem.

1. Versions

  • What is your wechaty version?
    Answer: python-wechaty:0.6.7, python-puppet:0.0.16, python-puppet-hostie:0.2.12

  • What is your wechaty-puppet-donut version?
    Answer: as above

  • What is your node version? (run node --version)
    Answer: without node

  • What os are you using
    Answer: Window7 and docker images python3.7-slim

2. Describe the bug

Event 'room-join' can't touch off

3. To Reproduce

bot = Wechaty().on('room-join', xxx_function)
await bot.start()

4. Expected behavior

5. Actual behavior

6. Full Output Logs

7. Additional context

after Wechat PC client upgrade, this event can't touch off anymore

[bug]

puppet still in login status after logout on phone

I think this happened a few times these days. The puppet can not respond to the message received so that I logged out windows on my phone. After that, I tried to login the puppet again, it showed that the puppet has already logged in and didn't prompt the qrcode link to scan.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.