Hubot からインスピレーションを得た、Go で書かれた汎用ボット ライブラリです。
joe Go プログラミング言語でチャット ボットを作成するために使用されるライブラリです。これは、Github の人々によって開発された素晴らしい Hubot フレームワークから多大な影響を受けており、Go を使用してチャット ボットを実装したい人々にそのパワーをもたらします。
joe Go モジュールとしてパッケージ化されたソフトウェア ライブラリです。次の方法で入手できます。
go get github.com/go- joe / joe
すべてのコード例、詳細な説明、完全なレシピは https://joe-bot.net で見つけることができます。
各ボットは、チャットアダプター(例: Slack と統合するため)、キーと値のデータを記憶するためのメモリ実装 (例: Redis を使用)、および新しいメッセージまたはカスタム イベント (例: HTTP 呼び出しの受信) を対応する登録済みのユーザーにルーティングするBrainで構成されます。ハンドラー関数。
デフォルトでは、 joe .New(…)
は、ボットが stdin からメッセージを読み取り、stdout で応答するようにする CLI アダプターを使用します。さらに、ボットはキー値データをメモリ内に保存します。つまり、ボットが再起動されると、ユーザーが指示した内容はすべて忘れられます。このデフォルト設定は、依存関係のないローカル開発には便利ですが、すぐに他のモジュールを追加してボットの機能を拡張したくなるでしょう。
次の例では、ボットを 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 をお読みください。
このソフトウェアはまだアルファ版であり、API の安定性についてはまだ保証されていません。
すべての重要な (破壊的な) 変更は CHANGELOG.md に文書化されています。
v1.0 リリース後は、バージョン管理に SemVer を使用する予定です。利用可能なバージョンについては、このリポジトリのタグを参照してください。
このプロジェクトに参加した貢献者のリストもご覧ください。
このプロジェクトは、BSD-3-Clause License に基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。