Wechaty: 关于『friendship』接口的几个情况(no raw payload,Friendship.Type.Confirm,延时)

Created on 22 Nov 2018  ·  4Comments  ·  Source: wechaty/wechaty

export const onFriendship = async friendship => {
  const _contact = friendship.contact();

  try {
    switch (friendship.type()) {
      case Friendship.Type.Receive:
        await friendship.accept();
        break;
      case Friendship.Type.Confirm:
        break;
    }
  } catch (e) {
    console.error(e);
    process.exit(3002);
  }
};

会经常出现以下情况:
1、经常会出现『no raw payload』
2、想知道『Friendship.Type.Confirm』的出现场景
3、延迟非常严重,发生了好友邀请,结果手机上是有,但是wechaty没有监听到;有时候会连续触发好几次

question

Most helpful comment

B和A原来是好友,然后A删除了B;

你说的这种情况,B还会认为自己和A是好友,除非他发消息给B发现发不出去了,才会知道自己已经不是A的好友了。你可以在自己的微信上实验一下,所以此时 Contact.friend()显示true 是正常的。

这也就解释了,当A删除了B,A再加B的时候,会直接通过的原因。

以上的情况,你抛开代码层面,单纯用手机微信试一下,再回归代码里面会好容易理解一些。

All 4 comments

经常会出现『no raw payload』

需要更多详细的日志说明

想知道『Friendship.Type.Confirm』的出现场景

如果是机器人通过了用户的好友请求,会出现这个

延迟非常严重,发生了好友邀请,结果手机上是有,但是wechaty没有监听到;有时候会连续触发好几次

需要详细的日志说明。另外,延迟几秒是正常现象。

感谢回复,我发现有个触发的情况是:
A:机器人
B:另一个微信号

B和A原来是好友,然后A删除了B;
这个适合B再加A的时候,Contact.friend()显示true,导致这时候,accpet的时候会出现no raw payload,并且这个Contact.name()仍可以取到值(预期:新用户是没有这个值的)
并且这个时候是不会触发『Friendship.Type.Confirm』的场景,他们直接就会通过

B和A原来是好友,然后A删除了B;

你说的这种情况,B还会认为自己和A是好友,除非他发消息给B发现发不出去了,才会知道自己已经不是A的好友了。你可以在自己的微信上实验一下,所以此时 Contact.friend()显示true 是正常的。

这也就解释了,当A删除了B,A再加B的时候,会直接通过的原因。

以上的情况,你抛开代码层面,单纯用手机微信试一下,再回归代码里面会好容易理解一些。

原来如此 非常感谢解答

Was this page helpful?
0 / 5 - 0 ratings