python文档怎么转换成链接发送_基于hook的python机器人,彻底取代itchat

bdebba0c88a1f1127de868a4f7af2201.png
本文档部分由itchat与wxpy的开发文档修改得出

本文链接:https://zhuanlan.zhihu.com/p/114214846

禁止不规范转载

WechatBot

WechatBot是一个半开源的微信个人号接口,使用python调用微信从未如此简单。

使用不到20行的代码,你就可以完成一个能够处理所有信息的微信机器人。

当然,该api的使用远不止一个机器人,更多的功能等着你来发现。

如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。


项目地址(开发不易求个star)

配套微信

链接:https://pan.baidu.com/s/10FuLVrWQcNiy74dtrtniuQ

提取码:abmk

infopensource/WechatBot​github.com
3a888a1d4c255cb9d398654abf3e5618.png

请优先选择github(最新)

诶嘿嘿/WechatBot​gitee.com

为啥要整这玩意?

在做一个程序的时候需要用到微信机器人,然后尴尬的发现自己的微信没办法登录网页版,所以itchat,wxpy对我来说全部报废,于是我就基于网上hook微信的易语言代码做了一套类似于酷q的调用模式,封装成了python函数。


怎么使用?

首先,点开我的项目地址,按一下右上角的star按钮(雾),再下载到本地,通过demo.exe启动微信,运行msgDB.py ,此时给这个账号发送消息111就能惊喜的发现机器人可以工作了!

注意:强烈建议使用小号作为机器人使用,毕竟谁也没法保证你会不会被封号......

开发者文档(基础)

本部分为简单的入门级使用

首先新建一个py文件,可以随便给文件命名。第一步当然是导入模块和初始化机器人:

import 
注意:请确保你所创建的py文件与demo.exe,msgDB.py,add.dll,exchange.db在同一个文件夹下,同时demo.exe已经打开并成功注入微信进程

然后创建一个死循环监听是否有人发来了新消息,用变量res来保存返回值:

import msgDB

msgDB.initDB()
while True:
    res=msgDB.listen_wxMsg()#监听一次是否有新消息

listen_wxMsg函数如果监听到了新的消息产生就返回一个列表,无新消息则返回False,所以当listen_wxMsg函数返回False我们就可以开始下一轮监听了。

import msgDB

msgDB.initDB()
while True:
    res=msgDB.listen_wxMsg()#监听一次是否有新消息
    if res==False:#无新消息产生则开始下一轮监听
        continue

那么收到新消息后列表返回的究竟是什么呢?其实在这个列表中我们需要关注的元素只有两个:res[0](消息发送者的微信id)和 res[3](消息内容)。根据以上所说的,如果想对别人发来的某一个关键词进行响应该怎么写?

import msgDB

msgDB.initDB()
while True:
    res=msgDB.listen_wxMsg()#监听一次是否有新消息
    if res==False:#无新消息产生则开始下一轮监听
        continue
    if res[3]=="keyword":#res[3]存着别人发来的消息
        msgDB.send_wxMsg(res[0],"response")#res[0]是发送消息的人的id

这时运行程序,发现在对机器人发送了消息“keyword”后机器人竟然不断的回复response,是函数出问题了?不要慌,这是因为这一条消息没有从消息列表里删除,我们只需要在每一条处理完的消息后加一个函数delMsg()即可,代码如下:

import msgDB

msgDB.initDB()
while True:
    res=msgDB.listen_wxMsg()#监听一次是否有新消息
    if res==False:#无新消息产生则开始下一轮监听
        continue
    if res[3]=="keyword":#res[3]存着别人发来的消息
        msgDB.send_wxMsg(res[0],"response")#res[0]是发送消息的人的id
        msgDB.delMsg()

那么,如果我想发送图片该怎么做呢?很简单,只要稍微改一改发送消息的函数即可。

import msgDB

msgDB.initDB()
while True:
    res=msgDB.listen_wxMsg()#监听一次是否有新消息
    if res==False:#无新消息产生则开始下一轮监听
        continue
    if res[3]=="keyword":#res[3]存着别人发来的消息
        msgDB.send_wxPicture(res[0],"本地图片路径")#res[0]是发送消息的人的id
        msgDB.delMsg()
注意:不要试图传入一个网页图片的URL,这不会奏效

开发者文档(进阶)

本部分包括常见的错误及处理方式,响应带参数消息的方法以及其他的奇技淫巧。

上面那个简单的小栗子只是入门级的使用,当我们真正将项目投入生产时就会发现事情远远没有这么简单。下面我们就以我写的一个简单的机器人(节选)为例,了解更多高级功能的使用。

import 

代码总览:

这段代码实现了一个小功能:随机从我预先放在c盘pic文件夹下的1000张二次元图片(具体获取方法见下文)中抽取一部分返回给用户。

图片获取:

通过for循环调用代码中的local_picture函数,存入c:pic目录,图片由1.jpg-1000.jpg命名。

参数解析:

首先我们要关注的是收到消息后机器人到底应该返回几张图片。这里我采取的方法是让用户在要执行的命令后加一个空格,再写出要获取的图片数量。例如想获取十张图片,应该这么写

由于时间仓促来不及全部完成,所以先挖坑,以后补上。

实现原理

本部分包括简单的底层实现原理,以及python接口的本质
同样挖坑待填

0a7cee97964f47484914587370188d63.png

如果遇到任何问题欢迎知乎私信我或者加我的QQ:2223513246 询问。

最后,点个赞再走吧

原作者 @hacktor
本软件功能扩展&维护 @Acclea
获取好友列表功能编写 @Gugi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值