zoukankan      html  css  js  c++  java
  • wxpy微信模块学习之常用组件

    聊天机器人

      图灵

        class wxpy.Tuling(api_key=None)

          与 wxpy 深度整合的图灵机器人,内置的 api key 存在调用限制,建议自行申请。

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

          参数: 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)

        do_reply(msg,at_member=True)

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

          参数: msg -- Message 对象

              at_member -- 若消息来自群聊,回复时 @发消息的群成员

          返回: 答复文本

          返回类型: str

        reply_text(msg,at_member=True)

          仅返回消息的答复文本

          参数: msg -- Message 对象

              at_member -- 若消息来自群聊,回复时 @发消息的群成员

          返回: 答复文本

          返回类型: str

      小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)

        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)

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

          参数: msg (Message) -- 需同步的消息对象

              groups (Group) -- 需同步的群列表

              prefix (str) -- 转发时的 前缀 文本,原消息为文本时会自动换行,若不设定,则使用默认前缀作为提示

             suffix (str)  -- 转发时的 后缀 文本,原消息为文本时会自动换行,默认为空

             raise_for_unsupported (bool)   -- 为 True 时,将为不支持的消息类型抛出 NotImplementedError 异常

             run_async (bool) -- 转发时的 后缀 文本,原消息为文本时会自动换行,默认为空

    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.detext_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 错误

    处理异常

         每当使用 wxpy 向微信发出请求 (例如发送消息、加好友、建群等操作),wxpy 都会在收到服务端响应后进行检查。

           若响应中的错误码不为 0,程序将抛出ResponseError异常

         class wxpy.ResponseError(err_code,err_msg)

            当 BaseResponse 的返回值不为 0 时抛出的异常

            err_code:错误码(int)

            err_message:错误消息 (文本),但可能为空

             捕捉异常

    try:
        # 尝试向某个群员发送消息
        group.members[3].send('Hello')
    except ResponseError as e:
        # 若群员还不是好友,将抛出 ResponseError 错误
        print(e.err_code, e.err_msg) # 查看错误号和错误消息

         常见异常码:

    1205 通常因为操作频率过高。需要控制频率,避免再次引起该错误。
    1204 通常因为操作对象不为好友关系。例如尝试向一位不为好友的群员发送消息时,会引起这个错误
    1100,1101,1101 通常表示机器人已经掉线,需要重新登录。
  • 相关阅读:
    常见业务指标
    1006 换个格式输出整数 (Python)
    1004 成绩排名 (Python)
    1003 我要通过! (Python)
    1008 数组元素循环右移问题 (Python)
    如何使用SSH秘钥链接Github
    在windows下如何正确安装curses模块
    面向数据结构C基础知识点(个人向)
    用Python实现链式调用
    python重点串讲
  • 原文地址:https://www.cnblogs.com/taoyucheng/p/10292257.html
Copyright © 2011-2022 走看看