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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM