/go-libonebot

Go LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

Primary LanguageGoMIT LicenseMIT

(WIP) Go LibOneBot

OneBot Go Reference

目前大体 API 已经成型,但还有一些细节尚未完成……

Go LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

具体而言,Go LibOneBot 通过 OneBotConfigActionMuxEvent 等类型的抽象,让 OneBot 实现者只需编写少量代码即可完成一个 OneBot 实现,而无需关心过多 OneBot 标准所定义的通信方式的细节。

基于 LibOneBot 实现 OneBot 时,OneBot 实现者只需专注于编写与聊天机器人平台对接的逻辑,包括通过长轮询或 webhook 方式从机器人平台获得事件,并将其转换为 OneBot 事件,以及处理 OneBot 动作请求,并将其转换为对机器人平台 API 的调用。

用法

一个什么都不做的 OneBot 实现:

package main

import (
    libob "github.com/botuniverse/go-libonebot"
)

func main() {
    config := &libob.Config{} // 创建空 Config
    ob := libob.NewOneBot("nothing", config) // 创建 OneBot 实例
    ob.HandleFunc(func(w libob.ResponseWriter, r *libob.Request) {
        // 对所有动作请求都返回 OK
        w.WriteOK()
    })
    ob.Run() // 运行 OneBot 实例
}

通过交互命令行输入“私聊消息”的实现:richardchien/go-libonebot-repl

关于上面示例中所涉及的类型、函数的更多细节,请参考 Godoc 文档

致谢

  • 感谢 @Mrs4s 的 go-cqhttp 让我有了用 Go 实现 LibOneBot 的念头
  • 感谢 @topjohncian 和 @wdvxdr1123 为本项目代码提供了一些改进建议