微信机器人实用组件

2019-10-27  本文已影响0人  雍珑庚

实用组件

额外内置了一些实用的小组件,可按需使用。

聊天机器人

目前提供了以下两种自动聊天机器人接口。

图灵

classwxpy.``Tuling(api_key=None)[源代码]

与 wxpy 深度整合的图灵机器人

内置的 api key 存在调用限制,建议自行申请。

免费申请: http://www.tuling123.com/

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)

do_reply(msg, at_member=True)[源代码]

回复消息,并返回答复文本

参数: msg – Message 对象at_member – 若消息来自群聊,回复时 @发消息的群成员
返回: 答复文本
返回类型: str

reply_text(msg, at_member=True)[源代码]

仅返回消息的答复文本

参数: msg – Message 对象at_member – 若消息来自群聊,回复时 @发消息的群成员
返回: 答复文本
返回类型: str

小 i

classwxpy.``XiaoI(key, secret)[源代码]

与 wxpy 深度整合的小 i 机器人

需要通过注册获得 key 和 secret

免费申请: http://cloud.xiaoi.com/

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)

do_reply(msg)[源代码]

回复消息,并返回答复文本

参数: msg – Message 对象
返回: 答复文本

reply_text(msg)[源代码]

仅返回答复文本

参数: msg – Message 对象,或消息文本
返回: 答复文本

查找共同好友

wxpy.``mutual_friends(****args)*[源代码]

找到多个微信用户的共同好友

参数: args – 每个参数为一个微信用户的机器人(Bot),或是聊天对象合集(Chats)
返回: 共同好友列表
返回类型: wxpy.Chats
bot1 = Bot()
bot2 = Bot()

# 打印共同好友
for mf in mutual_friends(bot, bot2):
    print(mf)

确保查找结果的唯一性

wxpy.``ensure_one(found)[源代码]

确保列表中仅有一个项,并返回这个项,否则抛出 ValueError 异常

通常可用在查找聊天对象时,确保查找结果的唯一性,并直接获取唯一项

参数: found – 列表
返回: 唯一项
bot = Bot()
# 确保只找到了一个叫"游否"的好友,并返回这个好友
my_friend = ensure_one(bot.search('游否'))
# <Friend: 游否>

在多个群中同步消息

wxpy.``sync_message_in_groups(msg, groups, prefix=None, suffix=None, raise_for_unsupported=False, run_async=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)

忽略 ResponseError 异常

wxpy.``dont_raise_response_error(func)[源代码]

装饰器:用于避免被装饰的函数在运行过程中抛出 ResponseError 错误

上一篇下一篇

猜你喜欢

热点阅读