Deuxième itération de Tsoder. Bot de chat pour les flux Tsoding.
Gardez à l’esprit que nous n’utilisons aucun package Haskell de nixpkgs. Toutes les dépendances sont censées être téléchargées par cabale ou par pile lors de la construction.
$ 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
Voir les constructions locales de style Nix pour plus d'informations
$ nix-shell
$ cabal v2-build
$ cabal v2-test
$ cabal v2-run exe:HyperNerd secret.ini database.db
Dépendances natives :
$ stack build
$ stack exec hlint .
$ stack exec HyperNerd secret.ini database.db
Le fichier secret.ini
se compose de trois sections facultatives.
[twitch]
nick = HyperNerd
channel = Tsoding
password =
clientId =
owner =
[discord]
authToken =
guild =
channels = [, , ... ]
[github]
apiKey =
nom | description |
---|---|
nick | Surnom du bot. |
owner | Propriétaire du bot. Le bot reconnaîtra ce nom comme une autorité, même s'il n'est pas un mod ou un diffuseur. |
password | Mot de passe généré par https://twitchapps.com/tmi/. oauth: le préfixe est la partie du mot de passe. |
channel | Canal que le bot rejoindra au démarrage. |
clientId | ID client pour les appels d’API Twitch. |
nom | description |
---|---|
authToken | Jeton d'authentification pour le bot : https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token |
guild | L'identifiant de la guilde que le bot écoute |
channels | La liste des identifiants des canaux que le bot écoute (la liste est analysée comme une liste Haskell : [ ) |
nom | desc |
---|---|
apiToken | https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line |
Avec des secrets existant dans le volume définis dans 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
Pour déclencher une réponse en chaîne de Markov, mentionnez simplement le bot dans le chat.
Le modèle Markov est un fichier csv généré à partir des journaux dans le fichier de base de données du bot à l'aide de l'utilitaire Markov
CLI :
$ cabal exec Markov train database.db markov.csv
Cette commande produira le fichier markov.csv
.
$ cabal exec HyperNerd secret.ini database.db markov.csv
Le fichier markov.csv
n'est pas automatiquement mis à jour. Pour mettre à jour le fichier avec les nouveaux journaux, vous devez réexécuter l'utilitaire Markov
CLI.
Vous pouvez attribuer un alias de commande à n'importe quelle commande :
!test
test
!addalias foo test
!foo
test
Les alias ne sont « redirigés » qu'à un seul niveau de profondeur, ce qui signifie que les alias transitifs ne sont pas pris en charge :
!addalias bar foo
!bar
*nothing, because !bar is redirected to !foo, but further redirect from !foo to !test does not happen*
La motivation pour ne pas prendre en charge les alias transitifs est la suivante :
!addquote
-- Ajoute un devis à la base de données de devis. Disponible uniquement pour les abonnés et les mods.!delquote
-- Supprime la citation par identifiant. Disponible uniquement pour Tsoding.!quote [quote-id]
-- Interroge un devis à partir de la base de données de devis. Vous pouvez soutenir mon travail via