Python进阶_wxpy学习:机器人对象
生活随笔
收集整理的這篇文章主要介紹了
Python进阶_wxpy学习:机器人对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄:
- 目錄:
- 前言
- 機器人對象
- 初始化/登陸
- 搜索聊天對象
- 搜索好友:
- 搜索群聊:
- 在群聊中搜素:
- 搜索任何類型的聊天對象 (但不包含群內成員)
- 加好友和建群
- 自動接受好友請求:
- 其他
- 控制多個微信 (多開)
前言
學習完了python的基本概念和相應操作后,就要進入實戰階段了,首先選的和微信端口自動交互的wxpy。
本文操靠wxpy的官方文檔:官方文檔
機器人對象
機器人 Bot 對象可被理解為一個 Web 微信客戶端。
解關于發送消息,請參見 聊天對象。
關于消息對象和自動處理,請參見 消息處理。
初始化/登陸
注解Bot 在初始化時便會執行登陸操作,需要手機掃描登陸。
主類
class wxpy.Bot(cache_path=None, console_qr=False, qr_path=None, qr_callback=None, login_callback=None, logout_callback=None)機器人對象,用于登陸和操作微信賬號,涵蓋大部分 Web 微信的功能:from wxpy import *bot = Bot()# 機器人賬號自身myself = bot.self# 向文件傳輸助手發送消息bot.file_helper.send('Hello from wxpy!')參數: cache_path –設置當前會話的緩存路徑,并開啟緩存功能;為 None (默認) 則不開啟緩存功能。開啟緩存后可在短時間內避免重復掃碼,緩存失效時會重新要求登陸。設為 True 時,使用默認的緩存路徑 ‘wxpy.pkl’。console_qr –在終端中顯示登陸二維碼,需要安裝 pillow 模塊 (pip3 install pillow)。可為整數(int),表示二維碼單元格的寬度,通常為 2 (當被設為 True 時,也將在內部當作 2)。也可為負數,表示以反色顯示二維碼,適用于淺底深字的命令行界面。例如: 在大部分 Linux 系統中可設為 True 或 2,而在 macOS Terminal 的默認白底配色中,應設為 -2。qr_path – 保存二維碼的路徑qr_callback – 獲得二維碼后的回調,可以用來定義二維碼的處理方式,接收參數: uuid, status, qrcodelogin_callback – 登陸成功后的回調,若不指定,將進行清屏操作,并刪除二維碼文件logout_callback – 登出時的回調 Bot.enable_puid(path='wxpy_puid.pkl')可選操作: 啟用聊天對象的 puid 屬性:# 啟用 puid 屬性,并指定 puid 所需的映射數據保存/載入路徑bot.enable_puid('wxpy_puid.pkl')# 指定一個好友my_friend = bot.friends().search('qkl')[0]# 查看他的 puidprint(my_friend.puid)# 'edfe8468'小技巧puid 是 wxpy 特有的聊天對象/用戶ID不同于其他 ID 屬性,puid 可始終被獲取到,且具有穩定的唯一性參數: path – puid 所需的映射數據保存/載入路徑“`
Bot.auto_mark_as_read
Bot.self
機器人自身 (作為一個聊天對象)若需要給自己發送消息,請先進行以下一次性操作:# 在 Web 微信中把自己加為好友 bot.self.add() bot.self.accept()# 發送消息給自己 bot.self.send('能收到嗎?') ``` Bot.file_helper文件傳輸助手“`
Bot.friends(update=False)[源代碼]
搜索聊天對象
注解
通過 .search() 獲得的搜索結果 均為列表 若希望找到唯一結果,可使用 ensure_one()搜索好友:
# 搜索名稱包含 'keil' 的深圳男性好友 found = bot.friends().search('keil', sex=MALE, city='深圳') # [<Friend: keil>] # 確保搜索結果是唯一的,并取出唯一結果 keil = ensure_one(found) # <Friend: keil>搜索群聊:
# 搜索名稱包含 'wxpy',且成員中包含 `keil` 的群聊對象 wxpy_groups = bot.groups().search('wxpy', [keil]) # [<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_nameverify_content – 驗證說明信息Bot.add_mp(user)添加/關注 公眾號參數: user – 公眾號對象,或 user_nameBot.accept_friend(user, verify_content='')接受用戶為好友參數: user – 用戶對象或 user_nameverify_content – 驗證說明信息返回: 新的好友對象返回類型: wxpy.Friend自動接受好友請求:
# 注冊好友請求類消息 @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.create_group(users, topic=None)創建一個新的群聊參數: users – 用戶列表 (不含自己,至少 2 位)topic – 群名稱返回: 若建群成功,返回一個新的群聊對象返回類型: wxpy.Group其他
Bot.user_details(user_or_users, chunk_size=50)獲取單個或批量獲取多個用戶的詳細信息(地區、性別、簽名等),但不可用于群聊成員參數: user_or_users – 單個或多個用戶對象或 user_namechunk_size – 分配請求時的單批數量,目前為 50返回: 單個或多個用戶用戶的詳細信息Bot.upload_file(path)上傳文件,并獲取 media_id可用于重復發送圖片、表情、視頻,和文件參數: path – 文件路徑返回: media_id返回類型: strBot.join()堵塞進程,直到結束消息監聽 (例如,機器人被登出時)Bot.logout()登出當前賬號控制多個微信 (多開)
僅需初始化多個 Bot 對象,即可同時控制多個微信:
bot1 = Bot()
bot2 = Bot()
總結
以上是生活随笔為你收集整理的Python进阶_wxpy学习:机器人对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动词ing基本用法_如果实在分不清英语动
- 下一篇: JAVA做一个五星评论打分字体,java