更新内容
修复bug1
这是因为没有考虑到注册表路径不存在,只需要做个判断即可
修复bug2
这个问题很神奇,在使用Python3.10的时候会出现,而在3.8中确是正常的。3.10没有把安装的包路径(site-packages
)添加到sys.path
而我在调试的时候发现,C++里打印的sys.path和Python里打印的不一样,也就是说Py_Main
这个函数会自己创建一个独立的环境来运行Python,而创建的环境又因为某种原因没有将包路径添加到sys.path
。
我的解决方法: 不偷懒使用Py_Main
,而是用PyRun_SimpleFileExFlags
来运行Python文件
http服务
然后就是给发消息和发图片增加了一个http服务,这样可以通过http来发送消息,我用的fastapi
代码
因为之前已经预留了插件的接口,实现起来也很方便,只需要增加一个插件
from threading import Thread
from .. import SendMsg
import uvicorn
from fastapi import FastAPI
app = FastAPI()
class HttpApi(Thread):
def __init__(self) -> None:
super().__init__()
sg = SendMsg()
@app.post("/post_sendmsg")
def post_sendmsg(touser:str, msg:str):
r = sg.send_text(touser, msg)
return {"result": r}
@app.post("/post_sendimage")
def post_sendimage(touser: str, path: str):
r = sg.send_image(touser, path)
return {"result": r}
@app.get("/sendmsg")
def sendmsg(touser: str, msg: str):
r = sg.send_text(touser, msg)
return {"result": r}
@app.get("/sendimage")
def sendimage(touser: str, path: str):
r = sg.send_image(touser, path)
return {"result": r}
def run(self):
uvicorn.run(app="wechat_pyrobot.other_plugins.http_api:app", host="127.0.0.1", port=26666, reload=False)
为什么要将路由方法写在__init__
里?因为我发现fastapi会将self参数识别成路由参数,而不是self本身,百度搜了下这是最简单的解决办法
启动服务
接着在启动的时候加载这个插件:
from py_process_hooker import inject_python_and_monitor_dir
from wechat_pyrobot import get_on_startup
from wechat_pyrobot.msg_plugins import PrintMsg
from wechat_pyrobot.other_plugins import HttpApi
if __name__ == "__main__":
process_name = "WeChat.exe"
open_console = True
on_startup = get_on_startup(msg_plugins=[PrintMsg], other_plugins=[HttpApi])
inject_python_and_monitor_dir(process_name, __file__, open_console=open_console, on_startup=on_startup)
然后在浏览器输入: http://127.0.0.1:26666/sendmsg?touser=filehelper&msg=http_msg
就会往文件传输助手发送消息了,图片消息则是:http://127.0.0.1:26666/sendimage?touser=filehelper&path=T:tmpa.png
我还实现了post方法,可以通过json格式的data来传递参数,比如{"touser":"filehelper","msg":"aaaaa"}
安装
pip install wechat_pyrobot==1.2.0
如果国内源还没有同步最新版本,可以指定-i https://pypi.org/simple/
选项使用pip官方库。
原文始发于微信公众号(Python成长路):Python机器人更新:修复一些bug和新增http服务
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/283113.html