热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文档部分由itchat与wxpy的开发文档修改得出本文链接:https:zhuanlan.zhihu.comp114214846禁止不规范转载WechatBotWe
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 msgDBmsgDB.initDB()
while True:res=msgDB.listen_wxMsg()#监听一次是否有新消息

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

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

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

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

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

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

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

import msgDBmsgDB.initDB()
while True:res=msgDB.listen_wxMsg()#监听一次是否有新消息if res==False:#无新消息产生则开始下一轮监听continueif res[3]=="keyword":#res[3]存着别人发来的消息msgDB.send_wxPicture(res[0],"本地图片路径")#res[0]是发送消息的人的idmsgDB.delMsg()

注意:不要试图传入一个网页图片的URL,这不会奏效

开发者文档(进阶)

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

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

import

代码总览:

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

图片获取:

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

参数解析:

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

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

实现原理

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

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

最后,点个赞再走吧

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



推荐阅读
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了包的基础知识,包是一种模块,本质上是一个文件夹,与普通文件夹的区别在于包含一个init文件。包的作用是从文件夹级别组织代码,提高代码的维护性。当代码抽取到模块中后,如果模块较多,结构仍然混乱,可以使用包来组织代码。创建包的方法是右键新建Python包,使用方式与模块一样,使用import来导入包。init文件的使用是将文件夹变成一个模块的方法,通过执行init文件来导入包。一个包中通常包含多个模块。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了win7系统休眠功能无法启动和关闭的解决方法,包括在控制面板中启用休眠功能、设置系统休眠的时间、通过命令行定时休眠、手动进入休眠状态等方法。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
丫_龟shop
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有