真·Python3奥义之微信小机器人召唤术

作者: _嘿嘿君_ | 来源:发表于2018-08-29 09:10 被阅读51次

    最近业余,入了python的坑。

    结果越陷越深···

    python真的很好吃啊!嘿嘿o


    本篇将会为大家详细介绍一个不超过60行代码的微信小机器人,另外特别说明下,因为考虑到官方的支持因素,所以我在学习python之前,直接选择的是3.X版本,以后 @嘿嘿PIUPIUPIU 里所有关于python的项目都是基于 python3 的。

    补充说明:编译工具嘿嘿用的是:顶级神兽-PyCharm

    -第一步-

    只需要引入两个库,itchatrequests

    import itchat
    import requests
    

    -第二步-

    这里选择的是广泛在用的图灵机器人,直接登录图灵机器人官网申请一个机器人,找到机器人的Key值复制到代码里。

    # 图灵机器人KEY
    KEY = '复制机器人Key值到这里噢'
    
    #发送消息,并获取图灵机器人响应信息
    def get_response(msg):
        apiUrl = 'http://www.tuling123.com/openapi/api'
        data = {
            'key': KEY,
            'info': msg,
            'userid': 'wechat-robot'
        }
        try:
            r = requests.post(apiUrl, data=data).json()
            return r.get('text')
        except:
            return
    

    -第三步-

    微信端接收消息的设置,itchat.content指定消息类型,isGroupChat和isFriendChat分别为指定群组和好友消息来源的开关。

    #微信接收消息&回应
    @itchat.msg_register([itchat.content.TEXT, itchat.content.PICTURE], isGroupChat=True, isFriendChat=True)
    def tuling_reply(msg):
        if manger_jur(msg):
            if (msg['MsgType'] == 1): #文本消息类型
                defaultReply = 'I received: ' + msg['Text']
                reply = get_response(msg['Text'])
                return reply or defaultReply
            elif (msg['MsgType'] == 47): #表情包消息类型
                NickName = msg['User']['NickName']
                reply = u"%s,过分了啊!欺负我变形金刚?" % NickName
                return reply
        else:
            print(msg['User']['NickName'] + ': ' + msg['Text'])
    

    在使用过程中,因为没做过滤,这货自动回复了我所有群组的消息,包括公司群里正儿八经的研讨群之类的···

    后来··· ···

    所以特别指定了群组及好友 manger_jur(msg):

    # 群组昵称
    GROUPS = ('群组1','群组2')
    # 好友昵称
    FRIENDS = ('好友1', '好友2')
    
    # 指定生效群名or好友昵称
    def manger_jur(msg):
        if msg['User']['NickName'] in GROUPS \
                or msg['User']['NickName'] in FRIENDS:
    
            return True
        else:
            return False
    
    

    -第四步-

    添加主函数,相当于Java中的main(),Java出身的我反正是这么理解的,略略略~

    if __name__ == '__main__':
        itchat.auto_login(hotReload=True)
        itchat.run()
    

    hotReload 是微信登录的热加载,值设置为True的话,程序会保存你的登录信息,等下次重新运行主函数,就不需要重新扫码了。

    至此,大功告成!

    GitHub源码地址为:https://github.com/tianbohao1010/treasure_box感觉有帮助的朋友,可以为我点亮star噢。

    有问题的朋友可以后台留言,随缘回复。哈哈,拜~

    更多有意思的程序小项目可关注微信公众号:嘿嘿PIUPIUPIU

    heiheipiupiupiu.png

    相关文章

      网友评论

        本文标题:真·Python3奥义之微信小机器人召唤术

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