11 Jan 2015

KyBot

First post in a while, huh. In that case, I'll just preface the main topic of this post with a quick summary of the past few months:

I am now in my 4th year of uni (integrated masters year), doing Social Applications Development as my option alongside a research project using reddit user data for game content generation and an industrial project designing part of a virtual blacksmithing experience for a local authentic blacksmith! It's been.. busy, hence the lack of posts.

However, I have been working on a few little side-projects. The main one being a VPS hosted by DigitalOcean which I use to run an IRC bouncer and self-coded bot, KyBot. I have another program which simulates an IRC server as an interface for steam chat, but it's a bit temperamental.

Anyway, on to KyBot. The daft little thing was my second attempt to create an IRC bot (the first being one called WikiWorder which scraped TvTropes, no mean feat giving the site's lack of consistent formatting). KyBot has expanded from a very simple program into a modular bot with a large number of pretty diverse functions, including:

Baka - Recites one of a number of stereotypical tsundere lines. An essential feature for any self-respecting IRC bot.

Cheesoid - Says either CHEESE or PETRIL, selected at random. Inspired by this Mitchell & Webb sketch.

DRYH - Automated dice rolls for the RPG Don't Rest Your Head, since although the game system is very simple, determining conflict results is surprisingly complex

Lightning - The latest function, calls down fiery wrath upon victims, with effect text adapted straight from the Dark Heresy rulebook.
"Kylar uses the lightning button on Someone, vapourising their left leg and forcing them to the ground, burning profusely as they meet their gruesome death. RIP in peace, Someone."
Markov - Perhaps KyBot's most amusing function. Implements a Markov Text Generator, a la King James Programming using several months of IRC logs as source material.

Reddit - Currently not functional due to difficulties with mono (since my VPS is running Ubuntu and KyBot is written in C#). Is supposed to give information on reddit users and subreddits.

Retributions - Calls down the wrath of one of Snoonet's resident bots (specifically, EDI) on anyone who uses the action ability to 'stab' someone.

Strem - Originally designed to give users information about the Yogscast Christmas livestreams, since my primary IRC hangout is Snoonet's #Yogscast. Since the livestreams are over, Strem now alerts channel members when any of the Yogscast-affiliated channels go live.

Swedish - Translates any text into perfect Swedish, as per the translation algorithm presented in this Haskell tutorial.

TIME - Uses the WolframAlpha API to give the current time a given location. Useful on an IRC channel with members from all over the world.

Trope - A much-reworked version of WikiWorder which is now pretty reliable, despite the aforementioned formatting issues.

In addition to the actual functions, KyBot also includes a few functions for enabling and disabling the various function modules at runtime, meaning I don't have to recompile and reupload it every time we need a function turned on or off. Unfortunately I still need to do so when I want to add or change a function, since loading functions from DLLs is a bit overkill for such a small program.

No comments: