原文:http://blog.csdn.net/tobacco5648/article/details/50722321

wxBot 是Python包装Web微信实现的微信机器人框架。可以很容易地实现微信机器人。 
github地址: wxBot github

环境与依赖

目前只能运行于Python 2环境 。 
wxBot 用到了Python requests 和 pyqrcode 库,使用之前需要安装这两个库:

pip install requests
pip install pyqrcode
  • 1
  • 2
  • 1
  • 2

快速开发

代码

利用 wxBot 最简单的方法就是继承WXBot类并实现handle_msg_all或者schedule函数,然后实例化子类并run,如下的代码对所有的文本消息回复 “hi”, 并不断向好友tb发送”schedule”。 
handle_msg_all函数用于处理收到的每条消息,而schedule函数可以做一些任务性的事情(例如不断向好友推送信息或者一些定时任务)。

#!/usr/bin/env python
# coding: utf-8 import time
from wxbot import * class MyWXBot(WXBot):
def handle_msg_all(self, msg):
if msg['msg_type_id'] == 5:
self.send_msg(msg['user_name'], 'hi') def schedule(self):
self.send_msg('tb', 'schedule')
time.sleep(1) def main():
bot = MyWXBot()
bot.DEBUG = True
bot.run() if __name__ == '__main__':
main()

运行

直接用python运行代码(如运行测试代码test.py):

python test.py
  • 1
  • 1

登录微信

程序运行之后,会在当前目录下生成二维码图片文件 qr.png ,用微信扫描此二维码并按操作指示确认登录网页微信。

如果运行在Linux下,还可以通过设置WXBot对象的conf[‘qr’]为’tty’的方式直接在终端打印二维码(此方法只能在Linux终端下使用),效果如下:

效果展示

测试代码test.py的运行效果:

接口

handle_msg_all

handle_msg_all函数的参数msg是代表一条消息的字典。一般包含以下字段:

字段名 意义
msg_id 消息id,微信内部数据
msg_type_id 消息类型,具体见消息类型表
user_id 发送消息的用户的id,微信内部数据
user_name 发送消息的用户的名字,为备注名或者微信用户名
content 消息体,不同类型消息的此字段内容不同,具体见消息类型表

消息类型表:

类型号 类型名称 类型描述 content
1 Location 位置 字典,包含location(位置的文本描述)和xml(原始未解析的xml格式文本)字段
2 FileHelper 文件 字符串,文本文件内容
3 Self 自己发送的消息 字符串,文本消息
4 Group 群消息 字典,包含group_id(微信内部id), group_name(群名), user(微信内部id), user_name(用户名称), msg(字符串消息)字段
5 Text 普通文本消息 字符串, 文本消息
6 Image 图片 字符串, 图片url
7 Voice 语音 字符串, 语音url
8 Recommend 微信名片 字典, 包含nickname(昵称),alias(别名),province(省份),city(城市), gender(性别)字段
9 Animation 动画 字符串, 动画url
10 Share 分享 字典,包含type(类型),title(标题),desc(描述),url(链接),from(来自)字段
11 Video 视频 字符串,未解析的xml字符串
12 VideoCall 视频电话 字符串,未解析的xml字符串
13 Redraw 撤回消息 字符串,未解析的xml字符串
14 Init 微信初始化系统消息,可以忽略 字符串,未解析的xml字符串
99 Unknown 未知类型 字符串,未解析的xml字符串

WXBot对象属性

WXBot对象在登录并初始化之后,含有以下的可用数据:

属性 描述
contact_list 当前用户的微信联系人列表
group_list 当前用户的微信群列表
session WXBot与WEB微信服务器端交互所用的requests Session对象

WXBot对象还含有一些可以利用的方法:

方法 描述
get_icon(id) 获取用户icon并保存到本地文件 img_[id].jpg ,id为用户id(Web微信数据)
get_head_img(id) 获取用户头像并保存到本地文件 img_[id].jpg,id为用户id(Web微信数据)
get_msg_img(msgid) 获取图像消息并保存到本地文件 img_[msgid].jpg, msgid为消息id(Web微信数据)
get_voice(msgid) 获取语音消息并保存到本地文件 voice_[msgid].mp3, msgid为消息id(Web微信数据)
get_user_remark_name(uid) 获取好友的备注名,没有备注名则获取好友微信号, uid为好友的用户id(Web微信数据)
send_msg_by_uid(word, dst) 向好友发送消息,word为消息字符串,dst为好友用户id(Web微信数据)
send_msg(name, word, isfile) 向好友发送消息,name为好友的备注名或者好友微信号,isfile为False时word为消息,isfile为True时word为文件路径(此时向好友发送文件里的每一行)

wxBot微信机器人框架(转)的更多相关文章

  1. Golang 微信机器人包

    一. 最近用在学习golang,写了个小工具练练手.通过golang模拟微信网页端,接收微信服务器的消息并定制.可接入图灵机器人的api实现一个微信机器人的小玩具,当然了,可以有更多更好玩的玩法. 二 ...

  2. python+爬虫+微信机器人 打造属于你的网购价格监督利器

    写在最前 程序是为人类服务的,最近正好身边小伙伴们在做球衣生意,当然是去nikenba专区购买了,可是有些热门球衣发布几分钟就被抢完,有些折扣球衣也是很快就被抢售一空,那么我们只能靠自己的眼睛一直盯着 ...

  3. PHP 微信机器人 Vbot 结合 Laravel 基础入门及实例

    新来了项目,需要能监听指定微信群的消息并进行转发.基于 PHP 7 的 web 微信机器人 Vbot 可以满足需求.Vbot 本质上就是实现了登录网页版微信来进行自动回复.群管理等等操作. githu ...

  4. 你的网购价格监督利器——python+爬虫+微信机器人

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  5. 微信js框架第二篇(创建完整界面布局)

    接着昨天的继续谈关于微信新出的这个js框架,今天主要谈一个页面的创建到布局的详细步骤. 一.创建一个完整页面       页面你可以创建在项目的任何节点,只要你在入口文件正确引入创建该页面的路径就可使 ...

  6. 微信开发_微信教程__微信通讯框架V1.0

    做个广告先, PHP千人群(6848027) C++群 (1414577) 看雪汇编&反汇编群(15375777) 看雪汇编&反汇编2群(4915800) 转载不一定注明出处,只要推荐 ...

  7. 带有机器人框架的.NET自己主动化測试

    Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...

  8. iOS 即时通讯 + 仿微信聊天框架 + 源码

    这些你造吗? 即时通讯(IM),在IOS这片江湖里面已经算是一个老者了,我这小旋风也是在很早以前巡山的时候,就知道有即时通讯这个妖怪,以前也多多少少接触过一些,在造APP的时候用过,哎呀,说着说着就感 ...

  9. 这是一款借助chrome 插件的微信机器人

    1.chrome kit微信机器人简介 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开too ...

随机推荐

  1. 最小生成树(MST)

    原创 今天来说说最小生成树问题,我们知道最小生成树有两种求法,一种是prim算法,另一种是kruskal算法,关于两种算法的定义以及证明,请查看相关资料,这里不多说,理解起来也相当容易,我们来看一个问 ...

  2. 个人作业4——alpha阶段个人总结(201521123103 吴雅娟)

    一.个人总结 在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 请用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 有 ...

  3. java csv list cant not repeat

    require: /** * before: * file A1.csv {1,2,3,4,5} * file A2.csv {2,3,9,10,11} * file B1.csv {5,12,13, ...

  4. Access-Control-Allow-Methods: OPTIONS & CORS

    Access-Control-Allow-Methods: OPTIONS CORS https://stackoverflow.com/questions/20478312/default-valu ...

  5. jdbc连接oracle语法

    public class LangDemo { public static void main(String[] args) throws Exception{ try { //加载驱动 Class. ...

  6. [洛谷P1640][SCOI2010]连续攻击游戏

    题目大意:有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.每种装备最多只能使用一次,且只能使用其中一种属性.装备所使用的属性值必须从1开始连续.问最多能攻击多少次? ...

  7. bug 跟蚊子的相似之处

    bug 跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是在你即将睡觉休息的时候出现. 2 A:最近在看<一拳超人>,觉得咱们程序猿跟埼玉老师有点像啊! B:哪里像了? ...

  8. CF893F Subtree Minimum Query 解题报告

    CF893F Subtree Minimum Query 输入输出格式 输入格式: The first line contains two integers \(n\) and \(r\) ( \(1 ...

  9. jsp电子商务 购物车实现之一 设计篇

    购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3.用cookie和数据库(购物车信息持久化)实现购物车: ============= ...

  10. oracle大数据匹配处理C#

    忙碌了几天写出来的oracle存储过程在作业中执行. 写的oracle存储过程如果有什么不好的地方大家指点指点. oracle存储过程其中使用到游标嵌套.if.if嵌套.数据插入表.select插入表 ...