X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=demos%2Fircbot.scm;h=eaae113f80bf07d34b391652eec024d9ca728fc7;hp=ec381f0b83ea3b03b356fdc9e3b6eaed85a270a6;hb=6a8dc6f801cc08e1b92dce53fc8a3758c9b0718a;hpb=3e27bb39df3dbaf65bd0581131610bfe6c824720 diff --git a/demos/ircbot.scm b/demos/ircbot.scm index ec381f0..eaae113 100755 --- a/demos/ircbot.scm +++ b/demos/ircbot.scm @@ -22,10 +22,16 @@ (use-modules (8sync) (8sync systems irc) + (8sync repl) + (oop goops) (srfi srfi-37) + (ice-9 format) (ice-9 match)) -(define (handle-line irc-bot speaker channel line emote?) +(define-class ()) + +(define-method (handle-line (irc-bot ) speaker channel + line emote?) (define my-name (irc-bot-username irc-bot)) (define (looks-like-me? str) (or (equal? str my-name) @@ -81,7 +87,10 @@ (option '("channels") #t #f (lambda (opt name arg result) `(#:channels ,(string-split arg #\,) - ,@result)))) + ,@result))) + (option '("repl") #f #t + (lambda (opt name arg result) + `(#:repl ,(or arg #t) ,@result)))) (lambda (opt name arg result) (format #t "Unrecognized option `~a'\n" name) (exit 1)) @@ -95,17 +104,29 @@ (repl #f)) (define hive (make-hive)) (define irc-bot - (hive-create-actor* hive "irc-bot" - #:line-handler handle-line - ;; TODO: move these to argument parsing + (hive-create-actor* hive "irc-bot" #:username username #:server server #:channels channels)) + (define repl-manager + (cond + ((string? repl) + (hive-create-actor* hive "repl" + #:path repl)) + (repl + (hive-create-actor* hive "repl")))) + + (define initial-messages + (if repl + (list (bootstrap-message hive irc-bot 'init) + (bootstrap-message hive repl-manager 'init)) + (list (bootstrap-message hive irc-bot 'init)))) + ;; TODO: load REPL - (ez-run-hive hive (list (bootstrap-message hive irc-bot 'init)))) + (ez-run-hive hive initial-messages)) (define (main args) - (define parsed-args (parse-args "ircbot.scm" (pk 'args args))) + (define parsed-args (parse-args "ircbot.scm" args)) (apply (lambda* (#:key username #:allow-other-keys) (when (not username) (display "Error: username not specified!")