美文网首页
微信机器人实用组件

微信机器人实用组件

作者: 雍珑庚 | 来源:发表于2019-10-27 09:37 被阅读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)[源代码]

    将消息同步到多个微信群中

    支持以下消息类型

    • 文本 (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)
    

    忽略 ResponseError 异常

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

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

    相关文章

      网友评论

          本文标题:微信机器人实用组件

          本文链接:https://www.haomeiwen.com/subject/fdspvctx.html