HyperNerd
1.0.0
Tsoder 的第二次迭代。 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
檔案由三個可選部分組成。
[twitch]
nick = HyperNerd
channel = Tsoding
password =
clientId =
owner =
[discord]
authToken =
guild =
channels = [, , ... ]
[github]
apiKey =
姓名 | 描述 |
---|---|
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 | bot監聽的公會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
要觸發馬可夫鏈響應,只需在聊天中提及機器人即可。
馬可夫模型是一個 csv 文件,是使用Markov
CLI 實用程式根據機器人資料庫檔案中的日誌產生的:
$ 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
別名僅「重定向」一層深度,這意味著不支援傳遞別名:
!addalias bar foo
!bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
不支持傳遞別名的動機如下:
!addquote
-- 將報價新增至報價資料庫。僅適用於 sub 和 mod。!delquote
-- 按 id 刪除引用。僅適用於措丁。!quote [quote-id]
-- 從報價資料庫查詢報價。 您可以透過以下方式支持我的工作