Thursday, July 26, 2007

Igobot

It's been a while since we've had a good (and fun) bot at #ubuntu-ph. Changes made at Spunge affected butiki, a bot by JM Ibanez based on Supybot, and thus rendered it, well, useless. I liked its Google search and RSS abilities the most, but it's been over 4(?) months since we last saw butiki.
Zakame inspired me to create a bot after he made Morphlogger from scratch using Perl. I wanted my bot to have the same functionalities as butiki so I downloaded Eggdrop and Supybot and tried to figure out how to make them work.
Well, Eggdrop proved difficult for me. I made sure that everything was configured but I just can't make it work. Needless to say, I gave up.
Then came Supybot, woo-hoo. The wizard was very friendly and the plugins abundant (that's when I figured out that butiki is a Supybot). It took me three retries (all three worked, just wanted to familiarize myself with the wizard and the three bots each with different plugins).

Igobot has all the plugins Supybot came with, the only plugin I can't configure is Google, which required a Web Services Certificate. Too bad they closed down WS Cert registration since they replaced it with Web APIS from Google Code.

Kankana-ey has every plugins except Google, Factoids, Games, and MoobotFactoids. Again, I'm not satisfied, that's why I created another.

Igorot-bot, my third creation, has the plugins I know I'll personally need. Admin, Channel, ChannelLogger, ChannelStats, Config, Dict, Factoids, Games, Herald, Internet, Karma, Math, Misc, Note, Owner, Praise, RSS, Seen, Todo, User, Utilities, and Web. It's lean and does it's job well.

After a few hours configuring and testing Igorot-bot on my locally-hosted Dancer IRC server, I decided - with a smile on my face - that , and hopefully, what #Ubuntu-PH needed. I ran it and tested it out. Nice!



After 2 hours, I started to have doubts as to whether Igorot-bot is a nice name for an IRC bot. I first changed it to Ibaloi, and then Kiangan, and finally chose Igobot... the first bot-name I came up with. It represents my heritage and my people's pride. It will suffice, at least for now. If not, I'll just add another plugin and optimize its code.

Another dilemma to tackle, I regularly boot from Xubuntu Gutsy to Kubuntu Feisty to Kubuntu Gutsy... I needed a server. My laptop, which I've been using as a basic web/file/smtp/pop3 server should fit my needs, _but_ it runs hot and I have to turn it off for 2 hours every day to cool it down. As for my P3 and P1 machines, they're too noisy and like to keep them in an 'off' state until I need them for testing. I should invest in a liquid-cooling solution or a bigger fan.

The only thing I can think of right now is a shell account from servers willing to host benign IRC bots. I'll be spending the next few hours looking for one.

And for you "#Ubuntu-PH-ers", here's a few commands you can use with igobot.

List Available Plugins: !list
List Plugin's Functionality: !list <plugin>

Registration: !register <name> <password>
Identify Yourself: /msg igobot identify <name> <password>
Channel Statistics: !channelstats
User Statistics: !stats <name>

Dictionary: !dict <word>

Learn Facts: !learn <key> as <value>
Fact: !<key>
Forget Fact: !forget <key>
What Is: !whatis <key>

Herald:
!herald add <nick> <message>
Remove Herald: !herald remove <nick>

Calculate: !calc <math expression>
Convert: !convert <number> <unit> to <another unit>
Set Unit: !unit <type>

Tell: !tell <nick> <message>
Send Note: !send <recipient> <message>
View Unread Notes: !note list
View Note: !note <note id>

Add Praise: !praise add <text>
Give Praise: !praise <praise id> <nick> for <reason>

Add RSS: !rss add <name of service> <feed url>
View Announcement: !rss announce
Announce Service to current channel: !rss announce <name of service>
Get RSS Feed: !rss rss <name of service or Feed URL> <number of feeds>
Remove RSS: !rss remove <name of service>

Seen: !seen <nick>

Add Todo: !todo add <text>
Add Todo with Priority: !todo add --priority=<number> <text>
Remove Todo: !todo remove <task id>
Set Todo Priority: !setpriority <task id> <number>
View Todo List: !todo
View Specific Task: !todo <task id>

Eightball Game: !eightball <question>
Coin Toss Game: !coin
Russian Roulette: !roulette
Dice Game: !dice <number of dice>d<number of sides per dice>
Monologue: !monologue

And of course, if you want details, you can visit Supybot's plugins documentation page.

Blogged with Flock