From 39fce509440e467188270625bf728b1c57ef9e26 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Mon, 23 Nov 2015 16:45:36 -0600 Subject: [PATCH] Make IRC bot easier to add commands to --- demos/ircbot.scm | 34 ++++++++++++++++++++++++++-------- eightsync/systems/irc.scm | 5 +++-- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/demos/ircbot.scm b/demos/ircbot.scm index eec40fa..0aef0d5 100755 --- a/demos/ircbot.scm +++ b/demos/ircbot.scm @@ -19,15 +19,33 @@ ;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ;; 02110-1301 USA -(use-modules (eightsync systems irc)) +(use-modules (eightsync systems irc) + (eightsync agenda) + (ice-9 match)) (define (handle-message socket my-name speaker - channel-name message is-action) - (if is-action - (format #t "~a emoted ~s in channel ~a\n" - speaker message channel-name) - (format #t "~a said ~s in channel ~a\n" - speaker message channel-name))) + channel message is-action) + (define (looks-like-me? str) + (or (equal? str my-name) + (equal? str (string-concatenate (list my-name ":"))))) + (match (string-split message #\space) + (((? looks-like-me? _) action action-args ...) + (match action + ("botsnack" + (irc-format socket "PRIVMSG ~a :Yippie! *does a dance!*" channel)) + ;; Add yours here + (_ + (irc-format socket "PRIVMSG ~a :*stupid puppy look*" channel)))) + (_ + (cond + (is-action + (format #t "~a emoted ~s in channel ~a\n" + speaker message channel)) + (else + (format #t "~a said ~s in channel ~a\n" + speaker message channel)))))) (define main - (make-irc-bot-cli)) + (make-irc-bot-cli (make-handle-line + #:handle-privmsg (wrap-apply handle-message)))) + diff --git a/eightsync/systems/irc.scm b/eightsync/systems/irc.scm index bf450b9..ac9c4e6 100755 --- a/eightsync/systems/irc.scm +++ b/eightsync/systems/irc.scm @@ -187,7 +187,7 @@ (string-join (cons first-word rest-message) " ") #f))))) -(define (echo-back-message my-name speaker +(define (echo-back-message socket my-name speaker channel-name message is-action) (if is-action (format #t "~a emoted ~s in channel ~a\n" @@ -208,7 +208,8 @@ (receive (channel-name message is-action) (condense-privmsg-line (irc-line-params parsed-line)) (let ((username (irc-line-username parsed-line))) - (handle-privmsg my-username username channel-name message is-action)))) + (handle-privmsg socket my-username username + channel-name message is-action)))) (_ (display line) (newline))))) -- 2.31.1