初始化/登錄
class wxpy.
Bot
(cache_path=None, console_qr=False, qr_path=None, qr_callback=None, login_callback=None, logout_callback=None)
參數:
cache_path:設置當前會話緩存路徑,並開啟緩存功能;為None(默認)則不開啟緩存功能;
開啟緩存后可在短時間內避免重復掃碼,緩存失效時會重新要求登陸;
設為True時,使用默認的緩存路徑 ‘wxpy.pkl’;
console_qr:在終端中顯示登陸二維碼,需要安裝 pillow 模塊 (pip3 install pillow);
可為整數(int),表示二維碼單元格的寬度,通常為 2 (當被設為 True 時,也將在內部當作 2)
也可為負數,表示以反色顯示二維碼,適用於淺底深字的命令行界面;
qr_path:保存二維碼的路徑
qr_path: 獲得二維碼后的回調,可以用來定義二維碼的處理方式,接收參數: uuid, status, qrcode
login_callback – 登陸成功后的回調,若不指定,將進行清屏操作,並刪除二維碼文件
logout_callback – 登出時的回調
Bot.
enable_puid
(path='wxpy_puid.pkl')
# 啟用 puid 屬性,並指定 puid 所需的映射數據保存/載入路徑 bot.enable_puid('wxpy_puid.pkl') # 指定一個好友 my_friend = bot.friends().search('游否')[0] # 查看他的 puid print(my_friend.puid) # 'edfe8468'
啟用聊天對象的 puid 屬性:wxpy 特有的聊天對象/用戶ID,不同於其他 ID 屬性,puid 可始終被獲取到,且具有穩定的唯一性;
Bot.
auto_mark_as_read:
:為 True 時,將自動消除手機端的新消息小紅點提醒 (默認為 False);
獲取聊天對象
Bot.self
機器人自身 (作為一個聊天對象);
1
2
3
4
5
6
|
# 在 Web 微信中把自己加為好友
bot.
self
.add()
bot.
self
.accept()
# 發送消息給自己
bot.
self
.send(
'能收到嗎?'
)
|
Bot.file_helper
文件傳輸助手
Bot.friends(update=False)
參數:update – 是否更新
返回:聊天對象合合集
返回類型:wxpy.chats
Bot.groups(update=False,contact_only=False)
參數:update – 是否更新;contact_only=是否限於保存為聯系人的群聊;
返回:聊天群聊合集
返回類型:wxpy.chats
Bot.maps(update=False)
參數:update – 是否更新;
返回:聊天對象合集
返回類型:wxpy.chats
Bot.chats(update=False)
參數:update – 是否更新;
返回:聊天對象合集
返回類型:wxpy.chats
搜索聊天對象
通過。search()獲得的結果均為列表;若希望獲得唯一結果,可使用ensure_one()
搜索好友:
# 搜索名稱包含 '游否' 的深圳男性好友 found = bot.friends().search('游否', sex=MALE, city='深圳') # [<Friend: 游否>] # 確保搜索結果是唯一的,並取出唯一結果 youfou = ensure_one(found) # <Friend: 游否>
搜索群聊:
# 搜索名稱包含 'wxpy',且成員中包含 `游否` 的群聊對象 wxpy_groups = bot.groups().search('wxpy', [youfou]) # [<Group: wxpy 交流群 1>, <Group: wxpy 交流群 2>]
在群聊中搜索:
# 在剛剛找到的第一個群中搜索 group = wxpy_groups[0] # 搜索該群中所有浙江的群友 found = group.search(province='浙江') # [<Member: 浙江群友 1>, <Group: 浙江群友 2>, <Group: 浙江群友 3> ...]
搜索任何類型的聊天對象 (但不包含群內成員):
# 搜索名稱含有 'wxpy' 的任何聊天對象 found = bot.search('wxpy') # [<Friend: wxpy 機器人>, <Group: wxpy 交流群 1>, <Group: wxpy 交流群 2>]
加好友和建群
Bot.add_friend(user, verify_content='')
添加好友
參數:user – 用戶對象,或 user_name;
verify_content – 驗證說明信息
Bot.add_mp(user)
添加公眾號
參數:user – 公眾號對象,或 user_name;
Bot.accept_friend(user)
接收好友請求
參數:user – 用戶對象,或 user_name;
verify_content – 驗證說明信息
返回:新的好友對象
返回類型:wxpy.chats
自動接收好友請求:
# 注冊好友請求類消息 @bot.register(msg_types=FRIENDS) # 自動接受驗證信息中包含 'wxpy' 的好友請求 def auto_accept_friends(msg): # 判斷好友請求中的驗證文本 if 'wxpy' in msg.text.lower(): # 接受好友 (msg.card 為該請求的用戶對象) new_friend = bot.accept_friend(msg.card) # 或 new_friend = msg.card.accept() # 向新的好友發送消息 new_friend.send('哈哈,我自動接受了你的好友請求')
Bot.creaete_group(users,topic=None)
創建一個新的群聊
參數:users – 用戶列表,不含自己,至少兩位;
topic --群名稱
返回:群建立成功,返回一個新的群聊對象
返回類型:wxpy.Group
其他
Bot.user_details(user_or_users,chunk_size=50)
獲取單個或批量獲取多個用戶的詳細信息(地區、性別、簽名等),但不可用於群聊成員
參數:user_or_users – 單個或多個用戶對象或 user_name;
chunk_size – 分配請求時的單批數量,目前為 50
返回:單個或多個用戶用戶的詳細信息
Bot.upload_file(path)
上傳文件,並獲取 media_id,可用於重復發送圖片、表情、視頻,和文件
參數:path – 文件路徑;
返回:media_id
返回類型:str
Bot.join()
堵塞進程,直到結束消息監聽 (例如,機器人被登出時)
Bot.logout()
登出當前賬號
微信多開
初始化多個Bot對象,即可:
bot1 = Bot() bot2 = Bot()