機器人 Bot 對象可被理解為一個 Web 微信客戶端,。
注解
關(guān)于發(fā)送消息,請參見 聊天對象,。
關(guān)于消息對象和自動處理,,請參見 消息處理,。
初始化/登陸?
注解
Bot 在初始化時便會執(zhí)行登陸操作,,需要手機掃描登陸。
-
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
# 向文件傳輸助手發(fā)送消息
bot.file_helper.send('Hello from wxpy!')
參數(shù): |
- cache_path –
- 設(shè)置當前會話的緩存路徑,并開啟緩存功能,;為 None (默認) 則不開啟緩存功能,。
- 開啟緩存后可在短時間內(nèi)避免重復掃碼,緩存失效時會重新要求登陸,。
- 設(shè)為 True 時,,使用默認的緩存路徑 ‘wxpy.pkl’。
- console_qr –
- 在終端中顯示登陸二維碼,,需要安裝 pillow 模塊 (pip3 install pillow),。
- 可為整數(shù)(int),表示二維碼單元格的寬度,,通常為 2 (當被設(shè)為 True 時,,也將在內(nèi)部當作 2)。
- 也可為負數(shù),,表示以反色顯示二維碼,,適用于淺底深字的命令行界面。
- 例如: 在大部分 Linux 系統(tǒng)中可設(shè)為 True 或 2,,而在 macOS Terminal 的默認白底配色中,,應(yīng)設(shè)為 -2。
- qr_path – 保存二維碼的路徑
- qr_callback – 獲得二維碼后的回調(diào),,可以用來定義二維碼的處理方式,,接收參數(shù): uuid, status, qrcode
- login_callback – 登陸成功后的回調(diào),若不指定,將進行清屏操作,,并刪除二維碼文件
- logout_callback – 登出時的回調(diào)
|
-
Bot. enable_puid (path='wxpy_puid.pkl')[源代碼]?
可選操作: 啟用聊天對象的 puid 屬性:
# 啟用 puid 屬性,,并指定 puid 所需的映射數(shù)據(jù)保存/載入路徑
bot.enable_puid('wxpy_puid.pkl')
# 指定一個好友
my_friend = bot.friends().search('游否')[0]
# 查看他的 puid
print(my_friend.puid)
# 'edfe8468'
小技巧
不同于其他 ID 屬性,puid 可始終被獲取到,,且具有穩(wěn)定的唯一性
參數(shù): | path – puid 所需的映射數(shù)據(jù)保存/載入路徑 |
-
Bot. auto_mark_as_read ?
為 True 時,,將自動消除手機端的新消息小紅點提醒 (默認為 False)
獲取聊天對象?
-
Bot. self ?
機器人自身 (作為一個聊天對象)
若需要給自己發(fā)送消息,請先進行以下一次性操作:
# 在 Web 微信中把自己加為好友
bot.self.add()
bot.self.accept()
# 發(fā)送消息給自己
bot.self.send('能收到嗎,?')
-
Bot. file_helper ?
文件傳輸助手
-
Bot. friends (update=False)[源代碼]?
獲取所有好友
-
Bot. groups (update=False, contact_only=False)[源代碼]?
獲取所有群聊對象
一些不活躍的群可能無法被獲取到,,可通過在群內(nèi)發(fā)言,或修改群名稱的方式來激活
參數(shù): |
- update – 是否更新
- contact_only – 是否限于保存為聯(lián)系人的群聊
|
返回: | 群聊合集
|
返回類型: | wxpy.Groups
|
-
Bot. mps (update=False)[源代碼]?
獲取所有公眾號
-
Bot. chats (update=False)[源代碼]?
獲取所有聊天對象
搜索聊天對象?
注解
- 通過 .search() 獲得的搜索結(jié)果 均為列表
- 若希望找到唯一結(jié)果,,可使用
ensure_one()
搜索好友:
# 搜索名稱包含 '游否' 的深圳男性好友
found = bot.friends().search('游否', sex=MALE, city='深圳')
# [<Friend: 游否>]
# 確保搜索結(jié)果是唯一的,,并取出唯一結(jié)果
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> ...]
搜索任何類型的聊天對象 (但不包含群內(nèi)成員)
# 搜索名稱含有 'wxpy' 的任何聊天對象
found = bot.search('wxpy')
# [<Friend: wxpy 機器人>, <Group: wxpy 交流群 1>, <Group: wxpy 交流群 2>]
加好友和建群?
-
Bot. add_friend (user, verify_content='')[源代碼]?
添加用戶為好友
參數(shù): |
- user – 用戶對象,,或 user_name
- verify_content – 驗證說明信息
|
-
Bot. add_mp (user)[源代碼]?
添加/關(guān)注 公眾號
參數(shù): | user – 公眾號對象,,或 user_name |
-
Bot. accept_friend (user, verify_content='')[源代碼]?
接受用戶為好友
參數(shù): |
- user – 用戶對象或 user_name
- verify_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()
# 向新的好友發(fā)送消息
new_friend.send('哈哈,我自動接受了你的好友請求')
-
Bot. create_group (users, topic=None)[源代碼]?
創(chuàng)建一個新的群聊
參數(shù): |
- users – 用戶列表 (不含自己,,至少 2 位)
- topic – 群名稱
|
返回: | 若建群成功,,返回一個新的群聊對象
|
返回類型: | wxpy.Group
|
-
Bot. user_details (user_or_users, chunk_size=50)[源代碼]?
獲取單個或批量獲取多個用戶的詳細信息(地區(qū)、性別,、簽名等),,但不可用于群聊成員
參數(shù): |
- user_or_users – 單個或多個用戶對象或 user_name
- chunk_size – 分配請求時的單批數(shù)量,目前為 50
|
返回: | 單個或多個用戶用戶的詳細信息
|
-
Bot. upload_file (path)[源代碼]?
上傳文件,,并獲取 media_id
可用于重復發(fā)送圖片,、表情、視頻,,和文件
參數(shù): | path – 文件路徑 |
返回: | media_id |
返回類型: | str |
-
Bot. join ()[源代碼]?
堵塞進程,,直到結(jié)束消息監(jiān)聽 (例如,機器人被登出時)
-
Bot. logout ()[源代碼]?
登出當前賬號
控制多個微信 (多開)?
僅需初始化多個 Bot 對象,,即可同時控制多個微信:
bot1 = Bot()
bot2 = Bot()
|