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(…)
봇이 stdin에서 메시지를 읽고 stdout에서 응답하도록 하는 CLI 어댑터를 사용합니다. 또한 봇은 키 값 데이터를 메모리에 저장하므로 다시 시작할 때 사용자가 말한 모든 내용을 잊어버립니다. 이 기본 설정은 종속성이 없는 로컬 개발에 유용하지만 다른 모듈을 추가하여 봇 기능을 확장하고 싶을 것입니다.
다음 예에서는 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를 읽어보세요.
이 소프트웨어는 아직 알파 버전이며 아직 API 안정성에 대한 보장은 없습니다.
모든 중요한(예: 주요 변경 사항) 변경 사항은 CHANGELOG.md에 문서화되어 있습니다.
v1.0 릴리스 이후에는 버전 관리에 SemVer를 사용할 계획입니다. 사용 가능한 버전은 이 저장소의 태그를 참조하세요.
이 프로젝트에 참여한 기여자 목록도 참조하세요.
이 프로젝트는 BSD-3-Clause License에 따라 라이센스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.