树莓派实战:微信机器人(itchat实现)

背景

楼主有一台树莓派4B开发板(8G内存版),是目前的顶配机型。这一年来的业余时间,除了写Java、架构方面的文章,也陆续折腾了不少树莓派上的好玩小项目,在此新开一个树莓派实战的文章系列,分享给粉丝和读者。

什么是树莓派?树莓派是一个信用卡大小的单板计算机,ARM架构CPU,低功耗,可以7×24跑Linux服务器,连接各种扩展硬件,所以发挥想象力,就能做很多有意思的事情。

需求

你有没有想过,拥有一个微信机器人,可以自动回复、AI聊天、定时发送天气预报、控制摄像头等等。使用树莓派+开源库itchat,就能实现上述所有需求。
为什么强调要用树莓派呢?因为它能7×24在线,可以把itchat客户端当作一个不停服的server。
特别说明:本文仅供学习用,请勿用于任何商业和其它用途。

itchat简介

itchat是一个开源的微信个人号接口,使用不到三十行的代码,就可以完成一个能够处理所有信息的微信机器人。
github地址:https://github.com/littlecodersh/ItChat

你一定对原理感到好奇。其实可以概括为一句话:itchat本质上是一个微信网页版客户端,它实现了微信网页版的协议/语义,通过http来通信。具体源码可以看components包里的文件。

下面分点介绍如何实现有趣的功能。

功能实现

1、自动回复

首先得注册消息处理函数,即对不同类型的消息做处理。微信消息分为文本、图片、语音、视频、好友申请等,可通过itchat的Python语法糖来注册不同类型消息的处理函数,有点类似Java里的注解。
如果是文本消息,可以识别其中的关键字,不同的关键字对应不同的逻辑处理。默认是处理单聊的消息,也可以处理群聊的消息。
运行程序后,会弹出一个二维码,扫码即可登录,然后itchat程序就跑起来了。另外需注意,发消息给自己是没用的,变通的办法是发消息给文件传输助手filehelper,效果等同于发消息给自己。
下面给出一个demo,并加以注释。

import itchat, time
from itchat.content import *

# 注册消息处理函数,回复文本、地图、名片、备注、分享类型的消息
@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
def text_reply(msg):
    # 回复以下消息:消息类型,消息内容文本
    itchat.send('%s: %s' % (msg.type, msg.text))
    # 根据不同的关键字,回复不同的消息
    if '你好' in msg.text:
        itchat.send('你好啊')
    elif '拜拜' in msg.text:
        itchat.send('下次聊')

# 注册消息处理函数,当收到图片、语音、附件、视频类型的消息时,下载内容
@itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
def download_files(msg):
    # 下载文件
    msg.download(msg.fileName)
    typeSymbol = {
   
        PICTURE: 'img',
        VIDEO: 'vid', }.get(msg.type, 'fil')
    return '@%s@%s' % (typeSymbol, msg.fileName)

# 注册消息处理函数,处理好友申请消息
@itchat.msg_register(FRIENDS)
def add_friend(msg):
    # 自动通过对方的好友申请
    msg.user.verify()
    # 然后发送问候语
    msg.user.send('Nice to meet you!')

# 上面几个都是单聊,加上isGroupChat=True就能处理群聊消息
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值