zoukankan      html  css  js  c++  java
  • Python微信机器人

    一 简介

    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")

    复制代码

    四 微信好友地域分布

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

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

    复制代码
    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")

    复制代码

    五 微信聊天机器人

    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()

    复制代码
    [转载至原文链接](https://www.cnblogs.com/liuqingzheng/articles/9079192.html)
  • 相关阅读:
    Android开发总结
    LeakCanary原理分析
    机器学习
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/13436647.html
Copyright © 2011-2022 走看看