当前位置: 首页 > 工具软件 > wechat4u.js > 使用案例 >

使用Wechaty搭建微信文件日程匣子

司马宏邈
2023-12-01

简介

使用Wechaty以少量的代码实现一个微信文件日程匣子项目。可快速将微信中的内容同步(转存)到其他网盘中。同时还添加自动识别处理日程等的小功能。

关于Wechaty

官方定义:
Wechaty是一个开源的的个人号微信机器人接口,使用Typescript构建的Node.js应用。支持多种微信接入方案,包括网页,ipad,ios,windows,android等。同时支持 Linux, Windows, Darwin(OSX/Mac) 和 Docker 多个平台。

一句话概括——Wechaty是一个能模拟登录微信并收发微信信息、添加自定义处理逻辑的库。值得注意的是其中的模拟登录,可以是模拟Web端登录(Wechaty提供免费支持),也可以是模拟Mac、iPad端登录(Wechaty以收费的云服务形式提供,但是可以申请成为开发者获取使用权限)。

项目背景

在使用微信作为主力办公工具的过程中,经常令人头大的问题之一就是处理文件,不论是同事之间互传文件或者是群聊里发送文件,要统一归档到网盘同步都是很麻烦的事情(尤其在iOS端微信,只能挨个打开在选择用其他应用打开)。因此希望实现一个能自动归档文件的效率小工具。

实现思路

由于Wechaty提供了很方便的File API,通过fileMsg.toFileBox方法就能获取一个消息的文件,因此通过收到多个文件-转发到文件匣子微信号-转存到其他位置的流程,就能实现把文件多选转发到文件匣子,然后自动归档到网盘的效果。

此外,msg.type方法能判断消息类型,从而可以对应日程文本使用正则匹配日期的NLP方法,将转发到匣子的日程文本识别出来存到数据库中供后续处理;如果是URL分享类型的消息,也可以识别出来并统一存储。

代码结构

代码仓库已开源。

目录结构如下:

├── LICENSE
├── Node
│ ├── coursHandler.js
│ ├── databasesConfig.js
│ ├── databases.js
│ ├── fileHandler.js
│ ├── functions.js
│ ├── httpServer.js
│ ├── main.js
│ ├── menuHandler.js
│ ├── scheduleHandler.js
│ ├── test.js
│ └── webdav.js
├── package.json
├── package-lock.json
├── public
│ └── cours.json
├── README.md
├── RunDir
├── RunRobot.sh
├── template
│ └── template.html
└── Time-NLP
├── pom.xml
├── README.md
├── resource
├── src
└── target

主要代码位于Node/下。其中:

  • main.js初始化Wechaty实例并判断收到消息的类型

  • databases.js和databasesConfig.js配置数据库表结构和连接数据库

  • webdav.js配置node的webdav模块,通过Webdav连接到个人网盘

  • menuHandler.js, scheduler.js, fileHandler.js, coursHandler.js分别处理控制消息、日程消息、文件消息、课程表查询消息

  • httpServer.js, template.html, cours.json则实现了一个简易的webpage用于网页端访问这些信息。

Time-NLP/中的源代码编译后,能够得到class字节码供node的java模块调用,从而实现从含有日程的文本信息解析出日期。

RunDir/的存在主要是因为msg.toFileBox方法会在运行目录保存文件,故在此目录下暂存这些文件。

结语

众所周知微信作为我们每天都在使用的工具,在文件管理等方面较QQ等其他工具功能过于单一,因此可以通过Wechaty搭建一个文件匣子,给微信加上文件自动同步网盘、日程自动收集等小功能,让日常办公更加效率:)

 类似资料: