关于本项目
作者介绍
- UNIkeEN
- 身份:SJTU 21级本科生,电院
- 职务:项目发起人、主要开发者
- fangtiancheng
- 身份:SJTU 19级本科生,电院
- 职务:主架构师、技术顾问
开发历程
2022年暑假,周围的朋友受某种风气影响,纷纷跑去开发 QQ 聊天机器人,其中大部分人选择 nonebot 作为基础框架。作为后来者,我观察到:他们在使用 nonebot 后,还纷纷跑去看 go-cqhttp 文档,甚至有几个抱怨 nonebot 封装太深。受此影响,我便打算只基于 go-cqhttp 开发一套 QQ 机器人出来。
一个月后, Little-UNIkeEN-Bot 大致成型。我作为后来者,开发出的功能比那几个先到者的还要多。因此,我便考虑将这个项目继续做大。接下来一个月,我打磨架构、引进技术、开发新插件,顺利地把 bot 修到更进一步的高度。同时,我也开始思考一个哲学问题:
onebot 是一个好方案吗?
我思考了好久,最后认定这并不是一个好方案。原因如下:
onebot 协议主打跨平台,目前 nonebot 也确实实现了,但是平台之间的内容异质性是中间层软件无法抹平的。比如 qq 的表情、at、戳一戳,形状如[cq:xxx,id=xxx]
;钉钉的富文本,格式更不好描述。如果需要开发者自己抹除内容异质性,那么扛起跨平台大旗的中间层也没有生存的的必要了;如果中间层抹除了内容异质性,那么就需要自己制定大量标准、编写大量函数、频繁修改代码对接底层,这样做既丧失了版本稳定性,更需要消耗开发者大量精力去学习你自己制定的接口,有种“自己玩自己的”的感觉。更失望的是,阿里腾讯可不听我们这些bot开发人员的呼声,异质性内容还会更多更频繁地在未来出现。
nonebot是遵守onebot协议的,自然能看出其缺点:封装深要求多、开发成本过高、版本不稳定、QQ独特的内容不能完美表达(比如精华消息等)....
因此,我更加坚定了推出一套完整项目的决心。我开始召集小伙伴写插件、写文档、深度打磨架构....
直到,我们隆重推出本项目的1.0.0
版本!
我们的优势和不足
nonebot 是 Little-UNIkeEN-Bot 的主要竞品之一,相比 nonebot ,我们的优势有:
- 核心代码小于 1000 行,架构简单、逻辑清晰
- 在编程层面屏蔽多线程,极大地减少开发难度
- 建议用户直接与 qq 驱动对话,底层丰富功能即学即用
- 不用跨过中间层,能直接接受 gocq 的 dict 格式消息、使用 python 库定时等,减少学习、开发成本
- 消息封装简单,插件示例丰富,功能轻松编写
- 给内容生产者提供 sql 存储、PIL 光栅化服务,大大增加生产效率
我们的不足有:
- 非跨平台,目前官方库仅支持 qq (不过已经有其他作者开发了微信版本)
- 在开发进阶插件时,需要开发者额外学习 mysql 、阅读 go-cqhttp 文档
- 我们刚刚开源,社区建设并不完善
我们和 nonebot 的差异:
- 我们的定位是 qq 机器人前端,nonebot 的定位是多聊天软件中间层&前端