首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【FAQ】WeChatFerry 机器人常见问题 v39.0.14

【FAQ】WeChatFerry 机器人常见问题 v39.0.14

作者头像
查克
发布2024-12-06 12:23:45
发布2024-12-06 12:23:45
1.1K0
举报
文章被收录于专栏:碲矿碲矿

Q0 怎么报 BUG?

这个问题放在最前面。因为常常收到:不能用怎么办?没反应怎么办?没效果怎么办?

我总是一头雾水。这里推荐一下 提问的艺术

我把群公告粘贴过来:

【🐛报错提供】 💠尽量多提供信息,群主是傻子,信息不够看不懂 💠启用调试以便排查:wcf = Wcf(debug=True) 💠版本:pip list,查看 wcferry 右边的数字 💠版本:pip list,查看 wcfhttp 右边的数字 💠错误现象 💠引发错误的操作 💠错误日志:logs/wcf.txt

Q1 支持什么版本的微信?

v39.0.x 支持 PC 微信 3.9.2.23。后续留意更新日志。

注意安装适当的微信版本(Windows)。

注意安装适当的微信版本(Windows)。

注意安装适当的微信版本(Windows)。

这里有 安装包[1]

Q2 怎么开始玩?

  1. 新环境先养号。新环境(新机器)登录,哪怕不用机器人,也会被风控。
  2. 请参考视频教程【教程】微信机器人 WeChatRobot 安装
  3. 参考 文档[2]
  4. 参考示例工程 WeChatRobot[3]

Q3 支持什么客户端?

目前支持的客户端包括:

  • Go(danbai225 维护)
  • GoHttp(若海维护)
  • HTTP(查克维护)
  • Java(查克创建但目前没有积极维护)
  • Node.js(stkevintan 维护)
  • Python(查克维护)
  • Rust(supermoonie 维护)

Q4 支持什么功能?

目前支持的功能包括:

  • 检查登录状态
  • 获取登录账号信息
  • 获取消息类型
  • 获取所有联系人
  • 获取所有好友
  • 获取数据库
  • 获取某数据库下的表
  • 获取用户信息
  • 发送文本消息(可 @)
  • 发送图片
  • 发送文件
  • 允许接收消息
  • 停止接收消息
  • 执行 SQL 查询
  • 接受好友申请
  • 添加群成员
  • 删除群成员
  • 解密图片
  • 获取朋友圈消息
  • 保存图片
  • 保存语音
  • 发送卡片消息
  • 拍一拍群友
  • 邀请群成员
  • 图片 OCR
  • 转发消息
  • 撤回消息
  • 获取登录二维码

Q5 有没有示例?

有,可以参考 WeChatRobot[4],示例了:

  • 天气查询
  • 成语查询
  • 成语接龙
  • 定时新闻发送
  • ChatGPT 聊天
  • TigerBot 聊天
  • Google Bard 聊天
  • ChatGLM 聊天
  • 讯飞星火聊天
  • 自动通过好友申请

Q6 崩溃怎么办?

参考 Q0 报 BUG。

Q7 为什么 @ 不成功?

三个可能:

  1. @是复制过来的。这个没办法,微信识别不到,请找微信提 BUG。
  2. 使用方法不正确。
  3. 修改过 wxid。这是群友测试发现的,微信的消息会 @旧的 wxid,而获取到的 wxid 是新的,匹配不上,所以判断不出被 @。目前无解,需要自行改代码。

正确的使用方法(其实看文档就知道了):

代码语言:javascript
复制
  def sendTextMsg(self, msg: str, receiver: str, at_list: str = "") -> None:
      """ 发送消息
      :param msg: 消息字符串
      :param receiver: 接收人wxid或者群id
      :param at_list: 要@的wxid, @所有人的wxid为:nofity@all
      """
      # msg 中需要有 @ 名单中一样数量的 @
      ats = ""
      if at_list:
          wxids = at_list.split(",")
          for wxid in wxids:
              # 非群聊,就不要填 at_list 了,否则下面会出错的
              ats += f" @{self.wcf.get_alias_in_chatroom(wxid, receiver)}"

      # {msg}{ats} 表示要发送的消息内容后面紧跟@,例如 北京天气情况为:xxx @张三
      if ats == "":
          self.LOG.info(f"To {receiver}: {msg}")
          self.wcf.send_text(f"{msg}", receiver, at_list)
      else:
          self.LOG.info(f"To {receiver}: {ats}\r{msg}")
        self.wcf.send_text(f"{ats}\n\n{msg}", receiver, at_list)

Q8 提示 Timed out?

查看日志确定原因

Q9 怎么查看日志?

在运行目录下,找到 logs/wcf.txt,打开,即可查看。

Q10 Address in use?

如果第一次运行就提示 Address in use,那应该是跟某个应用产生了端口冲突(wcferry 默认使用 1008610087) 解决办法有两个:

  1. 任务管理器把使用 1008610087 的进程杀掉(目前已知 金山毒霸 和一个校园网的客户端使用 10086)。
  2. 修改 wcferry 的启动端口:
代码语言:javascript
复制
wcf = Wcf(port=10010)  # 换一个不冲突的端口吧

如果第一次运行成功,后续提示被占用,那么大概率是前面粗暴关闭了窗口。最简单的方法是重启电脑,然后参考 Q12。

Q11 获取不到联系人怎么办?

使用 WeChatRobot,可能会出现回复的时候 @ 后面是空白的情况。这是由于没有获取到联系人导致的,一般出现在刚登录的新环境中。

目前的解决办法是:把微信登录、退出多来几遍,让联系人落库。

Q12 如何退出机器人?

温柔点儿,Ctrl+C 退出,不要强制关闭窗口。

Q13 文件发送不成功怎么办?

文件注意路径,建议使用绝对路径,同时使用 \\ 替换 \

Q14 图片发送不成功怎么办?

参考 Q13,同时要确保图片是正常的图片(比如,人工手动能不能发?)

Q15 图片解密不成功怎么办?

查看日志看失败原因。

需要注意的是,确保图片文件 ( .dat ) 存在。因为图片落盘需要时间,收到图片消息的时候,稍作等待。另外,需要在 文件管理 处,设置文件自动下载。

Q16 LoadLibrary 调用失败?

LoadLibrary 调用失败

请看 Q1。

Q17 安装失败?

WARNING Retrying

网络质量不行,换个 pip 源。比如清华源:

代码语言:javascript
复制
# 如果使用 wcferry
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade wcferry

# 如果使用 wcfhttp
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade wcfhttp

Q18 又安装失败?

Failed to Build pynng

安装 pynng 失败

Python 太新,需要自己编译依赖。不想自己编译,那就换 Python 3.9Python 3.10Python 3.11

Q19 wcfhttp 回调

《回调到底是什么?》

Q20 UnicodeEncodeError

UnicodeEncodeError

将终端的编码格式设置为 utf-8 即可。

Q21 No such kernel

No such kernel

项目里有写了:

代码语言:javascript
复制
# ChatGLM 还需要安装一个 kernel
ipython kernel install --name chatglm3 --user

Q22 wcferry?wcfhttp?

wcferry 是 WeChatFerry 的 Python 客户端;wcfhttp 是基于 wcferry 封装的 HTTP 客户端。

选一个就好了,不要同步跑。变形金刚也不能同时变车和人吧?

Q23 保存语音 / 图片超时

下载图片超时

Q24 初始化失败

初始化失败

1、检查报错路径里的 wcf.exe 是否存在;2.1、如果存在,检查权限;2.2、如果不存在,检查是否安装成功;2.2.1、如果安装成功,检查是否被杀毒软件干掉了。2.2.2、走到这里,咱们不玩了;或者换台机器玩吧。

提供截图的朋友是因为 360 把 wcf.exe 干掉了。退出杀毒软件;或者找台没有杀毒软件的电脑重新安装即可。

Q25 中文路径文件发送失败

这里有个 ISSUE:https://github.com/lich0821/WeChatFerry/issues/140。

是我程序编码问题,强制转换成 utf8 就好了

对了,很多问题,可能 ISSUE 里都有。

Q26 微信版本过低

超简单解决:你的应用版本过低,请升级至最新版本后再登录 有具体方法,但可能倒数第二个地址提多余的,报错的话删除即可。

20240422-版本过低-Q

20240422-版本过低-A

Q27 这货什么原理?

前面有过介绍:WeChatFerry: 一个玩微信的工具

参考资料

[1]

安装包: https://github.com/lich0821/WeChatFerry/releases/latest

[2]

文档: https://wechatferry.readthedocs.io/zh/latest/

[3]

WeChatRobot: https://github.com/lich0821/WeChatRobot

[4]

WeChatRobot: https://github.com/lich0821/WeChatRobot

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 碲矿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Q0 怎么报 BUG?
  • Q1 支持什么版本的微信?
  • Q2 怎么开始玩?
  • Q3 支持什么客户端?
  • Q4 支持什么功能?
  • Q5 有没有示例?
  • Q6 崩溃怎么办?
  • Q7 为什么 @ 不成功?
  • Q8 提示 Timed out?
  • Q9 怎么查看日志?
  • Q10 Address in use?
  • Q11 获取不到联系人怎么办?
  • Q12 如何退出机器人?
  • Q13 文件发送不成功怎么办?
  • Q14 图片发送不成功怎么办?
  • Q15 图片解密不成功怎么办?
  • Q16 LoadLibrary 调用失败?
  • Q17 安装失败?
  • Q18 又安装失败?
  • Q19 wcfhttp 回调
  • Q20 UnicodeEncodeError
  • Q21 No such kernel
  • Q22 wcferry?wcfhttp?
  • Q23 保存语音 / 图片超时
  • Q24 初始化失败
  • Q25 中文路径文件发送失败
  • Q26 微信版本过低
  • Q27 这货什么原理?
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档