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]
-- 从报价数据库查询报价。 您可以通过以下方式支持我的工作