X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=8sync%2Fsystems%2Firc.scm;h=aad138d09bb62a9de32c5f6bfc1fa0614236040d;hb=88ad8bc99a14d0037bad27ff3c576ebbabbf14f4;hp=536c9a26ce38ff3e2002fa6b7e15f18db375625f;hpb=165231476f466b4dbeca51c981cf0dfa2963ff16;p=8sync.git diff --git a/8sync/systems/irc.scm b/8sync/systems/irc.scm index 536c9a2..aad138d 100755 --- a/8sync/systems/irc.scm +++ b/8sync/systems/irc.scm @@ -35,6 +35,8 @@ #:export ( irc-bot-username irc-bot-server irc-bot-channels irc-bot-port + irc-bot-send-line + handle-line handle-misc-input handle-user-join handle-user-quit @@ -164,7 +166,7 @@ #:init-value (build-actions (init irc-bot-init) (main-loop irc-bot-main-loop) - (send-line irc-bot-send-line)))) + (send-line irc-bot-send-line-action)))) (define (irc-bot-realname irc-bot) (or (slot-ref irc-bot 'realname) @@ -212,12 +214,18 @@ (else (<- irc-bot (actor-id irc-bot) 'main-loop)))) -(define* (irc-bot-send-line irc-bot message - channel line #:key emote?) +(define* (irc-bot-send-line-action irc-bot message + channel line #:key emote?) + "Action handler for sending lines. Real behavior happens in +irc-bot-send-line." + (irc-bot-send-line irc-bot channel line #:emote? emote?)) + +(define* (irc-bot-send-line irc-bot channel line #:key emote?) ;; TODO: emote? handling (format (irc-bot-socket irc-bot) "PRIVMSG ~a :~a~a" channel line irc-eol)) + ;;; Likely-to-be-overridden generic methods (define-method (dispatch-raw-line (irc-bot ) raw-line) @@ -226,14 +234,15 @@ (parse-line raw-line) (match line-command ("PING" - (display "PONG" (irc-bot-socket irc-bot))) + (display (string-append "PONG" irc-eol) + (irc-bot-socket irc-bot))) ("PRIVMSG" (receive (channel-name line-text emote?) (condense-privmsg-line line-params) (let ((username (irc-line-username line-prefix))) - (irc-bot-handle-line irc-bot username channel-name - line-text emote?)))) - (_ (irc-bot-handle-misc-input irc-bot raw-line))))) + (handle-line irc-bot username channel-name + line-text emote?)))) + (_ (handle-misc-input irc-bot raw-line))))) (define-method (handle-line (irc-bot ) username channel-name line-text emote?)