zoukankan      html  css  js  c++  java
  • wxpy微信模块学习之聊天对象

    聊天对象

       通过Bot的Chats(),friends(),groups(),mps()方法,可分别获取到当前机器人的 所有聊天对象、好友、群聊,以及公众号列表。

        获得的合集有合集方法,如search()

    from wxpy import *
    bot = Bot()
    my_friend = bot.friends().search('游否', sex=MALE, city='深圳')[0]
    # <Friend: 游否>

        找到好友(或其他聊天对象)后,还可使用该聊天对象的send系列方法,对其发送消息:

    # 发送文本
    my_friend.send('Hello, WeChat!')
    # 发送图片
    my_friend.send_image('my_picture.png')
    # 发送视频
    my_friend.send_video('my_video.mov')
    # 发送文件
    my_friend.send_file('my_file.zip')
    # 以动态的方式发送图片
    my_friend.send('@img@my_picture.png')

    各类型的继承关系

       基础类:所有的聊天对象,均继承于以下两种基础类,并拥有相应的属性和方法;

       Chat---基本聊天对象:

        所有的聊天对象均继承于此类型

        拥有 微信ID、昵称 等属性

        拥有 发送消息Chat.send(),获取头像Chat.get_avatar()等方法

       User---单个聊天对象:

        继承于 Chat,表示个体聊天对象(而非群聊)

        Friend(好友对象)、Member(群成员对象)、Mp(公众号对象)

        拥有 性别、省份、城市、是否为好友 等属性

        拥有 加为好友User.add(),接收为好友User.accept()等方法

    基本聊天对象

       所有聊天对象都继承于”基本聊天对象”,并拥有相应的属性和方法。

      class wxpy.Chat(raw,bot)

       单个用户User和群聊Group的基础类

          bot:所属的机器人对象;

          raw:原始数据;

          puid:持续有效,且稳定唯一的聊天对象/用户ID,适用于持久保存;使用Bot.enable_puid()来启动;

          nick_name:该聊天对象的昵称 (好友、群员的昵称,或群名称);

          name:该聊天对象的友好名称(从 备注名称、群聊显示名称、昵称(或群名称),或微信号中按序选取第一个可用的);

          send(content=None,media_id=None):

            参数:content --  由 前缀 和 内容 两个部分组成,若 省略前缀,将作为纯文本消息发送

                    前缀 部分可为: ‘@fil@’, ‘@img@’, ‘@msg@’, ‘@vid@’ (不含引号)

                    分别表示: 文件,图片,纯文本,视频

                    内容 部分可为: 文件、图片、视频的路径,或纯文本的内容

               media_id -- 填写后可省略上传过程

            返回类型:wxpy.SentMessage

          send_msg(msg=None)

            发送文本消息

            参数:msg --  文本内容

            返回类型:wxpy.SentMessage

          send_image(path,media_id=None)

            发送图片

            参数:path --  文本路径

               media_id -- 填写后可省略上传过程

            返回类型:wxpy.SentMessage

          sent_file(path,media_id=None)

            发送文件

            参数:path --  文本路径

               media_id -- 填写后可省略上传过程

            返回类型:wxpy.SentMessage

          sent_video(path,media_id=None)

            发送视频

            参数:path --  文本路径

               media_id -- 填写后可省略上传过程

            返回类型:wxpy.SentMessage

          sent_raw_msg(raw_type, raw_content, uri=None, msg_ext=None)

            以原始格式发送其他类型的消息

            参数:raw_type (int) --  原始的整数消息类型

               raw_content (str) -- 原始的消息内容

               uri (str) -- 请求路径,默认为 ‘/webwxsendmsg’

                  msg_ext (dict) -- 消息的扩展属性 (会被更新到Msg 键中)

            返回类型:wxpy.SentMessage

            例,发送好友或公众号的名片

    my_friend.send_raw_msg(
        # 名片的原始消息类型
        raw_type=42,
        # 注意 `username` 在这里应为微信 ID,且被发送的名片必须为自己的好友
        raw_content='<msg username="wxpy_bot" nickname="wxpy 机器人"/>'
    )

             mark_as_read():消除当前聊天对象的未读提示小红点;

             pin():将当前聊天对象置顶;

             unpin():取消将当前聊天对象置顶;

           sent_video(path,media_id=None)

            获取头像

            参数:save_path -- 保存路径(后缀通常为.jpg),若为None则返回字节数据

             uin:微信中的聊天对象ID,固定且唯一(因微信的隐私策略,该属性有时无法被获取到,建议使用puid作为用户的唯一ID);

             alias:若用户进行过一次性的 “设置微信号” 操作,则该值为用户设置的”微信号”,固定且唯一(同上);

             wxid:聊天对象的微信ID (实际为 .alias 或 .uin)(同上);

             user_name:该聊天对象的内部 ID,通常不需要用到;

    单个聊天对象

      class wxpy.User(raw,bot)

       好友(Friend)、群聊成员(Member)、和公众号(Mp)的基础类

          remark_name:备注名称;

          set_remark_name(remark_name):

            设置或修改好友的备注名称

            参数:remark_name --  新的备注名称;

          sex:性别,目前有(MALE=1;FEMALE=2;未设置None);

          province:省份;

          city:城市;

          signature:个性签名;

          is_friend:判断当前用户是否为好友关系;

            返回:若为好友关系,返回对应的好友,否则返回 False

          add(verify_content=""):

            把当前用户加为好友

            参数:verify_content – 验证信息(文本);

          accept(verify_content=""):

            接受当前用户为好友

            参数:verify_content – 验证信息(文本);

            返回:新的好友对象;

            返回类型:wxpy.Friend;

    好友

      class wxpy.Friend(raw,bot)

       好友对象

    群聊

      class wxpy.Group(raw,bot)

       群聊对象

          members:群聊的成员列表;

          search(keywords=None,**attributes):

            在群聊中搜索成员

            参数:keywords --  成员名称关键词;

               attributes --  属性键值对;

            返回:匹配的群聊成员;

            返回类型:wxpy.Chats;

          owner:返回群主对象;

          is_owner:判断所属 bot 是否为群管理员;

          self:机器人自身 (作为群成员);

          upgate_group(members_detail=False):

            更新群聊的信息

            参数:members_details --  是否包括群聊成员的详细信息 (地区、性别、签名等);

          add_members(users,use_invitation=False):

            向群聊中加入用户

            参数:users --  待加入的用户列表或单个用户;

               use_invitation --  使用发送邀请的方式;

          remove_members(members):

            从群聊中移除用户

            参数:members --  待移除的用户列表或单个用户;

          rename_group(name):

            修改群聊名称

            参数:name --  新的名称,超长部分会被截断 (最长32字节);

    群成员

      class wxpy.Member(raw,bot)

       群聊成员对象

          display_name:群聊的显示昵称;

          remove():从群聊中移除该成员;

          name:该群成员的友好名称(从 群聊显示名称、昵称(或群名称),或微信号中,按序选取第一个可用的);

    公众号

      class wxpy.Mp(raw,bot)

       公众号对象

    聊天对象合集

      class wxpy.Chats(raw,bot)

          stats()与stats_text():群统计好友或群成员的性别和地区分布;  

    bot.friends().stats_text()
    # 游否 共有 100 位微信好友\n\n男性: 67 (67.0%)\n女性: 23 (23.0%) ...

          search(keywords=None,**attributes):

            在群聊中搜索成员

            参数:keywords --  成员名称关键词;

               attributes --  属性键值对,键可以是 sex(性别), province(省份), city(城市) 等。

                       例如可指定 province=’广东’;

            返回:匹配的群聊成员;

            返回类型:wxpy.Chats;

          stats(attribs=('sex','province',‘city')):

            统计各属性的分布情况

            参数:attribs --  需统计的属性列表或元组;

            返回:统计结果;

          stats_text(total = True,sex=True,top_province=10,top_cities=10):

            简单的统计结果的文本

            参数:total --  总体数量;

               sex --  性别分布;

               top_provinces --  省份分布;

               top_citys --  城市分布;

            返回:统计结果文本;

          add_all(interval=3,verify_content=""):

            将合集中的所有用户加为好友,请小心应对调用频率限制!

            参数:interval --  间隔时间(秒);

               verify_content--  验证说明文本;

    群聊合集

      class wxpy.Groups(group_list=None)

          群聊的合集,可用于按条件搜索 

          search(keywords=None,users=None,**attributes):

            在群聊合集中,根据给定的条件进行搜索

            参数:keywords --  群聊名称关键词;

               users --  需包含的用户;

               attributes --  属性键值对,键可以是 owner(群主对象), is_owner(自身是否为群主),

                       nick_name(精准名称) 等

            返回:匹配条件的群聊列表;

            返回类型:wxpy.Groups;

  • 相关阅读:
    搞明白这八个问题,Linux系统就好学多了
    Fedora 25 Alpha版本今天发布啦
    Linux新手应掌握的10个基本命令
    PC-BSD 换名 TrueOS
    JPA+Springboot实现分页效果
    陈亮
    押尾光太郎
    岸部真明
    面试必备-网络的七层协议
    JavaScript中的快速排序
  • 原文地址:https://www.cnblogs.com/taoyucheng/p/10291778.html
Copyright © 2011-2022 走看看