75 lines
2.4 KiB
Markdown
75 lines
2.4 KiB
Markdown
|
---
|
||
|
Title: YAUIB : Yet another useless IRC Bot !
|
||
|
---
|
||
|
|
||
|
After 2 years of... non blogging... I'm back! This time I stopped C\#
|
||
|
(Oh yeah !) and I'm writing a lot of Python! (Oh YEAH !) So to say
|
||
|
HELLO I'll present something useless: My Python IRC Bot. But this
|
||
|
article should be usefull, so I'll speak about the Unix Philosophy: As
|
||
|
Doug McIlroy said:
|
||
|
|
||
|
> This is the Unix philosophy: Write programs that do one thing and do
|
||
|
> it well. Write programs to work together. Write programs to handle
|
||
|
> text streams, because that is a universal interface.
|
||
|
|
||
|
So my Python Bot is wrote like this, only \~200 lines of Python it has
|
||
|
only two interfaces, and they are simple. The first step is to start the
|
||
|
bot:
|
||
|
|
||
|
:::bash
|
||
|
./ircbot.py connect 'server' '#chan' 'nickname'
|
||
|
|
||
|
Ok the bot is connected to a chan, now you have to write some hooks, in
|
||
|
yauib every action raise a hook in the 'hooks' directory, you can write
|
||
|
a hook in any language you want. As a good start point I wrote a default
|
||
|
hook for received messages in hook/pubmsg, simplified like this:
|
||
|
|
||
|
:::bash
|
||
|
#!/bin/sh -f
|
||
|
s_login="$(echo "$1" | sed 's#/#__SLASH__#g')"
|
||
|
s_host="$2"
|
||
|
t_login="$3"
|
||
|
t_host="$4"
|
||
|
shift 4
|
||
|
arguments="$*"
|
||
|
command=$(echo "${1%% *}" | sed 's#/#__SLASH__#g')
|
||
|
if [ -x "commands/$command" ]
|
||
|
then
|
||
|
args=$(echo "$1" | sed 's/^ *[^ ]* *//g' )
|
||
|
commands/$command $args
|
||
|
fi
|
||
|
|
||
|
You should read : "When a message is received, the command in
|
||
|
commands/\[1st word of the message\] is executed." So now you can start
|
||
|
to write simple commands in the commands folder, like the command say:
|
||
|
|
||
|
:::bash
|
||
|
#!/bin/sh
|
||
|
echo "$*"
|
||
|
|
||
|
This command is 17 chars long, and now, without restarting your bot, try
|
||
|
to make it say something on the channel : you> say hello bot>
|
||
|
hello An now you can start to write dauting ones .... like ... display a
|
||
|
readeable calendar of the current month like:
|
||
|
|
||
|
March 2011
|
||
|
Su Mo Tu We Th Fr Sa
|
||
|
1 2 3 4 5
|
||
|
6 7 8 9 10 11 12
|
||
|
13 14 15 16 17 18 19
|
||
|
20 21 22 23 24 25 26
|
||
|
27 28 29 30 31
|
||
|
|
||
|
Ready ?
|
||
|
|
||
|
:::bash
|
||
|
#!/bin/sh
|
||
|
cal
|
||
|
|
||
|
As the binary cal is installed on you machine, (windows user, you can
|
||
|
leave, now), that's all, your're done ... sorry, it just work :p Et
|
||
|
voilà ! You have to keep the UNIX philosophy in mind : - Everything is a
|
||
|
file - Write programs that do one thing and do it well And you'll be
|
||
|
happy developers ! PS: You can download / contribute to Yauib on
|
||
|
https://github.com/JulienPalard/yauib
|