机器人对象¶
机器人 Bot
对象可被理解为一个 Web 微信客户端。
初始化/登陆¶
注解
Bot
在初始化时便会执行登陆操作,需要手机扫描登陆。
-
class
wxpy.
Bot
(cache_path=None, console_qr=None, qr_path=None, proxies=None, hooks=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 -- 保存二维码的路径
- proxies -- requests 代理,形式为
- hooks -- 用于快速重载
Core
中的各种方法,形式为 {'原方法名': 新函数, ...}
- cache_path --
-
Bot.
enable_puid
(path='wxpy_puid.pkl')[源代码]¶ 可选操作: 启用聊天对象的
puid
属性:# 启用 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 可始终被获取到,且具有稳定的唯一性参数: path -- puid 所需的映射数据保存/载入路径
-
Bot.
auto_mark_as_read
¶ 为 True 时,将自动消除手机端的新消息小红点提醒 (默认为 False)
获取聊天对象¶
-
Bot.
self
¶ 机器人自身 (作为一个聊天对象)
若需要给自己发送消息,请先进行以下一次性操作:
# 在 Web 微信中把自己加为好友 bot.self.add() bot.self.accept() # 发送消息给自己 bot.self.send('能收到吗?')
-
Bot.
file_helper
¶ 文件传输助手
-
Bot.
friends
()¶ 好友列表
返回类型: wxpy.Chats
-
Bot.
groups
()¶ 群聊列表
一些不活跃的群可能无法被获取到建议重要的群加入到通讯录中,以确保始终可见返回类型: wxpy.Chats
-
Bot.
mps
()¶ 公众号列表
返回类型: wxpy.Chats
-
Bot.
chats
()¶ 所有聊天对象
返回类型: 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 -- 用户对象,或 username
- verify_content -- 验证说明信息
-
Bot.
accept_friend
(user)[源代码]¶ 接受用户为好友
参数: user -- 用户对象 (msg.card) 或 username 返回: 新的好友对象 返回类型: 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('哈哈,我自动接受了你的好友请求')