Python进阶_wxpy学习:聊天对象
目錄:
- 目錄:
- 前言
- 聊天對象
- 各類型的繼承關系
- 基礎類
- 實際類
- 基本聊天對象
- 公眾號
前言
學習完了python的基本概念和相應操作后,就要進入實戰(zhàn)階段了,首先選的和微信端口自動交互的wxpy。
本文操靠wxpy的官方文檔:官方文檔
機器人對象可以參考前文:機器人對象
聊天對象
通過機器人對象 Bot 的 chats(), friends(),groups(), mps() 方法, 可分別獲取到當前機器人的 所有聊天對象、好友、群聊,以及公眾號列表。
而獲得到的聊天對象合集 Chats 和 Groups 具有一些合集方法,例如:Chats.search() 可用于按條件搜索聊天對象:
各類型的繼承關系
在繼續(xù)了解各個聊天對象之前,我們需要首先 理解各種不同類型聊天對象的繼承關系
基礎類
所有聊天對象,均繼承于以下兩種基礎類,并擁有相應的屬性和方法。
基本聊天對象 Chat?所有的聊天對象均繼承于此類型
?擁有 微信ID、昵稱 等屬性
?擁有 發(fā)送消息 Chat.send(), 獲取頭像 Chat.get_avatar() 等方法
單個聊天對象 User?繼承于 Chat,表示個體聊天對象 (而非群聊)。
?被以下聊天對象所繼承?好友對象 Friend
?群成員對象 Member
?公眾號對象 MP
?擁有 性別、省份、城市、是否為好友 等屬性
?擁有 加為好友 User.add(), 接受為好友 User.accept() 等方法
實際類
在實際使用過程中,我們會更多的用到以下實際聊天對象類型。
?小技巧
請牢記,除了自身私有的屬性和方法外,它們還擁有對應基礎類的屬性和方法 (未重復列出)。
?好友 Friend
?群聊 Group
?群成員 Member
?公眾號 MP
?注解
閱讀以下內(nèi)容,你將了解:
? 如何獲取他們的各種屬性 (ID、昵稱、性別、地區(qū)、是否為好友關系等)
? 如何對他們進行發(fā)送消息、加為好友、加入群聊、下載頭像 等操作
基本聊天對象
所有聊天對象都繼承于”基本聊天對象”,并擁有相應的屬性和方法。
class wxpy.Chat(raw, bot)[源代碼]
單個用戶 (User) 和群聊 (Group) 的基礎類
bot
所屬的 機器人對象
raw
原始數(shù)據(jù)
puid
持續(xù)有效,且穩(wěn)定唯一的聊天對象/用戶ID,適用于持久保存
請使用 Bot.enable_puid() 來啟用 puid 屬性
小技巧
puid 是 wxpy 特有的聊天對象/用戶ID
不同于其他 ID 屬性,puid 可始終被獲取到,且具有穩(wěn)定的唯一性
注意puid 映射數(shù)據(jù) 不可跨機器人使用
nick_name
該聊天對象的昵稱 (好友、群員的昵稱,或群名稱)
name
該聊天對象的友好名稱
具體為: 從 備注名稱、群聊顯示名稱、昵稱(或群名稱),或微信號中
按序選取第一個可用的
send_msg(msg=None)
發(fā)送文本消息
參數(shù):
msg – 文本內(nèi)容
返回類型:
wxpy.SentMessage
send_image(path, media_id=None)
發(fā)送圖片
參數(shù):
?path – 文件路徑
?media_id – 設置后可省略上傳
返回類型:
wxpy.SentMessage
send_file(path, media_id=None)[源代碼]
發(fā)送文件
參數(shù):
?path – 文件路徑
?media_id – 設置后可省略上傳
返回類型:
wxpy.SentMessage
send_video(path=None, media_id=None)[源代碼]
發(fā)送視頻
參數(shù):
?path – 文件路徑
?media_id – 設置后可省略上傳
返回類型:
wxpy.SentMessage
send_raw_msg(raw_type, raw_content, uri=None, msg_ext=None)[源代碼]
以原始格式發(fā)送其他類型的消息。
參數(shù):
?raw_type (int) – 原始的整數(shù)消息類型
?raw_content (str) – 原始的消息內(nèi)容
?uri (str) – 請求路徑,默認為 ‘/webwxsendmsg’
?msg_ext (dict) – 消息的擴展屬性 (會被更新到 Msg 鍵中)
返回類型:
wxpy.SentMessage
例如,發(fā)送好友或公眾號的名片:
my_friend.send_raw_msg(
# 名片的原始消息類型
raw_type=42,
# 注意 username 在這里應為微信 ID,且被發(fā)送的名片必須為自己的好友
raw_content=’’
)
mark_as_read()[源代碼]
消除當前聊天對象的未讀提示小紅點
pin()
將聊天對象置頂
unpin()
取消聊天對象的置頂狀態(tài)
get_avatar(save_path=None)
獲取頭像
參數(shù):
save_path – 保存路徑(后綴通常為.jpg),若為 None 則返回字節(jié)數(shù)據(jù)
uin
微信中的聊天對象ID,固定且唯一
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
alias
若用戶進行過一次性的 “設置微信號” 操作,則該值為用戶設置的”微信號”,固定且唯一
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
wxid
聊天對象的微信ID (實際為 .alias 或 .uin)
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
user_name
該聊天對象的內(nèi)部 ID,通常不需要用到
?注意
同個聊天對象在不同用戶中,此 ID 不一致 ,且可能在新會話中 被改變!
單個聊天對象
class wxpy.User(raw, bot)[源代碼]
好友(Friend)、群聊成員(Member),和公眾號(MP) 的基礎類
remark_name
備注名稱
set_remark_name(remark_name)
設置或修改好友的備注名稱
參數(shù):
remark_name – 新的備注名稱
sex
性別,目前有:
未設置時為 None
province
省份
city
城市
signature
個性簽名
is_friend
判斷當前用戶是否為好友關系
返回:
若為好友關系,返回對應的好友,否則返回 False
add(verify_content=”)
把當前用戶加為好友
參數(shù):
verify_content – 驗證信息(文本)
accept(verify_content=”)
接受當前用戶為好友
參數(shù):
verify_content – 驗證信息(文本)
返回:
新的好友對象
返回類型:
wxpy.Friend
好友
class wxpy.Friend(raw, bot)
好友對象
群聊
class wxpy.Group(raw, bot)
群聊對象
members
群聊的成員列表
search(keywords=None, **attributes)
在群聊中搜索成員
?注解
搜索結果為一個 Chats (列表) 對象
建議搭配 ensure_one() 使用
參數(shù):
?keywords – 成員名稱關鍵詞
?attributes – 屬性鍵值對
返回:
匹配的群聊成員
返回類型:
wxpy.Chats
owner
返回群主對象
is_owner
判斷所屬 bot 是否為群管理員
self
機器人自身 (作為群成員)
update_group(members_details=False)[源代碼]
更新群聊的信息
參數(shù):
members_details – 是否包括群聊成員的詳細信息 (地區(qū)、性別、簽名等)
add_members(users, use_invitation=False)[源代碼]
向群聊中加入用戶
參數(shù):
?users – 待加入的用戶列表或單個用戶
?use_invitation – 使用發(fā)送邀請的方式
remove_members(members)
從群聊中移除用戶
參數(shù):
members – 待移除的用戶列表或單個用戶
rename_group(name)
修改群聊名稱
參數(shù):
name – 新的名稱,超長部分會被截斷 (最長32字節(jié))
群成員
class wxpy.Member(raw, group)
群聊成員對象
display_name
在群聊中的顯示昵稱
remove()
從群聊中移除該成員
name
該群成員的友好名稱
具體為: 從 群聊顯示名稱、昵稱(或群名稱),或微信號中,按序選取第一個可用的
實用技巧
判斷一位用戶是否在群中只需用 in 語句:
friend = bot.friends().search(‘bb’)[0]
group = bot.groups().search(‘wxpy 交流群’)[0]
if friend in group:
print(‘是的,{} 在 {} 中!’.format(friend.name, group.name))
# 是的,bb 在 wxpy 交流群 中!
若要遍歷群成員,可直接對群對象使用 for 語句:
公眾號
class wxpy.MP(raw, bot)[源代碼]
公眾號對象
聊天對象合集
好友、公眾號、群聊成員的合集
在 Chats 對象中,除了最常用到的 search() 外,還有兩個特別的方法,stats() 與 stats_text(),可用來統(tǒng)計好友或群成員的性別和地區(qū)分布:
注解
搜索結果為一個 Chats (列表) 對象
建議搭配 ensure_one() 使用
參數(shù):
?keywords – 聊天對象的名稱關鍵詞
?attributes – 屬性鍵值對,鍵可以是 sex(性別), province(省份), city(城市) 等。例如可指定 province=’廣東’
返回:
匹配的聊天對象合集
返回類型:
wxpy.Chats
stats(attribs=(‘sex’, ‘province’, ‘city’))[源代碼]
統(tǒng)計各屬性的分布情況
參數(shù):
attribs – 需統(tǒng)計的屬性列表或元組
返回:
統(tǒng)計結果
stats_text(total=True, sex=True, top_provinces=10, top_cities=10)
簡單的統(tǒng)計結果的文本
參數(shù):
?total – 總體數(shù)量
?sex – 性別分布
?top_provinces – 省份分布
?top_cities – 城市分布
返回:
統(tǒng)計結果文本
add_all(interval=3, verify_content=”)[源代碼]
將合集中的所有用戶加為好友,請小心應對調(diào)用頻率限制!
參數(shù):
?interval – 間隔時間(秒)
?verify_content – 驗證說明文本
群聊的合集
class wxpy.Groups(group_list=None)[源代碼]
群聊的合集,可用于按條件搜索
search(keywords=None, users=None, **attributes)[源代碼]
在群聊合集中,根據(jù)給定的條件進行搜索
參數(shù):
?keywords – 群聊名稱關鍵詞
?users – 需包含的用戶
?attributes – 屬性鍵值對,鍵可以是 owner(群主對象), is_owner(自身是否為群主), nick_name(精準名稱) 等。
返回:
匹配條件的群聊列表
返回類型:
wxpy.Groups
總結
以上是生活随笔為你收集整理的Python进阶_wxpy学习:聊天对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: job每分钟执行 oracle_orac
- 下一篇: 图片格式转换大小调整工具_如何轻松快速地