日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python进阶_wxpy学习:聊天对象

發布時間:2025/3/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python进阶_wxpy学习:聊天对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄:

  • 目錄:
  • 前言
  • 聊天對象
  • 各類型的繼承關系
    • 基礎類
    • 實際類
  • 基本聊天對象
  • 公眾號

前言

學習完了python的基本概念和相應操作后,就要進入實戰階段了,首先選的和微信端口自動交互的wxpy。
本文操靠wxpy的官方文檔:官方文檔
機器人對象可以參考前文:機器人對象

聊天對象

通過機器人對象 Bot 的 chats(), friends(),groups(), mps() 方法, 可分別獲取到當前機器人的 所有聊天對象、好友、群聊,以及公眾號列表。
而獲得到的聊天對象合集 Chats 和 Groups 具有一些合集方法,例如:Chats.search() 可用于按條件搜索聊天對象:

from wxpy import * bot = Bot() my_friend = bot.friends().search('bb', sex=MALE, city='深圳')[0] # <Friend: bb> 在找到好友(或其他聊天對象)后,還可使用該聊天對象的 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() 等方法

實際類

在實際使用過程中,我們會更多的用到以下實際聊天對象類型。
?小技巧

請牢記,除了自身私有的屬性和方法外,它們還擁有對應基礎類的屬性和方法 (未重復列出)。
?好友 Friend
?群聊 Group
?群成員 Member
?公眾號 MP

?注解

閱讀以下內容,你將了解:
? 如何獲取他們的各種屬性 (ID、昵稱、性別、地區、是否為好友關系等)
? 如何對他們進行發送消息、加為好友、加入群聊、下載頭像 等操作

基本聊天對象

所有聊天對象都繼承于”基本聊天對象”,并擁有相應的屬性和方法。
class wxpy.Chat(raw, bot)[源代碼]
單個用戶 (User) 和群聊 (Group) 的基礎類
bot
所屬的 機器人對象
raw
原始數據
puid
持續有效,且穩定唯一的聊天對象/用戶ID,適用于持久保存
請使用 Bot.enable_puid() 來啟用 puid 屬性

小技巧

puid 是 wxpy 特有的聊天對象/用戶ID
不同于其他 ID 屬性,puid 可始終被獲取到,且具有穩定的唯一性
注意puid 映射數據 不可跨機器人使用
nick_name
該聊天對象的昵稱 (好友、群員的昵稱,或群名稱)
name
該聊天對象的友好名稱
具體為: 從 備注名稱、群聊顯示名稱、昵稱(或群名稱),或微信號中
按序選取第一個可用的

send(content=None, media_id=None)[源代碼] 動態發送不同類型的消息,具體類型取決于 msg 的前綴。參數: ?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

send_file(path, media_id=None)[源代碼]
發送文件
參數:
?path – 文件路徑
?media_id – 設置后可省略上傳
返回類型:
wxpy.SentMessage

send_video(path=None, media_id=None)[源代碼]
發送視頻
參數:
?path – 文件路徑
?media_id – 設置后可省略上傳
返回類型:
wxpy.SentMessage
send_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=’’
)
mark_as_read()[源代碼]
消除當前聊天對象的未讀提示小紅點
pin()
將聊天對象置頂
unpin()
取消聊天對象的置頂狀態
get_avatar(save_path=None)
獲取頭像
參數:
save_path – 保存路徑(后綴通常為.jpg),若為 None 則返回字節數據
uin
微信中的聊天對象ID,固定且唯一
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
alias
若用戶進行過一次性的 “設置微信號” 操作,則該值為用戶設置的”微信號”,固定且唯一
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
wxid
聊天對象的微信ID (實際為 .alias 或 .uin)
因微信的隱私策略,該屬性有時無法被獲取到
建議使用 puid 作為用戶的唯一 ID
user_name
該聊天對象的內部 ID,通常不需要用到
?注意
同個聊天對象在不同用戶中,此 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)
在群聊中搜索成員
?注解
搜索結果為一個 Chats (列表) 對象
建議搭配 ensure_one() 使用
參數:
?keywords – 成員名稱關鍵詞
?attributes – 屬性鍵值對
返回:
匹配的群聊成員
返回類型:
wxpy.Chats
owner
返回群主對象
is_owner
判斷所屬 bot 是否為群管理員
self
機器人自身 (作為群成員)
update_group(members_details=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, 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 語句:

# 打印所有群成員 for member in group:print(member)若需查看群成員數量,直接使用 len() 即可:len(group) # 這個群的成員數量若需判斷一位群成員是否就是某個好友,使用 == 即可:member = group.search('游否')[0] if member == friend:print('{} is {}'.format(member, friend))# <Member: 游否> is <Friend: 游否>

公眾號

class wxpy.MP(raw, bot)[源代碼]
公眾號對象
聊天對象合集
好友、公眾號、群聊成員的合集
在 Chats 對象中,除了最常用到的 search() 外,還有兩個特別的方法,stats() 與 stats_text(),可用來統計好友或群成員的性別和地區分布:

bot.friends().stats_text() # bb 共有 100 位微信好友\n\n男性: 67 (67.0%)\n女性: 23 (23.0%) ... class wxpy.Chats(chat_list=None, source=None)[源代碼] 多個聊天對象的合集,可用于搜索或統計 search(keywords=None, **attributes)[源代碼] 在聊天對象合集中進行搜索

注解
搜索結果為一個 Chats (列表) 對象
建議搭配 ensure_one() 使用
參數:
?keywords – 聊天對象的名稱關鍵詞
?attributes – 屬性鍵值對,鍵可以是 sex(性別), province(省份), city(城市) 等。例如可指定 province=’廣東’
返回:
匹配的聊天對象合集
返回類型:
wxpy.Chats
stats(attribs=(‘sex’, ‘province’, ‘city’))[源代碼]
統計各屬性的分布情況
參數:
attribs – 需統計的屬性列表或元組
返回:
統計結果
stats_text(total=True, sex=True, top_provinces=10, top_cities=10)
簡單的統計結果的文本
參數:
?total – 總體數量
?sex – 性別分布
?top_provinces – 省份分布
?top_cities – 城市分布
返回:
統計結果文本
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

總結

以上是生活随笔為你收集整理的Python进阶_wxpy学习:聊天对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。