实用组件¶
额外内置了一些实用的小组件,可按需使用。
聊天机器人¶
目前提供了以下两种自动聊天机器人接口。
图灵¶
-
class
wxpy.
Tuling
(api_key=None)[源代码]¶ 与 wxpy 深度整合的图灵机器人
内置的 api key 存在调用限制,建议自行申请。参数: api_key – 你申请的 api key bot = Bot() my_friend = ensure_one(bot.search('游否')) tuling = Tuling(api_key='你申请的 API KEY') # 使用图灵机器人自动与指定好友聊天 @bot.register(my_friend) def reply_my_friend(msg): tuling.do_reply(msg)
小 i¶
-
class
wxpy.
XiaoI
(key, secret)[源代码]¶ 与 wxpy 深度整合的小 i 机器人
需要通过注册获得 key 和 secret免费申请: http://cloud.xiaoi.com/参数: - key – 你申请的 key
- secret – 你申请的 secret
bot = Bot() my_friend = ensure_one(bot.search('寒风')) xiaoi = XiaoI('你申请的 Key', '你申请的 Secret') # 使用小 i 机器人自动与指定好友聊天 @bot.register(my_friend) def reply_my_friend(msg): xiaoi.do_reply(msg)
查找共同好友¶
-
wxpy.
mutual_friends
(*args)[源代码]¶ 找到多个微信用户的共同好友
参数: args – 每个参数为一个微信用户的机器人(Bot),或是聊天对象合集(Chats) 返回: 共同好友列表 返回类型: wxpy.Chats
bot1 = Bot() bot2 = Bot() # 打印共同好友 for mf in mutual_friends(bot, bot2): print(mf)
确保查找结果的唯一性¶
在多个群中同步消息¶
-
wxpy.
sync_message_in_groups
(msg, groups, prefix=None, suffix=None, raise_for_unsupported=False, run_async=True)[源代码]¶ 将消息同步到多个微信群中
- 支持以下消息类型
文本 (TEXT)
视频(VIDEO)
文件 (ATTACHMENT)
图片/自定义表情 (PICTURE)
- 但不支持表情商店中的表情
名片 (CARD)
- 仅支持公众号名片,以及自己发出的个人号名片
分享 (SHARING)
- 会被转化为 标题 + 链接 形式的纯文本
语音 (RECORDING)
- 会以文件方式发送
地图 (MAP)
- 会转化为 位置名称 + 地图链接 形式的文本消息
参数: - msg (Message) – 需同步的消息对象
- groups (Group) – 需同步的群列表
- prefix (str) –
- 转发时的 前缀 文本,原消息为文本时会自动换行
- 若不设定,则使用默认前缀作为提示
- suffix (str) –
- 转发时的 后缀 文本,原消息为文本时会自动换行
- 默认为空
- raise_for_unsupported (bool) – 为 True 时,将为不支持的消息类型抛出 NotImplementedError 异常
- run_async (bool) – 是否异步执行,为 True 时不堵塞线程
my_groups = [group1, group2, group3 ...] @bot.register(my_groups, except_self=False) def sync_my_groups(msg): sync_message_in_groups(msg, my_groups)
检测频率限制¶
-
wxpy.
detect_freq_limit
(func, *args, **kwargs)[源代码]¶ 检测各类 Web 微信操作的频率限制,获得限制次数和周期
参数: - func – 需要执行的操作函数
- args – 操作函数的位置参数
- kwargs – 操作函数的命名参数
返回: 限制次数, 限制周期(秒数)
例如,测试发送文本消息的频率限制:
bot = Bot('test.pkl') # 定义需要检测的操作 def action(): bot.file_helper.send() # 执行检测 result = detect_freq_limit(action) # 查看结果 print(result) # (120, 120.111222333)