Segunda iteração do Tsoder. Bot de bate-papo para streams Tsoding.
Tenha em mente que não estamos usando nenhum pacote Haskell do nixpkgs. Todas as dependências devem ser baixadas por cabal ou pilha durante a construção.
$ 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
Consulte Construções locais no estilo Nix para obter mais informações
$ nix-shell
$ cabal v2-build
$ cabal v2-test
$ cabal v2-run exe:HyperNerd secret.ini database.db
Dependências nativas:
$ stack build
$ stack exec hlint .
$ stack exec HyperNerd secret.ini database.db
O arquivo secret.ini
consiste em três seções opcionais.
[twitch]
nick = HyperNerd
channel = Tsoding
password =
clientId =
owner =
[discord]
authToken =
guild =
channels = [, , ... ]
[github]
apiKey =
nome | descrição |
---|---|
nick | Apelido do bot. |
owner | Proprietário do bot. O bot reconhecerá este nome como uma autoridade, independentemente de não ser um mod ou emissor. |
password | Senha gerada por https://twitchapps.com/tmi/. oauth: prefixo é a parte da senha. |
channel | Canal ao qual o bot ingressará na inicialização. |
clientId | ID do cliente para chamadas de API do Twitch. |
nome | descrição |
---|---|
authToken | Token de autenticação para o bot: https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token |
guild | O id da guilda que o bot escuta |
channels | A lista de ids de canais que o bot escuta (a lista é analisada como uma lista Haskell: [ ) |
nome | desc |
---|---|
apiToken | https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line |
Com segredos existentes no volume definido em 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
Para acionar uma resposta em cadeia de Markov, basta mencionar o bot no chat.
O modelo Markov é um arquivo csv gerado a partir dos logs no arquivo de banco de dados do bot usando o utilitário Markov
CLI:
$ cabal exec Markov train database.db markov.csv
Este comando produzirá o arquivo markov.csv
.
$ cabal exec HyperNerd secret.ini database.db markov.csv
O arquivo markov.csv
não é atualizado automaticamente. Para atualizar o arquivo com os novos logs, você deve executar o utilitário Markov
CLI novamente.
Você pode atribuir um alias de comando a qualquer comando:
!test
test
!addalias foo test
!foo
test
Os aliases são "redirecionados" apenas em um nível de profundidade, o que significa que aliases transitivos não são suportados:
!addalias bar foo
!bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
A motivação para não suportar aliases transitivos é a seguinte:
!addquote
-- Adiciona uma cotação ao banco de dados de cotações. Disponível apenas para subs e mods.!delquote
-- Exclui cotação por id. Disponível apenas para Tsoding.!quote [quote-id]
– Consulta cotação no banco de dados de cotações. Você pode apoiar meu trabalho através