Segunda iteración de Tsoder. Bot de chat para transmisiones de Tsoding.
Tenga en cuenta que no utilizamos ningún paquete Haskell de nixpkgs. Se supone que todas las dependencias deben descargarse mediante cabal o pila durante la compilación.
$ 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 compilaciones locales estilo Nix para obtener más información.
$ nix-shell
$ cabal v2-build
$ cabal v2-test
$ cabal v2-run exe:HyperNerd secret.ini database.db
Dependencias nativas:
$ stack build
$ stack exec hlint .
$ stack exec HyperNerd secret.ini database.db
El archivo secret.ini
consta de tres secciones opcionales.
[twitch]
nick = HyperNerd
channel = Tsoding
password =
clientId =
owner =
[discord]
authToken =
guild =
channels = [, , ... ]
[github]
apiKey =
nombre | descripción |
---|---|
nick | Apodo del bot. |
owner | Dueño del bot. El bot reconocerá este nombre como una autoridad independientemente de no ser un mod o un locutor. |
password | Contraseña generada por https://twitchapps.com/tmi/. oauth: el prefijo es la parte de la contraseña. |
channel | Canal al que se unirá el bot al inicio. |
clientId | ID de cliente para llamadas a la API de Twitch. |
nombre | descripción |
---|---|
authToken | Token de autenticación para el bot: https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token |
guild | La identificación del gremio que escucha el bot. |
channels | La lista de identificadores de canales que escucha el bot (la lista se analiza como una lista de Haskell: [ ) |
nombre | desc |
---|---|
apiToken | https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line |
Con secretos existentes en el volumen definido en 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 desencadenar una respuesta en cadena de Markov, simplemente mencione el bot en el chat.
El modelo de Markov es un archivo csv que se genera a partir de los registros en el archivo de base de datos del bot utilizando la utilidad CLI Markov
:
$ cabal exec Markov train database.db markov.csv
Este comando generará el archivo markov.csv
.
$ cabal exec HyperNerd secret.ini database.db markov.csv
El archivo markov.csv
no se actualiza automáticamente. Para actualizar el archivo con los nuevos registros, debe ejecutar la utilidad CLI Markov
nuevamente.
Puede asignar un alias de comando a cualquier comando:
!test
test
!addalias foo test
!foo
test
Los alias se "redireccionan" sólo a un nivel de profundidad, lo que significa que los alias transitivos no son compatibles:
!addalias bar foo
!bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
La motivación para no admitir alias transitivos es la siguiente:
!addquote
: agrega una cotización a la base de datos de cotizaciones. Disponible sólo para subs y mods.!delquote
- Eliminar cotización por id. Disponible sólo para Tsoding.!quote [quote-id]
- Consultar cotización desde la base de datos de cotizaciones. Puedes apoyar mi trabajo a través de