HyperNerd
1.0.0
ツォーデルの 2 回目の反復。 Tsoding ストリーム用のチャット ボット。
nixpkgs の Haskell パッケージは使用していないことに注意してください。すべての依存関係は、ビルド中に cabal または stack によってダウンロードされることになっています。
$ 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
ファイルは 3 つのオプションのセクションで構成されます。
[twitch]
nick = HyperNerd
channel = Tsoding
password =
clientId =
owner =
[discord]
authToken =
guild =
channels = [, , ... ]
[github]
apiKey =
名前 | 説明 |
---|---|
nick | ボットのニックネーム。 |
owner | ボットの所有者。ボットは、MOD やブロードキャスターでなくても、この名前を権威として認識します。 |
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 | ボットがリッスンするギルドの ID |
channels | ボットがリッスンするチャネルの ID のリスト (リストは Haskell リストとして解析されます: [ ) |
名前 | 説明 |
---|---|
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
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 ユーティリティを再度実行する必要があります。
コマンド エイリアスを任意のコマンドに割り当てることができます。
!test
test
!addalias foo test
!foo
test
エイリアスは 1 レベルの深さだけ「リダイレクト」されます。これは、推移的なエイリアスがサポートされていないことを意味します。
!addalias bar foo
!bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
推移的なエイリアスをサポートしない理由は次のとおりです。
!addquote
-- 見積データベースに見積を追加します。サブチャンネルとMODのみが利用可能です。!delquote
-- ID で引用を削除します。ツォディンのみで利用可能。!quote [quote-id]
-- 見積データベースからの見積をクエリします。 私の仕事をサポートしていただける方は、