定制化自己的itchat

上篇文章很详实,可以实现一个低级的微信自动回复机器人,听说还有用图灵的,那就变成高级机器人了。

初级目标: 自动回复好友的信息。



#-*- coding:utf-8 -*-
#微信的库
import itchat
#导入想要处理的content内容
from itchat.content import *

import re
import time
#这个装饰器是个类装饰器吧,貌似功能很强大,括号里的内容定义了你这个函数想处理的信息类型,msg便是你收到的微信信息,看样子是个字典。
@itchat.msg_register([TEXT, PICTURE, MAP, CARD, NOTE, SHARING, RECORDING, ATTACHMENT, VIDEO])
def text_reply(msg):
    #调试用的,看看不同的信息都长啥样
    print msg
    #对于不同类型的信息,我们要记录不同的内容来回复,
    #普通文本
    if msg[‘Type‘] == ‘Text‘:
        reply_content = msg[‘Text‘]

    #图片,记录图片的名字,FileName这个键值可以表示图片,音频视频的名字
    elif msg[‘Type‘] == ‘Picture‘:
        reply_content = r"Picture: " + msg[‘FileName‘]
    #如果接收到的是个名片的话,记下推荐信息和昵称
    elif msg[‘Type‘] == ‘Card‘:
        reply_content = r" " + msg[‘RecommendInfo‘][‘NickName‘] + r" ‘s card"
    #如果收到的是一个共享的地址的话,用正则分别尝试去匹配经纬度和位置名称
    elif msg[‘Type‘] == ‘Map‘:
        x, y, location = re.search("<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg[‘OriContent‘]).group(1,
                                                                                                                    2,
                                                                                                                    3)
        if location is None:
            reply_content = r"Location: longititude->" + x.__str__() + u" jingdu->" + y.__str__()
        else:
            reply_content = r"location: " + location
    #后面这些还没用过,直接处理了,以后有错再说
    elif msg[‘Type‘] == ‘Note‘:
        reply_content = r"Note"
    elif msg[‘Type‘] == ‘Sharing‘:
        reply_content = r"Sharing"
    elif msg[‘Type‘] == ‘Recording‘:
        reply_content = r"Voice"
    elif msg[‘Type‘] == ‘Attachment‘:
        reply_content = r"File: " + msg[‘FileName‘]
    elif msg[‘Type‘] == ‘Video‘:
        reply_content = r"Video: " + msg[‘FileName‘]
    else:
        reply_content = r"Message"
    #获取信息来源
    friend = itchat.search_friends(userName=msg[‘FromUserName‘])
    #在itchat助手里进行记录
    itchat.send(r"Friend:%s -- %s    "
                r"Time:%s    "
                r" Message:%s" % (friend[‘NickName‘], friend[‘RemarkName‘], time.ctime(), reply_content),
                toUserName=‘filehelper‘)
    #回复给信息来源,表示朕已经收到你的消息了,你可以退下了
    itchat.send(r"I received your news (%s) %s.Reply later.--From itchat(Python)" % (time.ctime(), reply_content),
                toUserName=msg[‘FromUserName‘])
#懒得自定义登录函数了,用自带的函数
itchat.auto_login(enableCmdQR=-2,hotReload=True)
itchat.send(r‘Hello my friend!‘,toUserName=‘filehelper‘)
#运行起来,等待接受信息
itchat.run()

傻瓜式的照搬例子就可以了,代码几乎一样。高级功能有待后续实现
时间: 2024-10-10 10:07:25

定制化自己的itchat的相关文章

使用beanstalkd实现定制化持续集成过程中pipeline - 持续集成系列

持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中,最核心的一点就是,如何实现一个可定制化的任务流,即所谓的pipeline. 在传统的持续集成工具实现了pipeline功能,以供串联上下游job,并把多个job联系成一次完整的构建,例如jenkins的pipeline插件. 但是各种持续集成工具,或多或少都有自己的短板,总结起来如下: 1.配置并不

定制化Azure站点Java运行环境(1)

Azure website提供了为现代化的web应用程序快速部署的PAAS平台,可以让用户几分钟之内快速的将自己的应用部署到云端,并且提供了自动扩展(auto-scaling),SSL,多种语言(Java,Python,PHP, Node.JS, .Net) 等的支持,并且可以和其他Azure服务无缝整合等特性,赢得了很多用户的青睐. 作为PAAS平台,Azure website的app运行环境,OS等底层设施都由微软进行管理,用户只需要关心自己的App和Data即可,但在一些情况下,用户希望能

大数据平台一键安装OS【定制化OS镜像制作】

 定制化 大数据平台一键安装OS 大数据平台一键安装OS系列 大数据平台一键安装OS[搭建脚本篇] 定制化OS镜像制作 1.操作环境 操作环境:VMware Workstarion 9 and vSphere client 系统:CentOS -6.8-x86_64 工具:gconf-editor anaconda repodata createrepo mkisofs rsync 2.主要思路 定制化是通过kickstart脚本来实现的,linux系统安装完毕后在root目录下会生成anaco

定制化Azure站点Java运行环境(3)

定制化Azure Website提供的默认的Tomcat和JDK环境 在我们之前的测试中,如果你访问你的WEB站点URL时不加任何上下文,实际上你看到的web界面是系统自带的测试页面index.jsp,位于/site/wwwroot/webapps/ROOT目录下,是Tomcat默认的根目录. 由于要检测JVM的usage信息以便确定,定制化修改的Java参数是否生效,所以我们需要写一些测试代码,打印出当前JVM的参数信息;首先使用FileZilla连接到你的网站,进入到/site/wwwroo

定制化Azure站点Java运行环境(4)

定制化使用您自己的Tomcat版本和JDK环境 在上面章节中,介绍了如何通过web.config,定制默认的Azure website的Java运行环境,默认情况下,Azure站点的Tomcat是7.0.50,Java版本是1.7.0_51,但用户自己测试开发或者生产环境的Tomcat和Java版本有可能是更高版本的,那么在Azure Website上是否可以深度定制化,使用用户自己的Tomcat和Java呢? 在本节中,我会介绍下在Azure website的PAAS服务中,你如何深度定制使用

定制化Azure站点Java运行环境(5)

Java 8下PermGen及参数设置 ? 在上一章节中,我们定制化使用了Java 8环境,使用我们的测试页面打印出了JVM基本参数,但如果我们自己观察,会发现在MXBeans中,没有出现PermGen的使用数据,初始大小等信息,即使我们已经设置了大小: ? 在Java 7及以前版本中,PermGen主要存放加载的类的信息,如果设置过小,类加载失败,可能会出现OutOfMemory的经典错误,在Azure website里面的Java开发中,碰到的客户定制化设置的问题也会涉及到PermGen的大

ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现&ldquo;定制化错误页面&rdquo;

DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMiddleware中间件则是面向最终用户的,我们可以利用它来显示一个友好的定制化的错误页面.按照惯例,我们还是先来看看ExceptionHandlerMiddleware的类型定义. [本文已经同步到<ASP.NET Core框架揭秘>之中] 1: public class ExceptionHan

NetScaler登录界面的定制化

1:在NetScaler做XA/XD的ICA代理的时候,用户访问NetScaler的AG地址的时候,default的界面是黑色的,而且上面有NetScaler的logo,基本上用户反馈都是需要定制化自己的界面和登录风格. 2:在NetScaler11版本之前,修改AG话界面的时候,需要通过远程工具Xshell等去替换CSS里面的图片,这个工作量还是蛮大的,同样需要UI设计好图片使用.路径在/netscler/ns_gui/vpn/media 和/var/netscaler/logon/theme

linux中内存泄漏的检测(二)定制化的malloc/free

<linux中内存泄漏的检测(一)最简单的方法>介绍了最简单的内存泄漏检测方法,这种方法虽然简单,却有很多现实的问题,导致它不能用于实际的生产中. 直接使用这种方法肯定是不现实的,因为: (1)把整个工程里所有调用malloc/free的地方都改成my_malloc/my_free,代码改动很大. (2)通常动态库和静态库的代码是没有权限修改的. 今天就来解决这个问题,动态地决定让程序使用自己的还是系统的内存管理接口. wrap选项 不希望修改产品代码,那么用于申请/释放内存的接口还是mall