微信机器人(实现自动回复,数据统计) + 数据可视化

自古美人都是妖i 提交于 2020-04-29 11:11:10

微信机器人的使用

安装:wxpy模块、pillow模块、pyecharts数据可视化模块(https://pyecharts.org # 官网)

 

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

全球国家地图: 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 命令行:

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

 

用pkl模块保存的朋友数据,删除可以重扫 



生成饼图统计好友性别
from wxpy import * # 导入微信机器人模块所有
from pyecharts import Pie,Map # Pie是饼图,map是地图
import webbrowser

'''实例化微信机器人'''
bot = Bot(cache_path=True) # 参数True表示微信登陆后缓存好友信息

friends = bot.friends() # 拿到所有好友对象

'''生成饼图数据'''
attr = ['男性','女性','未知',]
value=[0,0,0]
for friend in friends:
if friend.sex == 1:
value[0] += 1
elif friend.sex == 2:
value[1] += 1
else:
value[2] += 1

pie = Pie('男女朋友比例') # 实例化对象
pie.add('',attr,value,is_label_show=True) # is_label_show=True 让效果好看点
pie.render('sex.html')
webbrowser.open('sex.html') # 让浏览器打开一个地址

  

生成地图统计微信好友分布
from wxpy import * # 导入微信机器人模块所有
from pyecharts import Map # Pie是饼图,map是地图
import webbrowser

bot = Bot(cache_path=True) # 参数True表示微信登陆后缓存好友信息
bro = webbrowser.Chrome
friends = bot.friends() # 拿到所有好友对象


area_dic = {} # 用来统计
for friend in friends:
# province 就是对象里的省份字段
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() # 人数

maps = Map("好友地区分布",width=1200,height=600) # 生成对象
maps.add( # 调用add方法传入参数
"好友地区分布",
attr,
value,
maptype='china',
is_visualmap=True,) # 传入两个参数列表,地区china

maps.render('area.html')

webbrowser.open('area.html')


自动回复消息的简单应用
from wxpy import *
bot=Bot(cache_path=True)

@bot.register() # 装饰器装饰
def recv_send_msg(recv_msg): # 对象传入参数
print('收到的消息:',recv_msg.text) # 收到的消息
return '自动回复:%s' %recv_msg.text # 回复消息直接return

# 进入Python命令行,让程序保持运行
embed() # 这个不写就直接结束程序了


收到指定的人的消息自动回复
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取得文本
# sender参数就是谁发给你的消息
if recv_msg.sender == girl_friend: # 当发来的消息对象等于我上面指定的对象
'''下面的几行就是回复代码'''
recv_msg.forward(bot.file_helper,prefix='老婆留言: ') # 这个是在文件传输助手里留一份消息,方便忙完回头查看
ms='老婆最美丽,我对老婆的爱如滔滔江水,连绵不绝' # 定义回复的文字
print('>>>给老婆回复的:', ms)
return ms # 直接返回

embed()


给群里指定的人自动回复消息
from wxpy import *
bot=Bot(cache_path=True)

company_group=bot.groups().search('群名字')[0] # 模糊匹配到的群名字是在列表里所以取第0个

boss=company_group.search('老板名字')[0] # 从群对象里模糊匹配指定人的名字,名字是在列表里所以取第0个


@bot.register(chats=company_group) # 这个装饰器要传入群对象,就是只有这个群的聊天才能走到后面的程序
def recv_send_msg(recv_msg):
print('收到的消息:',recv_msg.text)
# .member出来的是个人,.sender出来的是群对象,而不是个人
if recv_msg.member == boss: # 当群里有消息进入,就匹配个人是不是自己指定的人,是的旧后面自动回复
#这里不用recv_msg.render 因为render是群的名字
recv_msg.forward(bot.file_helper,prefix='老板发言: ') # 这个是在文件传输助手里留一份消息,方便忙完回头查看
return '老板说的好有道理,深受启发'

embed()


调用图灵机器人实现自动聊天
import json
import requests
from wxpy import *
bot = Bot(cache_path=True)

laopo = bot.search('XXX')[0] # 指定自动回复的人

@bot.register()
def forward_message(msg):
if msg.sender == laopo:
return auto_reply(msg.text)



# 调用图灵机器人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)) # 向接口发送post请求,携带数据
result = json.loads(r.content)
print()
return result["text"]

embed()

if __name__ == '__main__':
forward_message()


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!