mirror of https://github.com/nealey/irc-bot
Change to bot directories
This commit is contained in:
parent
6a272b0b86
commit
12d1b626a8
19
README
19
README
|
@ -29,18 +29,15 @@ specified program with these as arguments. Also responds to server
|
|||
pings as a convenience.
|
||||
|
||||
|
||||
bot
|
||||
run
|
||||
---
|
||||
|
||||
Given nickname $nick, creates $nick.fifo, logs into IRC as $nick, and
|
||||
passes control to dispatch -> irc -> $nick-handler.
|
||||
[run BOTDIR] will run the bot contained in $BOTDIR. It should contain
|
||||
the following files (see cobalt in the distribution for examples):
|
||||
|
||||
|
||||
cobalt-handler
|
||||
--------------
|
||||
|
||||
Joins initial channels, responds to invite messages, and tries private
|
||||
messages with several different handlers in turn.
|
||||
* connect : program to open connection
|
||||
* login : program to log in to IRC
|
||||
* handler : program to handle IRC messages
|
||||
|
||||
|
||||
firebot
|
||||
|
@ -75,11 +72,11 @@ Putting it all together
|
|||
|
||||
A full chain of programs would look something like
|
||||
|
||||
tcpclient -> bot -> dispatch -> handler
|
||||
tcpclient -> connect-handler -> dispatch -> handler
|
||||
|
||||
and would be invoked as
|
||||
|
||||
$ tcpclient irc.host.org 6667 ./bot cobalt
|
||||
$ tcpclient irc.host.org 6667 ./connect-handler cobalt
|
||||
|
||||
|
||||
Author
|
||||
|
|
22
bot
22
bot
|
@ -1,14 +1,24 @@
|
|||
#! /bin/sh
|
||||
#! /bin/sh -e
|
||||
|
||||
nickname=$1; export nickname
|
||||
botdir=$1
|
||||
d=$(dirname $0)
|
||||
|
||||
nickname=$(cat $botdir/nickname)
|
||||
realname=$(cat $botdir/realname 2>/dev/null || \
|
||||
echo "I'm a little printf, short and stdout.")
|
||||
export nickname realname
|
||||
|
||||
(
|
||||
# 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."
|
||||
if [ -x $botdir/login ]; then
|
||||
$botdir/login
|
||||
else
|
||||
echo "NICK $nickname"
|
||||
echo "USER $nickname $nickname $nickname :$realname"
|
||||
fi
|
||||
)
|
||||
|
||||
mkfifo -m 0600 $1.fifo
|
||||
mkfifo -m 0600 $botdir/fifo
|
||||
|
||||
exec ./dispatch -f $1.fifo ./irc ./$1-handler
|
||||
exec $d/dispatch -f $botdir/fifo $d/irc $botdir/handler
|
||||
|
|
6
cobalt
6
cobalt
|
@ -1,6 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
while true; do
|
||||
tcpclient woozle.org 6667 ./bot cobalt
|
||||
sleep 5
|
||||
done
|
|
@ -0,0 +1,3 @@
|
|||
#! /bin/sh
|
||||
|
||||
exec socat OPENSSL:127.0.0.1:6697,verify=0,keepalive EXEC:"$*"
|
|
@ -8,7 +8,7 @@ text=$1; export text; shift
|
|||
# $* is now args
|
||||
|
||||
# Debug output
|
||||
echo '>>>' ${prefix:+:}$prefix $command "$@" ${text:+:}"$text" 1>&2
|
||||
#echo '>>>' ${prefix:+:}$prefix $command "$@" ${text:+:}"$text" 1>&2
|
||||
|
||||
raw () {
|
||||
fmt="\007$1\n"; shift
|
||||
|
@ -23,26 +23,27 @@ out=$(tempfile)
|
|||
|
||||
case $command in
|
||||
001)
|
||||
for chan in ${CHANNELS:-#cobalt}; do
|
||||
join $chan
|
||||
for i in $botdir/channels/*; do
|
||||
join $(basename $i)
|
||||
done
|
||||
;;
|
||||
433)
|
||||
raw "NICK bottimus"
|
||||
raw "NICK bot_$(shuf -c 1 /usr/share/dict/words)"
|
||||
;;
|
||||
PRIVMSG)
|
||||
case "$forum" in
|
||||
\#*)
|
||||
./firebot "$text" || \
|
||||
./whuffie woozle/whuffie.cdb "$text" || \
|
||||
./infobot woozle/factoids.cdb "$text"
|
||||
./notes woozle/notes "$text"
|
||||
$ircdir/firebot "$text" || \
|
||||
$ircdir/whuffie $botdir/whuffie.cdb "$text" || \
|
||||
$ircdir/infobot $botdir/factoids.cdb "$text"
|
||||
;;
|
||||
esac
|
||||
$ircdir/notes $botdir/notes "$text"
|
||||
;;
|
||||
INVITE)
|
||||
join "$forum"
|
||||
raw "PRIVMSG %s :Thanks for the invitation, %s." "$forum" "$sender"
|
||||
touch $botdir/channels/$forum
|
||||
;;
|
||||
esac > $out
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#! /bin/sh
|
||||
|
||||
echo "NICK cobalt"
|
||||
echo "USER cobalt cobalt cobalt :I'm a little printf, short and stdout."
|
|
@ -0,0 +1,20 @@
|
|||
#! /bin/sh -e
|
||||
|
||||
botdir=$1
|
||||
ircdir=$(dirname $0)
|
||||
export botdir ircdir
|
||||
|
||||
# UCSPI wants communication on fd7
|
||||
if [ -n "$PROTO" ]; then
|
||||
fd=7
|
||||
else
|
||||
fd=1
|
||||
fi
|
||||
|
||||
$botdir/login 1>& $fd
|
||||
|
||||
if [ -p $botdir/fifo ]; then
|
||||
fifo="-f $botdir/fifo"
|
||||
fi
|
||||
|
||||
exec $ircdir/dispatch $fifo $ircdir/irc $botdir/handler
|
2
infobot
2
infobot
|
@ -3,6 +3,8 @@
|
|||
db=$1; shift
|
||||
text="$1"
|
||||
|
||||
[ -f $db ] || echo | cdb -c $db
|
||||
|
||||
lookup () {
|
||||
if ! cdb -q -m $db "$1"; then
|
||||
t="$1"
|
||||
|
|
Loading…
Reference in New Issue