diff --git a/bot b/bot new file mode 100755 index 0000000..4a9653b --- /dev/null +++ b/bot @@ -0,0 +1,9 @@ +#! /bin/sh + +( + # UCSPI wants input on FD 7, and sets $PROTO + [ -n "$PROTO" ] && exec 1>&7 + echo "NICK $1" + echo "USER $1 $1 $1 :I'm a little printf, short and stdout." +) +exec ./dispatch ./irc ./$1-handler diff --git a/infobot b/infobot index e3e46c6..48eb04e 100755 --- a/infobot +++ b/infobot @@ -2,6 +2,8 @@ db=$1; shift text="$1" +cmd=${text%% *} +args=${text#* } lookup () { if ! cdb -q -m $db "$1"; then @@ -16,7 +18,7 @@ lookup () { fi } -case "$text" in +case "$cmd" in !h*) cat <%s\n" ${#key} ${#val} "$key" "$val"; cdb -d $db) | cdb -c $db echo "Okay, $sender, I added a factoid to $key" ;; !r*) - args=$(echo "$text" | cut -d\ -f2-) - key=$(printf "%s" "$args" | sed 's/ -=.*//') - val=$(printf "%s" "$args" | sed 's/.*-= //') + key=${args% -=*} + val=${args#*-= } re=":$key->.*$val" n=$(cdb -d $db | grep -c "$re") if [ $n -gt 0 ]; then @@ -56,8 +55,7 @@ EOF echo "Nothing matched, $sender." fi ;; - !forget\ *) - args=$(echo "$text" | cut -d\ -f2-) + !forget) cdb -d $db | grep -a -F -v ":$args->" | cdb -c $db echo "I removed all factoids from $args" ;; @@ -67,10 +65,10 @@ EOF "") exit 1 ;; - \\*) + ''*) echo "Someone's up to no good!" ;; - \\*) + '\'*) printf "%s\n" "${resp#\\}" ;; :*) diff --git a/whuffie b/whuffie index ab35b46..6415e1d 100755 --- a/whuffie +++ b/whuffie @@ -13,7 +13,7 @@ put () { } adj () { - who=${text%%$1$1} + who=${text%%$1$1*} if [ "$who" = "$sender" ]; then echo "Nice try, $sender." else @@ -28,10 +28,10 @@ case "$text" in amt=$(get "$who") echo "$who has $amt whuffie" ;; - *++) + *++|*++\ *) adj + ;; - *--) + *--|*--\ *) adj - ;; *)