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 20 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python实现连接mongodb的方法
May 08 Python
django批量导入xml数据
Oct 16 Python
基于Python的文件类型和字符串详解
Dec 21 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
numpy中的高维数组转置实例
Apr 17 Python
matplotlib给子图添加图例的方法
Aug 03 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
Python进阶之@property动态属性的实现
Apr 01 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Python 一键获取百度网盘提取码的方法
Aug 01 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入门速成教程
2007/03/19 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
深入了解Python数据类型之列表
2016/06/24 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python3实现飞机大战
2020/11/29 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
项目合作计划书
2014/01/09 职场文书
家长给孩子的评语
2014/01/30 职场文书
数控个人求职信范文
2014/02/03 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis