终于有一个微信机器人了。
公众号很久没有更新了。主要两个原因,换了工作之后,第一,要花更多的时间去了解和学习新的业务。第二,我最近把几乎所有的业余时间都来写这个 微信机器人了。
Wechaty 是什么
官网的描述是:
其实就是一个能够快速构建聊天机器人的开源 SDK。最早的时候,Wechaty 只是一个基于服务于微信工具库,现在逐渐的发展到可以对接世面上的主流聊天软件包括不限于:微信,企业微信,钉钉,Line 等。
编程语言也由原来的单一语言(TypeScript) 发展到,Java,Scala,Python,Go 等多语言实现的工具库了,同时社区生态还在不断的壮大。
与 Wechaty 结缘
之前的工作,老板有一个要求,是就每天下班后,发一封邮件日报简单描述一下今天工作进展。如果忘记发日报,第二天就负责整理 全组人的日报。作为一个健忘的人,忘记发日报简直就是家常便饭。
于是就考虑需要一个机制:
- 每天提醒我发日报
- 动作尽可能简单,且自动化。
当时就想能不能在微信上有一个机器人,每天定时提醒我发日报,而且只要回复这个机器人,他就能够把我回复的消息,按照固定模板生成日报并发送给老板。这样既不会忘记,也能简单自动化的完成这个工作。
一顿 Google 还真找到了 Wechaty 这个工具。尝试写了一个日报机器人满足了我的需求。于是再接再厉,又写了一个提醒女朋友吃饭的工具,但是因为不熟悉 TypeScript。写出的机器人没法停止,变成了一个信息轰炸机,差点被拉黑。居然有人能忘记吃饭?写个微信机器人提醒他
就是因为这篇文章,还结识了 Wechaty 的作者李佳芮。现在她的公司已经估值很多个 0 了。
由于我的主要工作语言是 Java ,对 TypeScript 还是了解不多,就暂时放下了。
Java 版的 Wechaty
在 Wechaty 的某个版本后,开始支持 GRPC 作为传输协议。这个时候我觉得多语言开发的环境就比较成熟了。于是我就开始尝试写一个 Java 版的 wechaty。
Java vs Kotlin
Wechaty 使用 TypeScripe 开发,在移植的过程中,发现要实现 TS 版对应的功能,Java 所需要的模板代码就太多了,开发起来效率不够快。于是就考虑可不可以使用 Kotlin 来构建 Java-wechaty sdk。
Kotlin 有以下特性感觉比较适合 Wechaty 的开发:
- Java 和 Kotlin 之间可以无障碍的互相操作
- 在 Kotlin 中,函数也是第一公民,可以脱离类的存在,这一点在移植 TS 代码的时候优势就比较明显了。
- 空指针安全,之前写 Java 的时候,受够了一步一检查。Kotlin 在语言层面就解决了空指针安全的问题。写起来有效的减少心智负担。
- Kotlin 是务实的,更有表现力的语言。语法更加接近 TS 和 GO,相对 Java 来说更加简洁。
事件驱动
TS 版的 Wechaty 是基于 Nodejs 开发的,一个典型的事件驱动的架构。在开发初期我就自然想到了使用 Vertx
框架来开发。但是开发一段时间后发现,其实 Vertx
是一个事件驱动的网络框架。主要解决的还是网络相关的问题,放到 Java-wechaty 中还是太重了。
于是移除了代码中的 Vertx 框架,自己参考 Nodejs 中的 EventEmitter 实现了 Kotlin 版的事件驱动组件。
还没有人赞赏,快来当第一个赞赏的人吧!
- 2¥
- 5¥
- 10¥
- 20¥
- 50¥
声明:本文来自非凡微信机器人助手投稿,不代表微信机器人立场,版权归原作者所有,欢迎分享本文,转载请保留出处!