受 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 許可證獲得許可 - 有關詳細信息,請參閱許可證文件。