Python机器人更新:修复一些bug和新增http服务

更新内容

修复bug1

Python机器人更新:修复一些bug和新增http服务

这是因为没有考虑到注册表路径不存在,只需要做个判断即可

修复bug2

Python机器人更新:修复一些bug和新增http服务

这个问题很神奇,在使用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)

Python机器人更新:修复一些bug和新增http服务

然后在浏览器输入: 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

(0)
python学霸的头像python学霸bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!