wxpy微信模块学习之聊天对象

Posted taoyucheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(@[email protected]_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 --  由 前缀 和 内容 两个部分组成,若 省略前缀,将作为纯文本消息发送

                前缀 部分可为: ‘@[email protected]’, ‘@[email protected]’, ‘@[email protected]’, ‘@[email protected]’ (不含引号)

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

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

           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 位微信好友

男性: 67 (67.0%)
女性: 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;


以上是关于wxpy微信模块学习之聊天对象的主要内容,如果未能解决你的问题,请参考以下文章

微信聊天机器人

使用wxpy怎么制作一个属于自己的微信机器人

socket学习之聊天室

Python使用wxpy模块实现微信两两群组消息同步

解决wxpy获取不到指定群聊对象的情况

记一次wxpy开发经历