[开源分享] Doko - NodeJS SDK [v.1.4.0 (2022/09/11)]
王玉团子:JuerGenie

发布于 2022-09-04 09:38

🐦 Doko NodeJS SDK

⚡️Low-level, Easy and Simple.

v.1.4.0 (2022/09/11)

  1. 使用Typescript开发,能提供详尽的类型提示(大概,我尽量)

  2. 代码简单,开发快速,易于使用

  3. 拥有基于NPM的丰富生态,可快捷实现各种功能(只要善于搜索)

  4. 基于ESNext规范(一切按标准来)

  5. 因为4,所以虽然不确定能不能用,不过Deno和Bun.js也许可以试试

    1. 听说Deno要有大动作了,总之先期待一下

    2. Bun.js真的很快!


📖 食用姿势

对使用者(机器人开发者)而言

  1. 创建一个项目

  2. 执行

    npm: `npm install doko-sdk`

    yarn: `yarn doko-sdk`

    pnpm: `pnpm add doko-sdk`

  3. 创建 `index.js`

  4. 引入 `import { Doko } from "doko-sdk"`,并创建一个实例

  5. 监听任何你想监听的事件,做你任何想做的事情

  6. 调用 `Doko.start()` 启动机器人

你可以参考项目下的 example,一切从 `new Doko()` 开始,使用 `Doko.hook` 添加事件钩子,使用 `Doko.dodo` 调用API。

一切准备完毕后,使用 `Doko.start()` 让机器人开始它的旅程。

SDK使用范例
范例运行效果

📝 Todo List

因为是自用SDK,所以实现优先级会以我自己的实际需求为准。

  • [🚧] 添加完整的API列表

    • [✅] 机器人API

    • [✅] 群API

    • [✅] 频道API

    • [✅] 文字频道API

    • [✅] 帖子频道API

    • [✅] 语音频道API

    • [✅] 身份组API

    • [✅] 成员API

    • [⌛️] 数字藏品API

    • [⌛️] 私信API

    • [⌛️] 资源API

    • [✅] 事件API

  • [✅] 添加完整的事件监听

    • [✅] 创建websocket链接

    • [✅] 监听群组成员Event

    • [✅] 监听文字频道Event

    • [✅] 监听帖子频道Event

    • [✅] 监听语音频道Event

    • [✅] 监听私信Event

  • [⌛️] 添加健壮性特性

    • [⌛️] 断线重连尝试

  • [🚧] 添加快捷使用方式

    • [✅] 消息事件快捷回复

    • [⌛️] JSX/TSX to CardMessage

    • [🚧] 代码式创建MessageBody

  • [✅] API便捷性封装

    • [✅] 机器人API

    • [✅] 群API

    • [✅] 频道API

    • [✅] 文字频道API

    • [✅] 帖子频道API

    • [✅] 身份组API

    • [✅] 成员API

  • [⌛️] Guide Documents

  • [🚧] 更多特性待添加...

⌛️:待完成 🚧:施工中 ✅:已完成


你可以在这里看到关于包的最新状态:doko-sdk - npm (npmjs.com)

如果你对实现感兴趣,或者想贡献代码,可以在这里查看到源码:doko-sdk - npm (github.com),如果有时间的话,我会逐步完善贡献指引(如果真的有贡献者的话)。


🗓 更新记录

嘛,篇幅所限,这里只记录最近的10次更新吧,如果之后能支持收缩块的话就更好了。

也可以在此处查看完整的更新日志:JuerGenie/doko (github.com)

  • 2022/09/11 - v.1.4.0

    • 更新API命名,优化store初始化逻辑,添加logger工具。

    • 移除cjs输出,只支持esm格式构建输出。

    • 新增示例:「jan-ken-pon」。

      • Tips:因为我没朋友()所以没有测试过,不过脑测了一下流程应该没什么问题,有条件的话希望能帮我测试一下😊お願いします!

  • 2022/09/08 - v.1.3.1

    • 封装底层请求接口,调整接口注册方式。对事件进行增强,提供快捷回复函数。

      • 例如:

        • 快捷回复:

          bot.hook.on(

          "channel.message.text",

          (data) => data.response({...})

          )

        • 管理成员身份组:

          bot.dodo

          .island()

          // 锚定至指定群组,island可通过 bot.dodo.island().list() 获取

          .with(island)

          .role()

          // 锚定至指定身份组,role可通过 role().list() 获取

          .with(role)

          .member()

          .add(member);

          // 此处的语义是「将指定member添加至身份组中」,

          // 反之也可以通过从 member API 处进行操作,其语

          // 义为「为member添加指定身份」

  • 2022/09/06 - v.1.2.0

    • 将 `DokoEvent` 更换至 `DokoHook`,提供hook机制,提供更好的hook相关的类型提示

  • 2022/09/06 - v.1.1.0

    • 同步 0.1.4 新增接口及事件

    • 项目结构调整


😠 一点牢骚

啊——虽然在一个礼拜前就收到邮件然后打算做了,但是直到周末才有一点儿时间开始动手来着。

在此之前经历了平均一天面对电脑15小时的30日地狱……

不过总算是开始做了,虽然只是一个很简陋的雏形,只能提供基本的事件接收和频道消息发送。我想着先这样吧,凑合着用一用。然后想到也许社区中会有人用得到,于是就这么发出来了,万一遇到志同道合者一起合作也是好事。

说到typescript,开发过程中想到了不知道在哪看过的一句话:「使用typescript的库开发者有一半时间在和类型系统掐架」,感觉确实是这样呢(笑)。

——By JuerGenie,2022/09/04

嘛,一切随缘(x)

编辑于 2022-09-11 17:56
允许转载,请注明作者及出处
打开APP DoDo提供建站支持