聊天對象
通過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;
