chatgpt-on-wechat
chatgpt-on-wechat copied to clipboard
切换wechaty报错
前置确认
问题描述
修改app.py中的channel采用wxy,报错; 已经安装wechaty依赖;
终端日志 (如有报错)
[ERROR][2023-03-10 11:22:40][app.py:19] - App startup failed!
[ERROR][2023-03-10 11:22:40][app.py:20] - str expected, not NoneType
Traceback (most recent call last):
File "/Volumes/Data/Code/Haoyuan/ChatGPT/chatgpt-on-wechat/app.py", line 17, in
环境
- 操作系统类型 (Mac/Windows/Linux):Mac
- Python版本 ( 执行
python3 -V): 3.9 - pip版本 ( 依赖问题此项必填,执行
pip3 -V):
好吧,我找到原因了,是config.json中缺了“wechaty_puppet_service_token”,这要去wechaty官网注册一个
又有新的报错了: Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/wechaty/wechaty.py", line 445, in start await self.puppet.start() File "/usr/local/lib/python3.9/site-packages/wechaty_puppet_service/puppet.py", line 911, in start self._init_puppet() File "/usr/local/lib/python3.9/site-packages/wechaty_puppet_service/puppet.py", line 876, in _init_puppet raise WechatyPuppetGrpcError( wechaty_puppet.exceptions.WechatyPuppetGrpcError: WechatyPuppetGrpcError('can"t fetch endpoint from chatie server. You can try it later, or make sure that your pc can connect to heroku server ', None, None)
@chiakileftcang 解决了吗?我也出现这个错误了
@chiakileftcang 解决了吗?我也出现这个错误了
还没有哎,找不到原因
@chiakileftcang 解决了吗?我也出现这个错误了
我大概知道怎么回事了。
这需要自建一套wechaty的环境;
这是我写的一个运行docker容器的脚本(wechaty.sh):
#!/bin/bash
PWD=$(cd ``dirname $0``;pwd);
IMG_NAME='wechaty/wechaty'
IMG_VER='0.65'
PORT=8080
NAME='wechaty-getway'
export WECHATY_LOG="verbose"
export WECHATY_PUPPET="wechaty-puppet-padlocal"
export WECHATY_PUPPET_PADLOCAL_TOKEN="puppet_padlocal_0000000000000000000" # 这里输入你自己的token
export WECHATY_PUPPET_SERVER_PORT="8080"
export WECHATY_TOKEN="myhosttoken123"
if [ $# -gt 1 ];then
NAME=$2
fi
if [ $# -gt 2 ];then
PORT=$3
fi
if [ $# -gt 3 ];then
WECHATY_PUPPET_PADLOCAL_TOKEN=$4
export WECHATY_PUPPET_PADLOCAL_TOKEN=$4
fi
if [ $# -gt 4 ];then
WECHATY_TOKEN=$5
export WECHATY_TOKEN=$5
fi
VPATH=""
EXEC="--rm -e WECHATY_LOG -e WECHATY_PUPPET -e WECHATY_PUPPET_PADLOCAL_TOKEN -e WECHATY_PUPPET_SERVER_PORT -e WECHATY_TOKEN"
`run() {` ` echo -e docker run --name $NAME -p $PORT:$PORT $EXEC $VPATH -d $IMG_NAME:$IMG_VER` ` docker run --name $NAME -p $PORT:$PORT $EXEC $VPATH -d $IMG_NAME:$IMG_VER` `}`
case $1 in
pull)
echo -e docker pull ${IMG_NAME}:${IMG_VER}
docker pull ${IMG_NAME}:${IMG_VER}
exit $?
;;
build)
echo -e docker build -t ${IMG_NAME}:${IMG_VER} .
docker build -t ${IMG_NAME}:${IMG_VER} .
exit $?
;;
start)
echo -e docker start $NAME
docker start $NAME
exit $?
;;
stop)
echo -e docker stop $NAME
docker stop $NAME
exit $?
;;
restart)
echo -e docker stop $NAME
echo -e docker start $NAME
docker stop $NAME
docker start $NAME
exit $?
;;
restarta)
echo -e docker stop $NAME
echo -e docker rm $NAME
echo -e docker rmi $IMG_NAME:$IMG_VER
docker stop $NAME
docker rm $NAME
docker rmi $IMG_NAME:$IMG_VER
run
exit $?
;;
rm)
echo -e docker stop $NAME
echo -e docker rm $NAME
docker stop $NAME
docker rm $NAME
exit $?
;;
rmi)
echo -e docker rmi $IMG_NAME
docker rmi $IMG_NAME
exit $?
;;
rma)
echo -e docker stop $NAME
echo -e docker rm $NAME
echo -e docker rmi $IMG_NAME:$IMG_VER
docker stop $NAME
docker rm $NAME
docker rmi $IMG_NAME:$IMG_VER
exit $?
;;
exec)
echo -e docker exec -it $NAME /bin/bash
docker exec -it $NAME /bin/bash
exit $?
;;
run)
run
exit $?
;;
*)
echo -e "===============================================================================" >&2
echo -e "\033[32mUsage: $NAME.sh {pull|run|start|stop|restart|rm|rmi|rma|exec} name port padlocal_token wechaty_token\033[0m" >&2
echo -e "-------------------------------------------------------------------------------" >&2
echo -e "> pull --> 拉取镜像" >&2
echo -e "> run --> 新建容器" >&2
echo -e "> exec --> 进入容器" >&2
echo -e "> start --> 启动容器" >&2
echo -e "> stop --> 暂停容器" >&2
echo -e "> restart --> 重启容器(暂停容器+启动容器)" >&2
echo -e "> restarta --> 重启服务(暂停容器+移除容器+删除镜像+新建容器)" >&2
echo -e "> rm --> 删除容器" >&2
echo -e "> rmi --> 删除镜像" >&2
echo -e "> rma --> 删除服务(暂停容器+移除容器+删除镜像)" >&2
echo -e "-------------------------------------------------------------------------------" >&2
echo -e "> name --> 容器名" >&2
echo -e "> port --> 端口号" >&2
echo -e "> padlocal_token --> 需要到wechaty官网获取PADLOCAL TOKEN" >&2
echo -e "> wechaty_token --> 设定主机访问Token,验证地址:https://api.chatie.io/v0/hosties/WECHATY_TOKEN" >&2
echo -e ">" >&2
echo -e "===============================================================================" >&2
exit 1
;;
esac
脚本中要手动设定padlocal_token和wechaty_token
- padlocal_token要到wechaty官网获取;
- wechaty_token可以自定义,就是自己的主机名
或者执行shell脚本时候注入,具体可详见sh wechaty.sh
运行执行:sh wechaty.sh run
docker ps看到容器运行成功后,访问 https://api.chatie.io/v0/hosties/[wechaty_token]验证
如果看到如下图代表成功:

如果看到host和ip都是:0.0.0.0则是没有成功;
至此,wechaty服务搭建好了
回到chatgpt-on-wechat项目,将上面自定义的WECHATY TOKEN写入config.json的wechaty_puppet_service_token

运行项目成功

@chiakileftcang 解决了吗?我也出现这个错误了
我大概知道怎么回事了。 这需要自建一套wechaty的环境; 这是我写的一个运行docker容器的脚本(wechaty.sh):
#!/bin/bashPWD=$(cddirname $0;pwd);IMG_NAME='wechaty/wechaty'IMG_VER='0.65'PORT=8080NAME='wechaty-getway'export WECHATY_LOG="verbose"export WECHATY_PUPPET="wechaty-puppet-padlocal"export WECHATY_PUPPET_PADLOCAL_TOKEN="puppet_padlocal_0000000000000000000" # 这里输入你自己的tokenexport WECHATY_PUPPET_SERVER_PORT="8080"export WECHATY_TOKEN="myhosttoken123"if [ $# -gt 1 ];thenNAME=$2fiif [ $# -gt 2 ];thenPORT=$3fiif [ $# -gt 3 ];thenWECHATY_PUPPET_PADLOCAL_TOKEN=$4export WECHATY_PUPPET_PADLOCAL_TOKEN=$4fiif [ $# -gt 4 ];thenWECHATY_TOKEN=$5export WECHATY_TOKEN=$5fiVPATH=""EXEC="--rm -e WECHATY_LOG -e WECHATY_PUPPET -e WECHATY_PUPPET_PADLOCAL_TOKEN -e WECHATY_PUPPET_SERVER_PORT -e WECHATY_TOKEN"`run() {` ` echo -e docker run --name $NAME -p $PORT:$PORT $EXEC $VPATH -d $IMG_NAME:$IMG_VER` ` docker run --name $NAME -p $PORT:$PORT $EXEC $VPATH -d $IMG_NAME:$IMG_VER` `}`case $1 inpull)echo -e docker pull ${IMG_NAME}:${IMG_VER}docker pull ${IMG_NAME}:${IMG_VER}exit $?;;build)echo -e docker build -t ${IMG_NAME}:${IMG_VER} .docker build -t ${IMG_NAME}:${IMG_VER} .exit $?;;start)echo -e docker start $NAMEdocker start $NAMEexit $?;;stop)echo -e docker stop $NAMEdocker stop $NAMEexit $?;;restart)echo -e docker stop $NAMEecho -e docker start $NAMEdocker stop $NAMEdocker start $NAMEexit $?;;restarta)echo -e docker stop $NAMEecho -e docker rm $NAMEecho -e docker rmi $IMG_NAME:$IMG_VERdocker stop $NAMEdocker rm $NAMEdocker rmi $IMG_NAME:$IMG_VERrunexit $?;;rm)echo -e docker stop $NAMEecho -e docker rm $NAMEdocker stop $NAMEdocker rm $NAMEexit $?;;rmi)echo -e docker rmi $IMG_NAMEdocker rmi $IMG_NAMEexit $?;;rma)echo -e docker stop $NAMEecho -e docker rm $NAMEecho -e docker rmi $IMG_NAME:$IMG_VERdocker stop $NAMEdocker rm $NAMEdocker rmi $IMG_NAME:$IMG_VERexit $?;;exec)echo -e docker exec -it $NAME /bin/bashdocker exec -it $NAME /bin/bashexit $?;;run)runexit $?;;*)echo -e "===============================================================================" >&2echo -e "\033[32mUsage: $NAME.sh {pull|run|start|stop|restart|rm|rmi|rma|exec} name port padlocal_token wechaty_token\033[0m" >&2echo -e "-------------------------------------------------------------------------------" >&2echo -e "> pull --> 拉取镜像" >&2echo -e "> run --> 新建容器" >&2echo -e "> exec --> 进入容器" >&2echo -e "> start --> 启动容器" >&2echo -e "> stop --> 暂停容器" >&2echo -e "> restart --> 重启容器(暂停容器+启动容器)" >&2echo -e "> restarta --> 重启服务(暂停容器+移除容器+删除镜像+新建容器)" >&2echo -e "> rm --> 删除容器" >&2echo -e "> rmi --> 删除镜像" >&2echo -e "> rma --> 删除服务(暂停容器+移除容器+删除镜像)" >&2echo -e "-------------------------------------------------------------------------------" >&2echo -e "> name --> 容器名" >&2echo -e "> port --> 端口号" >&2echo -e "> padlocal_token --> 需要到wechaty官网获取PADLOCAL TOKEN" >&2echo -e "> wechaty_token --> 设定主机访问Token,验证地址:https://api.chatie.io/v0/hosties/WECHATY_TOKEN" >&2echo -e ">" >&2echo -e "===============================================================================" >&2exit 1;;esac脚本中要手动设定padlocal_token和wechaty_token
- padlocal_token要到wechaty官网获取;
- wechaty_token可以自定义,就是自己的主机名
或者执行shell脚本时候注入,具体可详见sh wechaty.sh 运行执行:sh wechaty.sh run docker ps看到容器运行成功后,访问 https://api.chatie.io/v0/hosties/[wechaty_token]验证 如果看到如下图代表成功:
如果看到host和ip都是:0.0.0.0则是没有成功;
至此,wechaty服务搭建好了 回到chatgpt-on-wechat项目,将上面自定义的WECHATY TOKEN写入config.json的wechaty_puppet_service_token
运行项目成功
请问我卡在这里是什么原因二维码没弹出
可以检查服务器的对外端口是否有开放,此外就是等它连接了
@Chiaki-Chan 老哥。有封装好的文件夹么,直接发一个我? [email protected] 感谢
大佬,最新版本的源码按照您的方法也不行了
今天搞了一天,gateway搭建在服务器上,本机执行程序,只成功登录上去两次,怀疑PadLocal服务器不太行啊。