Вторая итерация Цодера. Чат-бот для стримов Цодинг.
Имейте в виду, что мы не используем пакеты Haskell из nixpkgs. Все зависимости должны быть загружены кабалом или стеком во время сборки.
$ 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 | Идентификатор клиента для вызовов API Twitch. |
имя | описание |
---|---|
authToken | Токен аутентификации для бота: https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token |
guild | Идентификатор гильдии, которую слушает бот |
channels | Список идентификаторов каналов, которые прослушивает бот (список анализируется как список 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
— Добавить цитату в базу данных котировок. Доступно только для сабов и модов.!delquote
— Удалить цитату по идентификатору. Доступно только Цодингу.!quote [quote-id]
— Запросить цитату из базы данных котировок. Вы можете поддержать мою работу через