Skip to content
This repository has been archived by the owner on Sep 2, 2021. It is now read-only.

Introduction

Gareth Coles edited this page Jan 9, 2014 · 4 revisions

Chat bots

By definition, a bot is a program that connects to a chat network, as if it were another user, and does automated tasks or responds to commands from users on that chat network. Bots are very common, ranging from the for-fun learning markov-chain bots to the more useful URL title parsers and bridge bots.

During your life on the Internet, you'll probably come into contact with a fairly large number of these bots. Whether malicious or helpful, most of them have a huge amount of effort put into them. There are two huge limitations with most bots, however..

  • Lack of modularity and extensibility
  • Limitation to one chat network or one type of protocol

Ultros challenges both of these problems, and we hope that it does it sufficiently well for most people's needs.

So what is this "Ultros," anyway?

Ultros is a bot. Written in Python and using the Twisted library, it was originally written to support IRC with a simple featureset and plugin system. Since it was started over two years ago, its uses have changed, the simple-minded plugin system has become messy and hard to maintain, and overall the code has become pretty inefficient. On top of this, developers were trying to add features that the plugin system was never designed to support.

This project aims to rewrite Ultros from scratch, with a proper plugin, event and command-handling system and support for multiple protocols out of the box. It does this by being highly modular, and it has that in spades.

The advantage of this modularity is that Ultros is very easy to extend to do exactly what you want it to do - protocols extend Twisted's IProtocol, and therefore can do virtually anything you need them to do, and plugins are simplistic and easy to work with. Additionally, if you don't like to install too many requirements or Python modules, you can simply install the modules you need - as you need them. There's no need to install everything at once!

Out of the box, Ultros supports two protocols: Mumble and IRC. All protocols can be used on their own, or alongside any number of other protocols. Plugins should be written to support this fully as well, and there are plenty of helper functions for developers to use in that regard. More information on this is available in the developer documentation.

Why should I use this instead of an Eggdrop, Supybot or mIRC bot?

There are several good reasons for not using solutions such as the above..

  • While extremely popular, Eggdrop is also very old and not suited to modern IRC. It can be extended with both C and Tcl, but these are quite complicated languages, and while they are known to be more efficient than Python, you will lose a lot of time if you're developing your own plugins. It's also designed for Linux, and therefore is a chore to use on Windows.
  • Supybot (Link dead) was once an extremely capable bot for IRC. Unfortunately, development appears to have halted on it, and while there are forks, they aren't uniformly maintained and plugin support is a bit patchy as a result.
  • While it's true that mIRC can be used as a bot, it's really not up to the job. mIRC's scripting language was designed to make it possible to customize the client and make it your own - trying to write a bot in this language creates non-extensible and very messy code, which is hard to maintain. It's also Windows-only.
  • None of these solutions support anything but IRC. Additionally, some of these solutions don't have proper or timely support, or use project management tools that aren't user-friendly to those looking to fork code or issue a ticket. In using GitHub for this project, we can provide a code browser, documentation and support tools that most people are already used to, and which don't have a steep learning curve.

Alright, I suppose I'll give this thing a try, despite how arrogant the introduction seems. Where do I start?

Continue onto the Requirements page, and begin installing the things you'll need.

Home | Next (Requirements)