From bmastenbrook at common-lisp.net Sun Feb 1 14:11:56 2004 From: bmastenbrook at common-lisp.net (Brian Mastenbrook) Date: Sun, 01 Feb 2004 09:11:56 -0500 Subject: [Cl-irc-cvs] CVS update: cl-irc/example/clhs.lisp cl-irc/example/cliki.lisp cl-irc/example/eliza-rules.lisp Message-ID: Update of /project/cl-irc/cvsroot/cl-irc/example In directory common-lisp.net:/home/bmastenbrook/cl-irc/example Modified Files: clhs.lisp cliki.lisp eliza-rules.lisp Log Message: package cleanups, slight changes from current Date: Sun Feb 1 09:11:56 2004 Author: bmastenbrook Index: cl-irc/example/clhs.lisp diff -u cl-irc/example/clhs.lisp:1.3 cl-irc/example/clhs.lisp:1.4 --- cl-irc/example/clhs.lisp:1.3 Thu Jan 22 15:51:16 2004 +++ cl-irc/example/clhs.lisp Sun Feb 1 09:11:56 2004 @@ -1,4 +1,4 @@ -;;;; $Id: clhs.lisp,v 1.3 2004/01/22 20:51:16 bmastenbrook Exp $ +;;;; $Id: clhs.lisp,v 1.4 2004/02/01 14:11:56 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/example/clhs.lisp,v $ ;;;; clhs.lisp - an example IRC bot for cl-irc @@ -16,7 +16,7 @@ ;;; invoke (clhs::start-clhs-bot "desirednickname" "desiredserver" ;;; "#channel1" "#channel2" "#channel3" ...) -(defpackage :clhs (:use :common-lisp :irc)) +(defpackage :clhs (:use :common-lisp :irc) (:export :start-clhs-bot)) (in-package :clhs) ;;; CLHS. This will be the default lookup. Index: cl-irc/example/cliki.lisp diff -u cl-irc/example/cliki.lisp:1.3 cl-irc/example/cliki.lisp:1.4 --- cl-irc/example/cliki.lisp:1.3 Sat Jan 17 14:19:55 2004 +++ cl-irc/example/cliki.lisp Sun Feb 1 09:11:56 2004 @@ -1,4 +1,4 @@ -;;;; $Id: cliki.lisp,v 1.3 2004/01/17 19:19:55 bmastenbrook Exp $ +;;;; $Id: cliki.lisp,v 1.4 2004/02/01 14:11:56 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/example/cliki.lisp,v $ ;;;; cliki.lisp - CLiki as an infobot; only works on SBCL. @@ -8,7 +8,8 @@ ;;; "desiredserver" "#channel1" "#channel2" "#channel3" ...) (defpackage :cliki (:use :common-lisp :irc :sb-bsd-sockets :cl-ppcre) - (:export :start-cliki-bot)) + (:export :start-cliki-bot :*cliki-nickserv-password* + :*respond-to-general-hellos*)) (in-package :cliki) (defvar *small-definitions* nil) @@ -133,7 +134,7 @@ (symbol-macrolet ((it ,test)) ,else)))) -(defparameter *cliki-attention-prefix* "") +(defparameter *cliki-attention-prefix* "^minion[,:]\\s+") (defparameter *cliki-bot-help* "The minion bot supplies small definitions and performs lookups on CLiki. To use it, try ``minion: term?''. To add a term for IRC, try saying ``minion: add \"term\" as: definition'' or ``minion: alias \"term\" as: term''; otherwise, edit the corresponding CLiki page.") @@ -170,23 +171,23 @@ )))))) (defun valid-cliki-message (message) - (eql (search *cliki-attention-prefix* (trailing-argument message) :test #'char-equal) 0)) + (scan *cliki-attention-prefix* (trailing-argument message))) -(defparameter *respond-to-hello* nil) +(defvar *respond-to-general-hellos* nil) (defun anybody-here (string) - (or (scan "(?i)(anybody|aynbody|any body|anyone|aynone|any one|ne1|any1|n e 1|ne 1) (here|awake|there|home|know).*\\?*" string) - (scan "^(?i)\\s*(hello|hi|yo)\\s*(channel|room|people|ppl|all|peeps|)\\s*$" string))) + (if *respond-to-general-hellos* + (or (scan "(?i)(anybody|aynbody|any body|anyone|aynone|any one|ne1|any1|n e 1|ne 1) (here|awake|there|home|know).*\\?*" string) + (scan "^(?i)\\s*(hello|hi|yo)\\s*(channel|room|people|ppl|all|peeps|)\\s*$" string)))) (defun msg-hook (message) - (if (string-equal (first (arguments message)) *cliki-nickname*) - (if (valid-cliki-message message) - (privmsg *cliki-connection* (source message) (cliki-lookup (subseq (trailing-argument message) (length *cliki-attention-prefix*)))) - (privmsg *cliki-connection* (source message) (cliki-lookup (trailing-argument message)))) + (let ((respond-to (if (string-equal (first (arguments message)) *cliki-nickname*) (source message) (first (arguments message))))) (if (valid-cliki-message message) - (privmsg *cliki-connection* (first (arguments message)) (cliki-lookup (subseq (trailing-argument message) (length *cliki-attention-prefix*)))) - (if (and *respond-to-hello* (anybody-here (trailing-argument message))) - (privmsg *cliki-connection* (first (arguments message)) (format nil "~A: hello." (source message))))))) + (privmsg *cliki-connection* respond-to (cliki-lookup (regex-replace *cliki-attention-prefix* (trailing-argument message) ""))) + (if (string-equal (first (arguments message)) *cliki-nickname*) + (privmsg *cliki-connection* respond-to (cliki-lookup (trailing-argument message))) + (if (anybody-here (trailing-argument message)) + (privmsg *cliki-connection* (first (arguments message)) (format nil "~A: hello." (source message)))))))) (defvar *cliki-nickserv-password* "") @@ -198,7 +199,6 @@ (defun start-cliki-bot (nick server &rest channels) (read-small-definitions) (setf *cliki-nickname* nick) - (setf *cliki-attention-prefix* (format nil "~A: " nick)) (setf *cliki-connection* (connect :nickname *cliki-nickname* :server server)) (mapcar #'(lambda (channel) (join *cliki-connection* channel)) channels) (add-hook *cliki-connection* 'irc::irc-privmsg-message 'msg-hook) Index: cl-irc/example/eliza-rules.lisp diff -u cl-irc/example/eliza-rules.lisp:1.1 cl-irc/example/eliza-rules.lisp:1.2 --- cl-irc/example/eliza-rules.lisp:1.1 Sat Jan 17 14:19:55 2004 +++ cl-irc/example/eliza-rules.lisp Sun Feb 1 09:11:56 2004 @@ -168,6 +168,12 @@ ((what (?* ?x) your (?* ?y) about chandler (?* ?z)) (He never tells me anything - what ?x your ?y about my creator ?z)) + ((who (?* ?x) is chandler (?* ?y)) + (chandler is my master)) + + ((who (?* ?x) your master (?* ?y)) + (chandler is my master)) + ((what (?* ?x) you (?* ?y) about (?* ?z)) (I know nothing about ?z - what ?x you ?y about ?z)) ((what (?* ?x) your (?* ?y) about (?* ?z)) @@ -392,8 +398,6 @@ (((?* ?x)) (you speak nonsense) - (ich kann kein englisch) - (whoop! my pants are on fire!) - (look! behind you! superman!) - (watch out or |I'll| capture you in a closure) - (there must be methods of torture for people like you)))) \ No newline at end of file + (does torturing a poor bot with things beyond its comprehension please you?) + (please stop playing with |me...| I am not a toy) + (watch |out,| |you'll| make Krystof angry)))) \ No newline at end of file From krosenberg at common-lisp.net Sat Feb 7 23:32:43 2004 From: krosenberg at common-lisp.net (Kevin Rosenberg) Date: Sat, 07 Feb 2004 18:32:43 -0500 Subject: [Cl-irc-cvs] CVS update: cl-irc/command.lisp Message-ID: Update of /project/cl-irc/cvsroot/cl-irc In directory common-lisp.net:/tmp/cvs-serv7367 Modified Files: command.lisp Log Message: add patch from cl-irc-devel 2004-02-07 Date: Sat Feb 7 18:32:43 2004 Author: krosenberg Index: cl-irc/command.lisp diff -u cl-irc/command.lisp:1.1.1.1 cl-irc/command.lisp:1.2 --- cl-irc/command.lisp:1.1.1.1 Mon Jan 5 09:13:03 2004 +++ cl-irc/command.lisp Sat Feb 7 18:32:43 2004 @@ -1,4 +1,4 @@ -;;;; $Id: command.lisp,v 1.1.1.1 2004/01/05 14:13:03 eenge Exp $ +;;;; $Id: command.lisp,v 1.2 2004/02/07 23:32:43 krosenberg Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/command.lisp,v $ ;;;; See LICENSE for licensing information. @@ -82,6 +82,9 @@ (remove-all-channels connection) (remove-all-users connection) (send-irc-message connection :quit message) + #+(and sbcl (not sb-thread)) + (sb-sys:invalidate-descriptor (sb-bsd-sockets:socket-file-descriptor + (server-socket connection))) (close (server-stream connection))) (defmethod squit ((connection connection) (server string) (comment string))