受 Hubot 启发但用 Go 编写的通用机器人库。
joe是一个用于用 Go 编程语言编写聊天机器人的库。它的灵感来自于 Github 开发人员开发的出色的 Hubot 框架,并为想要使用 Go 实现聊天机器人的人们带来了它的强大功能。
joe是一个打包为 Go 模块的软件库。您可以通过以下方式获取:
go get github.com/go- joe / joe
您可以在 https://joe-bot.net 找到所有代码示例、更多说明和完整食谱
每个机器人都包含一个聊天适配器(例如与 Slack 集成)、一个用于记住键值数据的内存实现(例如使用 Redis)以及一个将新消息或自定义事件(例如接收 HTTP 调用)路由到相应注册的大脑。处理函数。
默认情况下joe .New(…)
使用 CLI 适配器,使机器人从 stdin 读取消息并在 stdout 上响应。此外,机器人会将键值数据存储在内存中,这意味着它会在重新启动时忘记您告诉它的任何内容。此默认设置对于没有任何依赖项的本地开发很有用,但您很快就会想要添加其他模块来扩展机器人功能。
以下示例将 Bot 与 Slack 工作区连接并将键值数据存储在 Redis 中。为了允许消息处理程序访问内存,我们将它们定义为嵌入joe .Bot
的自定义ExampleBot
类型上的函数。
package main
import (
"fmt"
"github.com/go- joe / joe "
"github.com/go- joe /redis-memory"
"github.com/go- joe /slack-adapter/v2"
)
type ExampleBot struct {
* joe . Bot
}
func main () {
b := & ExampleBot {
Bot : joe . New ( "example" ,
redis . Memory ( "localhost:6379" ),
slack . Adapter ( "xoxb-1452345…" ),
),
}
b . Respond ( "remember (.+) is (.+)" , b . Remember )
b . Respond ( "what is (.+)" , b . WhatIs )
err := b . Run ()
if err != nil {
b . Logger . Fatal ( err . Error ())
}
}
func ( b * ExampleBot ) Remember ( msg joe . Message ) error {
key , value := msg . Matches [ 0 ], msg . Matches [ 1 ]
msg . Respond ( "OK, I'll remember %s is %s" , key , value )
return b . Store . Set ( key , value )
}
func ( b * ExampleBot ) WhatIs ( msg joe . Message ) error {
key := msg . Matches [ 0 ]
var value string
ok , err := b . Store . Get ( key , & value )
if err != nil {
return fmt . Errorf ( "failed to retrieve key %q from brain: %w" , key , err )
}
if ok {
msg . Respond ( "%s is %s" , key , value )
} else {
msg . Respond ( "I do not remember %q" , key )
}
return nil
}
joe不附带 Redis 集成等第三方模块,以避免引入超出实际需要的依赖项。然而,已经有一些模块可以直接使用来扩展机器人的功能,而无需自己编写太多代码。
如果您已经编写了一个模块并想要共享它,请将其添加到此列表中并打开拉取请求。
请阅读 CONTRIBUTING.md 了解有关我们的行为准则以及向此存储库提交拉取请求的流程的详细信息。
该软件仍处于 ALPHA 阶段,API 稳定性尚无保证。
所有重大(例如重大)更改都记录在 CHANGELOG.md 中。
v1.0 版本发布后,我们计划使用 SemVer 进行版本控制。有关可用版本,请参阅此存储库上的标签。
另请参阅参与该项目的贡献者列表。
该项目根据 BSD-3-Clause 许可证获得许可 - 有关详细信息,请参阅许可证文件。