Discorded*Gummy
As you may know, I've been working on Gummybot for a long time. He's monolitic, he's kludgey, and he's built to support IRC, which itself is ancient and kludgey. But much like IRC, Gummybot serves his intended purpose (teaching me PERL and filling in for the poor, dead owlbot) quite well.
Yet time moves on, and rather by accident, so to has the ATG chat. A side effect of me trying to make my IRC experience more productive and less awful was that I used a prefabed bridge bot (which is it's OWN set of problems, believe you me) to connect the ATG to a Discord server. Discord, if you haven't heard of it, is a text and chat video service hosted on the cloud. This means I can't kick it when it breaks without getting a tresspassing charge, but in exchange, it allows for push notifications to mobile and desktop clients, and it also maintains a log of all messages that are sent and organized them for review if you look away for a bit.
As a result of me building this bridge though, just about everyone moved over to the Discord end of that bridge. Though this is great for me since it means I can use Discord specific features to chat with most of them. However, this is not so great for poor Gummy. You see, the downside to the bridge is that it looks like a single user on both the IRC and Discord side. So if three people talk on Discord, on the IRC side, the nick is always the bridge's. The message body includes the end user, but anyone/anything that depends on the nick to identify the speaker has a problem. This includes some auto-reply tools, and obviously Gummy.
Well, I could retrofit Gummy to detect that the bridge is talking, and then attempt to rework the entire messaging system so that it's compatible with non-IRC nicknames (a huge undertaking with relatively little skill payout,) OR I could pick a new language (node.js) and a new communications library (Discord.js,) and re-implement the most critical functions that are nick-specific there instead.
And from that I annouce Discorded*Gummy! He's actually on his second revision already; the first was made months ago to bring the most critical function online: memos and nick-linking. Honestly what I've got currently doesn't appreciably change that. However, what it does do is something that was needed back at the very beginning with the original Gummybot that IRSSI's plugin system didn't allow for trivially: modularization.
Using an event handler, I've put together a set of tools that will allow me to add and remove individual modules without too much hassle. The advantage of this is that I don't have to have source files with 2000+ lines of code in them that don't have anything to do with each other. This will make continued development on the new Gummybot infinitely more plesant.








