这个问题放在最前面。因为常常收到:不能用怎么办?没反应怎么办?没效果怎么办?
我总是一头雾水。这里推荐一下 提问的艺术。
我把群公告粘贴过来:
【🐛报错提供】 💠尽量多提供信息,群主是傻子,信息不够看不懂 💠启用调试以便排查:wcf = Wcf(debug=True) 💠版本:pip list,查看 wcferry 右边的数字 💠版本:pip list,查看 wcfhttp 右边的数字 💠错误现象 💠引发错误的操作 💠错误日志:logs/wcf.txt
v39.0.x 支持 PC 微信 3.9.2.23。后续留意更新日志。
注意安装适当的微信版本(Windows)。
注意安装适当的微信版本(Windows)。
注意安装适当的微信版本(Windows)。
这里有 安装包[1]。
目前支持的客户端包括:
目前支持的功能包括:
有,可以参考 WeChatRobot[4],示例了:
参考 Q0 报 BUG。
三个可能:
正确的使用方法(其实看文档就知道了):
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)
查看日志确定原因
在运行目录下,找到 logs/wcf.txt,打开,即可查看。
如果第一次运行就提示 Address in use,那应该是跟某个应用产生了端口冲突(wcferry 默认使用 10086 和 10087) 解决办法有两个:
10086 和 10087 的进程杀掉(目前已知 金山毒霸 和一个校园网的客户端使用 10086)。wcferry 的启动端口:wcf = Wcf(port=10010) # 换一个不冲突的端口吧
如果第一次运行成功,后续提示被占用,那么大概率是前面粗暴关闭了窗口。最简单的方法是重启电脑,然后参考 Q12。
使用 WeChatRobot,可能会出现回复的时候 @ 后面是空白的情况。这是由于没有获取到联系人导致的,一般出现在刚登录的新环境中。
目前的解决办法是:把微信登录、退出多来几遍,让联系人落库。
温柔点儿,Ctrl+C 退出,不要强制关闭窗口。
文件注意路径,建议使用绝对路径,同时使用 \\ 替换 \。
参考 Q13,同时要确保图片是正常的图片(比如,人工手动能不能发?)
查看日志看失败原因。
需要注意的是,确保图片文件 ( .dat ) 存在。因为图片落盘需要时间,收到图片消息的时候,稍作等待。另外,需要在 文件管理 处,设置文件自动下载。

LoadLibrary 调用失败
请看 Q1。

WARNING Retrying
网络质量不行,换个 pip 源。比如清华源:
# 如果使用 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
Failed to Build pynng

安装 pynng 失败
Python 太新,需要自己编译依赖。不想自己编译,那就换 Python 3.9 、 Python 3.10 、 Python 3.11。

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

No such kernel
项目里有写了:
# ChatGLM 还需要安装一个 kernel
ipython kernel install --name chatglm3 --user
wcferry 是 WeChatFerry 的 Python 客户端;wcfhttp 是基于 wcferry 封装的 HTTP 客户端。
选一个就好了,不要同步跑。变形金刚也不能同时变车和人吧?

下载图片超时

初始化失败
1、检查报错路径里的 wcf.exe 是否存在;2.1、如果存在,检查权限;2.2、如果不存在,检查是否安装成功;2.2.1、如果安装成功,检查是否被杀毒软件干掉了。2.2.2、走到这里,咱们不玩了;或者换台机器玩吧。
提供截图的朋友是因为 360 把 wcf.exe 干掉了。退出杀毒软件;或者找台没有杀毒软件的电脑重新安装即可。
这里有个 ISSUE:https://github.com/lich0821/WeChatFerry/issues/140。
是我程序编码问题,强制转换成 utf8 就好了
对了,很多问题,可能 ISSUE 里都有。
超简单解决:你的应用版本过低,请升级至最新版本后再登录 有具体方法,但可能倒数第二个地址提多余的,报错的话删除即可。

20240422-版本过低-Q

20240422-版本过低-A
前面有过介绍: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