python实现微信自动回复机器人功能


Posted in Python onJuly 11, 2019

一 简单介绍

wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计等功能。

总而言之,可用来实现各种微信个人号的自动化操作。(http://wxpy.readthedocs.io/zh/latest/bot.html)

安装:wxpy 支持 Python 3.4-3.6,以及 2.7 版本

pip3 install -U wxpy

安装 pillow模块

pip3 install pillow

安装 pyecharts模块

pip3 install pyecharts

二 登录微信

1 、 扫码登录微信

from wxpy import *
bot = Bot()

2、cache_path=True

运行上面的程序,会弹出二维码,用手机微信扫一扫即可实现登录。

但上面的程序有一个缺点,每次运行都要扫二维码。不过wxpy非常贴心地提供了缓存的选项,用于将登录信息保存下来,就不用每次都扫二维码,如下

bot = Bot(cache_path=True) # 必须先登录过一次以后才可以使用缓存

三 微信好友男女比例占比展示

from wxpy import *
from pyecharts import Pie
import webbrowser
bot=Bot(cache_path=True) #注意手机确认登录
friends=bot.friends()
#拿到所有朋友对象,放到列表里
attr=['男朋友','女朋友','未知性别']
value=[0,0,0]
for friend in friends:
 if friend.sex == 1: # 等于1代表男性
  value[0]+=1
 elif friend.sex == 2: #等于2代表女性
  value[1]+=1
 else:
  value[2]+=1
pie = Pie("朋友男女比例")
pie.add("", attr, value, is_label_show=True)
#图表名称str,属性名称list,属性所对应的值list,is_label_show是否现在标签
pie.render('sex.html')#生成html页面
# 打开浏览器
webbrowser.open("sex.html")

python实现微信自动回复机器人功能

四 微信好友地域分布

显示中国地图,需要装中国地图模块:

全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图
中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区
中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市
中国县区级地图: echarts-china-counties-pypkg (4.1MB):2882 个中国县·区
中国区域地图: echarts-china-misc-pypkg (148KB):11 个中国区域地图,比如华南、华北。

特别注明,中国地图在 echarts-countries-pypkg 里。需要这些地图的朋友,可以装 pip 命令行:

pip3installecharts−countries−pypkg pip3installecharts−countries−pypkg pip3 install echarts-china-provinces-pypkg
pip3installecharts−china−cities−pypkg pip3installecharts−china−cities−pypkg pip3 install echarts-china-counties-pypkg
$ pip3 install echarts-china-misc-pypkg

from wxpy import *
from pyecharts import Map
import webbrowser
bot=Bot(cache_path=True)
friends=bot.friends()
area_dic={}#定义一个字典,用来存放省市以及省市人数
for friend in friends:
 if friend.province not in area_dic:
  area_dic[friend.province]=1
 else:
  area_dic[friend.province]+=1
attr = area_dic.keys()
value = area_dic.values()
map = Map("好朋友们的地域分布", width=1200, height=600)
map.add(
 "好友地域分布",
 attr,
 value,
 maptype='china',
 is_visualmap=True, #结合体VisualMap
)
#is_visualmap -> bool 是否使用视觉映射组件
#
map.render('area.html')
webbrowser.open("area.html")

python实现微信自动回复机器人功能

五 微信聊天机器人

1、为微信传输助手传送消息

这里的file_helper就是微信的文件传输助手,我们给文件传输助手发送一条消息,可以在手机端的文件传输助手中收到括号内的消息

bot.file_helper.send('lqz say hello')

2、收发消息@bot.register()

from wxpy import *
bot=Bot(cache_path=True)
@bot.register()
def recv_send_msg(recv_msg):
 print('收到的消息:',recv_msg.text) # recv_msg.text取得文本
 return '自动回复:%s' %recv_msg.text
# 进入Python命令行,让程序保持运行
embed()

3、自动给老婆回复信息

当你在网吧吃着鸡,操作骚出天际时,你老婆打电话让你回家吃饭,此时你怎么办。。

from wxpy import *
bot=Bot(cache_path=True)
girl_friend=bot.search('刘刘刘')[0]
print(girl_friend)
@bot.register() # 接收从指定好友发来的消息,发送者即recv_msg.sender为指定好友girl_friend
def recv_send_msg(recv_msg):
 print('收到的消息:',recv_msg.text) # recv_msg.text取得文本
 if recv_msg.sender == girl_friend:
  recv_msg.forward(bot.file_helper,prefix='老婆留言: ') #在文件传输助手里留一份,方便自己忙完了回头查看
  ms='老婆最美丽,我对老婆的爱如滔滔江水,连绵不绝'
  print('>>>给老婆回复的:', ms)
  return ms#给老婆回一份
embed()

4、从微信群里定位好友之拍老板马屁

from wxpy import *
bot=Bot(cache_path=True)
company_group=bot.groups().search('群名字')[0]
boss=company_group.search('老板名字')[0]
@bot.register(chats=company_group) #接收从指定群发来的消息,发送者即recv_msg.sender为组
def recv_send_msg(recv_msg):
 print('收到的消息:',recv_msg.text)
 if recv_msg.member == boss:
  #这里不用recv_msg.render 因为render是群的名字
  recv_msg.forward(bot.file_helper,prefix='老板发言: ')
  return '老板说的好有道理,深受启发'
embed()

5、聊天机器人

给所有人自动回复

import json
import requests
from wxpy import *
bot = Bot(cache_path=True)
# 调用图灵机器人API,发送消息并获得机器人的回复
def auto_reply(text):
 url = "http://www.tuling123.com/openapi/api"
 api_key = "9df516a74fc443769b233b01e8536a42"
 payload = {
  "key": api_key,
  "info": text,
 }
 r = requests.post(url, data=json.dumps(payload))
 result = json.loads(r.content)
 return "[来自智能机器人] " + result["text"]
@bot.register()
def forward_message(msg):
 return auto_reply(msg.text)
embed()

给指定的群回复

import json
import requests
from wxpy import *
bot = Bot(cache_path=False)
group=bot.groups().search('群名字')[0]
print(group)
# 调用图灵机器人API,发送消息并获得机器人的回复
def auto_reply(text):
 url = "http://www.tuling123.com/openapi/api"
 api_key = "9d602fe417464cd18beb2083d064bee6"
 payload = {
  "key": api_key,
  "info": text,
 }
 r = requests.post(url, data=json.dumps(payload))
 result = json.loads(r.content)
 return "[来自智能机器人] " + result["text"]
@bot.register(chats=group)
def forward_message(msg):
 return auto_reply(msg.text)
embed()

给指定的人回复

import requests
from wxpy import *
bot = Bot( cache_path=True)
girl_friend=bot.search('名字r')[0]
# 调用图灵机器人API,发送消息并获得机器人的回复
def auto_reply(text):
 url = "http://www.tuling123.com/openapi/api"
 api_key = "申请图灵机器人获取key值放到这里"
 payload = {
  "key": api_key,
  "info": text,
 }
 r = requests.post(url, data=json.dumps(payload))
 result = json.loads(r.content)
 return "[微信测试,请忽略] " + result["text"]
@bot.register()
def forward_message(msg):
 if msg.sender == girl_friend:
  return auto_reply(msg.text)
embed()

总结

以上所述是小编给大家介绍的python实现微信自动回复机器人功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python创建文件和追加文件内容实例
Oct 21 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
简单了解python PEP的一些知识
Jul 13 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 #Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 #Python
PowerBI和Python关于数据分析的对比
Jul 11 #Python
pow在python中的含义及用法
Jul 11 #Python
Python简单处理坐标排序问题示例
Jul 11 #Python
如何使用Python自动控制windows桌面
Jul 11 #Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 #Python
You might like
一篇入门的php Class 文章
2007/04/04 PHP
php的curl实现get和post的代码
2008/08/23 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
js如何打印object对象
2015/10/16 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
学习python (2)
2006/10/31 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
python logging 日志的级别调整方式
2020/02/21 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
中药专业自荐信范文
2014/03/18 职场文书
个人贷款承诺书
2014/03/28 职场文书
幼儿园家长寄语
2014/04/02 职场文书
家具商场的活动方案
2014/08/16 职场文书
宣传稿格式范文
2015/07/23 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
基于Python编写一个监控CPU的应用系统
2022/06/25 Python