Youfou

Results 9 comments of Youfou

**PUID**,是通过 `user_name`,`wxid`、`remark_name`、`caption`(昵称、性别、地区),这 4 个属性来标记用户的。 在登出之前会优先使用 `user_name` 匹配,并自动同步其他属性作为缓存,重新登录后再用之前缓存的其他属性来按优先顺序匹配 (按以上 4 个属性的列出顺序),当然也会再自动同步 `user_name`。 如果先前只获取到用户的 `caption`,且机器人进行了重新登录(`user_name` 都变了),而且没有获取到 `wxid` 和 `remark_name`,那么就只能根据 `caption` 来标记。 因此改名后 **PUID** 确实可能会变,但只有在可追踪信息过少的情况下才会出现。 ---- 另外,目前 **PUID Map** 是注册在机器人退出时进行保存的,若程序未正常退出,本次所同步的数据将无法保留。 这个问题似乎只能通过运行过程中定时保存的方式来改进。我会在最近的版本中进行处理。如果有更好的建议,欢迎提出。

@JiaFeiX 因为 wxid 并不是总是可以获取到的,经常为 None。当然如果拿到 wxid 的话,puid_map 会优先采用 wxid 来匹配。

@JiaFeiX 应该是没有保存文件导致的。 wxid 是上面的 Alias or Uin (取先有的)

可以试试手动保存文件 ```python bot.puid_map.dump() ```

我也发现了这个问题,不过目前接口上好像没有提供有效的信息。 目前 wxpy 的做法是,检测到 `ChatRoomOwner` 字段,就按字段返回,否则返回首个群员。

感谢你的测试! 登陆 Web 微信时,移动端是需要保持在线的,不然时间久了就会掉线。这应该是微信有意这么设置的。 根据交流群里的一些反馈,当手机保持在线且网络较为稳定时,机器人应该可以持续运行数周,有人说持续运行了一个多月的。 另外可能也跟机器人行为有关系,如果存在高频的或者打扰其他用户的行为,可能会被强制登出甚至限制登录和封号。

试试在 shell 中运行以下命令 ```shell wxpy bot -l d ``` 将以输出debug日志的方式启动wxpy 登陆测试账号后,用另一个号去加好友,手动同意后,应该会有 'new message' 的日志出现

@robot527 有可能是我的锅,先前版本的wxpy中,`-l d (设置日志等级为DEBUG)` 的参数不起作用,后来的版本修复了。我测试下好了。

经测试发现,手动同意后会有一条 `NOTE` 消息 ``` DEBUG:wxpy.api.bot:: new message (func: None): 游否 : 你已添加了游否,现在可以开始聊天了。 (Note) ``` 所以可以考虑把自动/手动同意后要做的操作都搬到这条消息的注册上。