HyperNerd
1.0.0
Tsoder의 두 번째 반복. Tsoding 스트림용 채팅 봇.
우리는 nixpkgs의 Haskell 패키지를 사용하지 않는다는 점을 명심하세요. 모든 종속성은 빌드 중에 cabal 또는 스택에 의해 다운로드되어야 합니다.
$ nix-shell
$ cabal sandbox init
$ cabal install happy-1.19.9
$ cabal install --only-dependencies --enable-tests
$ cabal build
$ cabal test
$ cabal run HyperNerd secret.ini database.db
자세한 내용은 Nix 스타일 로컬 빌드를 참조하세요.
$ nix-shell
$ cabal v2-build
$ cabal v2-test
$ cabal v2-run exe:HyperNerd secret.ini database.db
기본 종속성:
$ stack build
$ stack exec hlint .
$ stack exec HyperNerd secret.ini database.db
secret.ini
파일은 세 가지 선택적 섹션으로 구성됩니다.
[twitch]
nick = HyperNerd
channel = Tsoding
password = <oauth-token>
clientId = <client-id-token>
owner = <your-name>
[discord]
authToken = <auth-token>
guild = <guild-id>
channels = [<channel-id-1>, <channel-id-2>, ... ]
[github]
apiKey = <oauth-token>
이름 | 설명 |
---|---|
nick | 봇의 별명입니다. |
owner | 봇의 소유자입니다. 봇은 모드나 방송자가 아니더라도 이 이름을 권위자로 인식합니다. |
password | https://twitchapps.com/tmi/에서 생성된 비밀번호. oauth: 접두사는 비밀번호의 일부입니다. |
channel | 시작 시 봇이 참여할 채널입니다. |
clientId | Twitch API 호출을 위한 클라이언트 ID입니다. |
이름 | 설명 |
---|---|
authToken | 봇용 인증 토큰: https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token |
guild | 봇이 듣고 있는 길드의 아이디 |
channels | 봇이 청취하는 채널의 ID 목록(목록은 Haskell 목록으로 구문 분석됩니다: [<channel-id-1>, <channel-id-2>, ... ] ) |
이름 | 설명 |
---|---|
apiToken | https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line |
docker-compose.yaml
에 정의된 볼륨에 비밀이 존재하는 경우,
$ docker-compose up --build
$ docker build --target app -t hypernerd .
$ mkdir hypernerd-state
$ cp secret.ini hypernerd-state
$ docker create -v /absolute/path/to/hypernerd-state/:/tmp/hypernerd/
--name hypernerd-bot hypernerd
$ docker start -a hypernerd-bot
$ docker stop hypernerd-bot
$ docker exec -it hypernerd-bot sh
Markov 체인 응답을 트리거하려면 채팅에서 봇을 언급하기만 하면 됩니다.
Markov 모델은 Markov
CLI 유틸리티를 사용하여 봇 데이터베이스 파일의 로그에서 생성된 csv 파일입니다.
$ cabal exec Markov train database.db markov.csv
이 명령은 markov.csv
파일을 생성합니다.
$ cabal exec HyperNerd secret.ini database.db markov.csv
markov.csv
파일은 자동으로 업데이트되지 않습니다. 새 로그로 파일을 업데이트하려면 Markov
CLI 유틸리티를 다시 실행해야 합니다.
모든 명령에 명령 별칭을 할당할 수 있습니다.
<user> !test
<bot> test
<user> !addalias foo test
<user> !foo
<bot> test
별칭은 한 수준 깊이로만 "리디렉션"됩니다. 즉, 전이 별칭이 지원되지 않습니다.
<user> !addalias bar foo
<user> !bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
전이적 별칭을 지원하지 않는 이유는 다음과 같습니다.
!addquote <quote-text>
-- 견적 데이터베이스에 견적을 추가합니다. 서브와 모드에서만 사용할 수 있습니다.!delquote <quote-id>
-- ID별로 인용문을 삭제합니다. Tsoding에만 사용 가능합니다.!quote [quote-id]
- 견적 데이터베이스에서 견적을 쿼리합니다. 다음을 통해 내 작업을 지원할 수 있습니다.