X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=demos%2Fircbot.scm;h=22d2a1d3a386a35f81a11662b8428c7a5d8ccc75;hb=1b6b5058ca34ee4cf122dff953396b38e59912a0;hp=b97b572bf738143d37c739c138f5d5f9286b6749;hpb=702d8f3a4f6b6abdf7e5c258a39f78eb4f0bb575;p=8sync.git diff --git a/demos/ircbot.scm b/demos/ircbot.scm index b97b572..22d2a1d 100755 --- a/demos/ircbot.scm +++ b/demos/ircbot.scm @@ -22,6 +22,7 @@ (use-modules (8sync) (8sync systems irc) + (8sync repl) (oop goops) (srfi srfi-37) (ice-9 format) @@ -29,8 +30,8 @@ (define-class ()) -(define-method (handle-line (irc-bot ) speaker channel - line emote?) +(define-method (handle-line (irc-bot ) message + speaker channel line emote?) (define my-name (irc-bot-username irc-bot)) (define (looks-like-me? str) (or (equal? str my-name) @@ -40,19 +41,19 @@ (match action ;; The classic botsnack! ("botsnack" - (<- irc-bot (actor-id irc-bot) 'send-line channel + (<- (actor-id irc-bot) 'send-line channel "Yippie! *does a dance!*")) ;; Return greeting ((or "hello" "hello!" "hello." "greetings" "greetings." "greetings!" "hei" "hei." "hei!" "hi" "hi!") - (<- irc-bot (actor-id irc-bot) 'send-line channel + (<- (actor-id irc-bot) 'send-line channel (format #f "Oh hi ~a!" speaker))) ;; ---> Add yours here <--- ;; Default (_ - (<- irc-bot (actor-id irc-bot) 'send-line channel + (<- (actor-id irc-bot) 'send-line channel "*stupid puppy look*")))) ;; Otherwise... just spit the output to current-output-port or whatever (_ @@ -86,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)) @@ -100,12 +104,20 @@ (repl #f)) (define hive (make-hive)) (define irc-bot - (hive-create-actor* hive "irc-bot" - #:username username - #:server server - #:channels channels)) + (bootstrap-actor* hive "irc-bot" + #:username username + #:server server + #:channels channels)) + (define repl-manager + (cond + ((string? repl) + (bootstrap-actor* hive "repl" + #:path repl)) + (repl + (bootstrap-actor* hive "repl")))) + ;; TODO: load REPL - (ez-run-hive hive (list (bootstrap-message hive irc-bot 'init)))) + (run-hive hive '())) (define (main args) (define parsed-args (parse-args "ircbot.scm" args))