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 相关文章推荐
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
python简单实现操作Mysql数据库
Jan 29 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
python使用建议与技巧分享(一)
Aug 17 Python
Python爬虫之Selenium实现键盘事件
Dec 04 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
php 远程图片保存到本地的函数类
2008/12/08 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
php构造函数与析构函数
2016/04/23 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python实现序列化及csv文件读取
2020/01/19 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
长城导游词400字
2015/01/30 职场文书
中秋节晚会开场白
2015/05/29 职场文书