http://qs1969.pair.com?node_id=132484

So you've been through all the PM chat clients, and you don't like Java, or you don't want to use a browser, or you can't install a CGI application on your machine. Twitching Monks Software is proud to announce Robomonk, a perlmonks.org to IRC bridging system. It slices, it dices, it Julie-Anns... Mmmm... Julie-Ann...

OK, enough with all the fanfare, what the heck can it do?

Well, for only $19.95 a month... But seriously, folks. Robomonk connects the chatterbox to an IRC channel. From within the IRC channel, as chatterbox messages post, they display in the IRC window. Advantage? Multiple people connecting to that IRC channel reduce the PM server load, since a single fetch serves everyone. You can also kibitz about what other people say in the chatterbox behind their backs, providing hours of entertainment.

That's all it does? You must be kidding...

Heck no! You can also post messages into the chatterbox, manage your private messages, be notified of XP and reputation changes, notified when new nodes or users appear, see what users are in the 'Other Users' box, be alerted when a user in your user watch list starts accessing the monastery, check the home node info of a user, and several other functions.

With optional modules installed, there is a full function RPN integer calculator, notification of new SlashDot headline, notification when new mail appears in your mailbox (*nix only, requires client), check the weather on my boat, or anything else you want to write a module to do. The possibilities are limited only by your coding abilities.

Geez, how's it do all that?

Software, son, software, I say! </Foghorn Leghorn> Actually, Net::IRC, and a helluva lot of Perl code. I started this over a year ago, and got enough working so that I lost interest. Every so often, I would poke at it, and add a little something. About 2 months ago, I went on a coding spree, and added a lot of additional (and questionably useful) functionality, put it all in CVS, started regular change logs, and was getting it ready to release, er, unleash on helpless netizens.

Can I see it work?

Sure! Point your IRC client at irc.slashnet.org, and join the #robomonkdemo channel. Assuming that nothing has gone horribly, horribly wrong, you should see the current chatterbox content as new messages come in. You won't be able to post to the chatterbox until you log in, however. To do that, you open a /query window to 'RoboMonkDemo', and 'login <pm_username> <pm_password>'. Commands in the #robomonkdemo channel require prefixing them with the 'bots name, i.e. 'robomonkdemo ?'. In the /query window the prefix is optional. There is a (mostly accurate) help page here. The current change log is here.

Eeek! Login? Is my password safe?

It is with me. Like any third party software that requires you to use your PM username/password, it *could* be compromised. I promise to you that your username/password is safe on my system, since I'm the only user. Should I ever see it (in the case of debugging or somesuch), I will pretend I didn't. To be honest, I could just as easily run some JavaScript and get you to visit my home node, or any number of nasty things. Frankly, I have better things to do than mess with your account, even if you should happen to have more XP than me.

I'll run anything! What's it take to do that?

Basically, any network connected box. Robomonk acts as a IRC client. It periodically retrieves various XML pages from http://perlmonks.org, makes some decisions, and sends data as a /msg to where ever is appropriate. There's nothing particularly rocket-sciency about it. Having a reliable network connection is the major reprequisite, especially if you have other users you want to share with.

I wanna add XYZ functionality. I assume I can do that?

Sure. I've tried to write the core code with hook points. Folks can add code as modules, that register themselves with various hook points. For example, if a new chatterbox message comes in, and you have a handler registered with that hook point, you can scan the text for your name, and send a pager message to yourself that someone may be talking about you. The basic idea is that functionality that other operators may not want can be added or deleted without affecting the core code. It also allows me to make changes without (generally) worrying if the impact will affect the existing modules.

I wanna look at the code!

Cool! The latest release will be located at http://www.tinymicros.com/robomonk/robomonk.tar.gz. I may even figure out how to make it available under anonymous CVS access one day.

I looked at your code, I nearly barfed.

Hey, no one is making you run this. Yea, it's not OO. There's plenty of code that could be reduced to common subroutines. Knock yourself out! This program was never 'designed', per se. It evolved from a need of getting annoyed between hanging out in IRC and switching to a browser periodically to see if there were new chatterbox messages. Being of bored mind and a caffeine laden body, I decided to solve it my way. As I thought of things, I added them. The biggest problem with subs when designing like that is you change something here to support this function, you break it for everything else. I figure I can always go back later if it really matters. As it is, I can make changes very quickly and test ideas without breaking code that's tried and true.

You wrote all this crap youself?

Well, ar0n wrote 2 lines, I think. Actually, he did a lot more. He wrote the code to use a XML based configuration file, and added the user filters. His code was little prettier, but I re-munged it to match the rest of the code style. Although it's a well known fact that everything is ar0ns fault, this really isn't. Don't hurt him.

Gah! Your documentation sucks!

Yup.

Hrmph. Does it do anything else that might be mis-construed as 'neat'?

I think so! One of the modules allows me to check the weather on the boat without actually leaning over and looking at the weather station. Another modules checks for the donations to kudras WDF. Another module let's me know that mail has arrived. And a module that I'm working on (if "real work" would quit interfering) is a cron-based reminder system, that will post reminders into the /query window. Mostly so Masem won't have to remind me that Samurai Jack is on in 10 minutes.

Surely this code has problems...

It's not perfect, but most of what it's lacking is features I would like to add. The README and TODO files contain some notes about things I would like to do, and problems that I'm aware of. As of this moment, one instance of Robomonk has been running for 10 days, 4 hours, 23 minutes and 17 seconds. Even when SlashNet charfs a hairball and chanserv goes nuts punting people, it reconnects. No, it's not perfect, and there are a few known cases where Bad Things(tm) happen, but hey, that's what /etc/inittab is for, right?

Is there anything else I should know?

Never stick your finger into an electrical outlet. Avoid staring at the sun. Never peruse the alt.hamster.hamster.hamster.ducttape newsgroup. Oh! You mean about Robomonk. Well, probably. And as I think of them, I'll put them in the files in the tarball. But basically I've mentioned everything I consider of interest.

You're nothing but a shameless XP whore, and I bet that's only reason you wrote this!

And your point would be exactly what?

--Chris

e-mail jcwren

Replies are listed 'Best First'.
Re: Robomonk - An IRC to PM Bridge
by converter (Priest) on Dec 18, 2001 at 15:01 UTC

    For the benefit of BitchX users, I've placed a fragment of BitchX code to reformat RoboMonk CB msgs differently from regular users' messages at:

    http://dalnet-perl.org/converter/robomonk-bx-on.txt

    The output looks similar to this:

    [02:19] [ CB ] converter: what am i doing awake at this hour?

    update: Wouldn't it be nice if BitchX were, you know, documented?

    At any rate, the 'on' snaglet I posted has a slight annoyance factor: it interprets %<character or digit> as a display attribute sequence (the heads of hash definitions in msgs are eaten up and cause the fg and/or bg color to be changed). I've been toying with a solution, but the documentation is useless. I'll include a fix as soon as I figure it out. In the meantime, if you know more about bx scripting than I do and know how to fix the problem, please share.

      update: Wouldn't it be nice if BitchX were, you know, documented?

      /ehelp is the best they offer, besides grepping the source. ):

      strfry(reality)
Re: Robomonk - An IRC to PM Bridge
by vaevictus (Pilgrim) on Nov 03, 2006 at 13:46 UTC
    I think the demo is down. Though it doesn't appear to be tricky to acquire the code and put it into your own server, I'll probably try this later. However, a nice variation along this line, rather than using an IRC (or jabber/im/etc. ) bot, would be to implement an IRCD bridge... (like bitlbee is an ircd). Granted it still requires the user to supply a u/p for PM through a 3rd party...

      I spoke with jcwren, and he indicated that the Robomonks demo is indeed down and is not likely to be restarted.

      However, he was open to the idea of someone with a perlmonk.org account running a Robomonk instance there, and having it connect to the perlmonk.org IRC server.

      We're building the house of the future together.
      Heck, if someone wrapped robomonk in a gaim plugin, (s)he could just be installed into bitlbee and you could have the monk chatter right there with your ICQ contacts
        ++ for the thought, but I'm concerned that it might be a *LOT* of chatter not directly sent to me... OTOH, i'm not sure which info would be available to us. If we could get a working userlist... it could be very nice. <:)
        gaim can do irc. bitlbee is based on irc. so why wrap gaim around irc around bitlbee around irc?

        --
        "WHAT CAN THE HARVEST HOPE FOR IF NOT THE CARE OF THE REAPER MAN"
        -- Terry Pratchett, "Reaper Man"

Re: Robomonk - An IRC to PM Bridge
by Wassercrats (Initiate) on Aug 12, 2004 at 05:02 UTC
    Point your IRC client at irc.slashnet.org, and join the #robomonkdemo channel. Assuming that nothing has gone horribly, horribly wrong, you should see the current chatterbox content as new messages come in.

    Is this out of date? It didn't work in Opera's IRC client, but Robomonk is still mentioned under "Interfaces for other protocols" in Other CB Clients.

    I intend to download a free IRC client that allows Perl scripting (Gaim), and I'd like to write a plug-in to scrape the chatter of various rooms. I was hoping Perlmonks CB could be one of them.