diff options
Diffstat (limited to 'Biz/Bot.scm')
-rwxr-xr-x | Biz/Bot.scm | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/Biz/Bot.scm b/Biz/Bot.scm deleted file mode 100755 index 81e04f0..0000000 --- a/Biz/Bot.scm +++ /dev/null @@ -1,59 +0,0 @@ -;; : out bizbot -;; -;; Usage with ii: -;; -;; tail -f \#biz/out | guile -L $CODEROOT -s Biz/Bot.scm -;; -(define-module (Biz Bot) #:export (main)) - -(import (ice-9 rdelim)) -(import (ice-9 match)) -(import (ice-9 regex)) -(import (ice-9 receive)) -(import (bs core)) -(import (prefix (bs string) string.)) - -(define (log msg) - (display msg (current-error-port))) - -(define (is-command? msg) - (string.prefix? msg "bizbot:")) - -(define (parse-line line) - (if (eof-object? line) - (exit) - (let ([matches (regexp-exec - (make-regexp "<(\\S*)>(.*)" regexp/extended) - (string-drop line 11))]) - (if matches - `(user - ,(match:substring matches 1) - ,(string.lstrip (match:substring matches 2) #\space)) - `(system ,(string-drop line 11)))))) - -(define (dispatch user msg) - (let ([msg (-> msg - (string-drop (string-length "bizbot:")) - (string.lstrip #\space))]) - (cond - ((equal? msg "hi") - (display (fmt "~a: well, hello!" user))) - - (else - (display (fmt "command not understood: ~a" msg)))))) - -(define (main args) - (while #t - (match (parse-line (read-line)) - [('user user msg) - (if (is-command? msg) - (dispatch user msg) - (begin - (log (fmt "user: ~a " user)) - (log (fmt "message: ~a" msg))))] - - [('system msg) - (log (fmt "system: ~a" msg))]) - - (newline) - (force-output))) |