#:export (<irc-bot>
irc-bot-username irc-bot-server irc-bot-channels irc-bot-port
- irc-bot-handle-line irc-bot-handle-misc-input
- irc-bot-handle-user-join irc-bot-handle-user-quit
+ irc-bot-send-line
+
+ handle-line handle-misc-input
+ handle-user-join handle-user-quit
default-irc-port))
#: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)
(define (irc-bot-main-loop irc-bot message)
(define socket (irc-bot-socket irc-bot))
(define line (string-trim-right (read-line socket) #\return))
- (irc-bot-dispatch-raw-line irc-bot line)
+ (dispatch-raw-line irc-bot line)
(cond
;; The port's been closed for some reason, so stop looping
((port-closed? socket)
(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 (irc-bot-dispatch-raw-line (irc-bot <irc-bot>) raw-line)
+(define-method (dispatch-raw-line (irc-bot <irc-bot>) raw-line)
"Dispatch a raw line of input"
(receive (line-prefix line-command line-params)
(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 (irc-bot-handle-line (irc-bot <irc-bot>) username channel-name
+(define-method (handle-line (irc-bot <irc-bot>) username channel-name
line-text emote?)
(echo-message irc-bot username channel-name line-text emote?))
-(define-method (irc-bot-handle-misc-input (irc-bot <irc-bot>) raw-line)
+(define-method (handle-misc-input (irc-bot <irc-bot>) raw-line)
(display raw-line)
(newline))
-(define-method (irc-bot-handle-user-join (irc-bot <irc-bot>) user channel)
+(define-method (handle-user-join (irc-bot <irc-bot>) user channel)
'TODO)
-(define-method (irc-bot-handle-user-quit (irc-bot <irc-bot>) user channel)
+(define-method (handle-user-quit (irc-bot <irc-bot>) user channel)
'TODO)