(let ((url-alist '()) (url-list-file "phlog_list.txt")) (import matchable srfi-1 (chicken file) (chicken string) (chicken pretty-print)) (if (file-exists? url-list-file) (let ((res (with-input-from-file url-list-file read))) (if (pair? res) (set! url-alist res)))) (define (save-url-list) (with-output-to-file url-list-file (lambda () (pretty-print url-alist)))) (define (set-url nick url) (let ((nick-symb (string->symbol nick))) (set! url-alist (alist-cons nick-symb url (alist-delete nick-symb url-alist))) (save-url-list))) (define (get-url nick) (let* ((nick-symb (string->symbol nick)) (record (assoc nick-symb url-alist))) (and record (cdr record)))) (define (clear-url nick) (let* ((nick-symb (string->symbol nick))) (set! url-alist (alist-delete nick-symb url-alist)) (save-url-list))) (lambda (source args privmsg) (match (string-split (car args)) (("hello") (privmsg source "hello yourself!")) ((",seturl" url) (set-url source url) (privmsg source "updated url")) ((",geturl" nick) (print "in geturl") (privmsg source (let ((url (get-url nick))) (if url (conc "URL for " nick ": " url) (conc "No URL for " nick " in database"))))) ((",rmurl") (clear-url source) (privmsg source "cleared url")) ((",list") (if (null? url-alist) (privmsg source "No registered phlog/gemlog/blog URLs. :(") (begin (privmsg source "Current URL list:") (for-each (lambda (record) (let ((nick (symbol->string (car record))) (url (cdr record))) (privmsg source (conc " " nick ": " url)))) url-alist)))) ((",announce") (let ((url (get-url source))) (if url (privmsg "#phloggersgarage" (conc source " has published a new post at " url "!")) (privmsg source "Register your *log URL first using ,seturl .")))) (_ (privmsg source "Hi! Here are the valid pgbot commands:") (privmsg source " ,seturl [url] : Save your *log URL for others to see") (privmsg source " ,rmurl : Remove your *log URL if one is saved.") (privmsg source " ,geturl [nick] : Retrieve the *log URL belonging to [nick].") (privmsg source " ,list : List all currently stored *log URLs.") (privmsg source " ,accounce : Announce a new *log entry to #phloggersgarage! Huzzah!"))))) .