From Botdom Wiki
Jump to: navigation, search

Discontinued Project
This project has been discontinued and is not recommended for use.

Codename Futurism
Futurism 0.8 screenshot.png
Futurism 0.8 startup screen.
Developer(s): electricnet
Programming language: Python
Minimum requirements: Python 2.5
Twisted 8.0
Development state: Discontinued
Source model: Open source
Last stable release: 0.8 (Silverado build 801) (November 8, 2008)
Last preview release: 0.8.1 (Antennae) (TBA)
License type: MIT License

Codename Futurism, made by electricnet, was an open source, object oriented Python bot, utilizing the Twisted event-driven networking framework to connect to dAmn. It was in beta stage and the basic codebase was expected to stay largely unchanged all the way to the final version—something that never happened, because Elec ran out of ideas and got a thousand of other projects in the subsequent years. The bot has major contributions by doofsmack.

Futurism was previously a PHP bot, fully compatible with PHP 4 (except on Windows systems), but switched to the new Python codebase with version 0.8 in August 2008. Original development started in Summer 2006, and the bot was one of the first to include a module-type plugin system, which was written by infinity0 and later modified.

The bot ships with only a basic array of required modules, and the user is expected to choose from modules being found in a subsection on this page, and install them additionally.


The last beta version of Futurism is available for download here.

Old builds

These are the older builds. You need a username and a password to download versions prior to 0.3.

Futurism versions 0.3.5 and prior are released under the GNU General Public License, which means you can freely download it and share it with others.


Here are the list of modules that are currently available for download for Futurism. This will be organized better in the future (probably not).

Futurism 0.8

  • mod-get - Used to automatically download/install other modules. - Version 0.2.2 by cthom06
  • games - A collection of common bot games (rr, shoot, roll, stb, 8ball) - Version 0.3, by cthom06
  • google Provides Google search - Version 1.0, ported.
  • notes - Provides the note command for leaving other users notes. - Version 0.3.1, by cthom06
  • responses - Very basic response module. - Version 0.2, by cthom06
  • welcomes - Set automatic welcome message for your chatroom. - Version 0.2, by cthom06

Futurism 0.3.x

  • scripts - A module that makes you able to add quick PHP command scripts. This is not a replacement for using modules! - Version 0.9 beta, by electricnet
  • Tarnote - This is a script used to send notes using the main dA notes system. - Version 2.2, by the dANote team
  • welcome - This module can be used to welcome people to your own chatroom! There is still currently stuff to be done for this module. - Version 0.4, by Photofroggy
  • applicationlaunch - This module can be used to launch applications on your computer remotely from your bot! Warning: Launching applications pauses your bot until the application is closed! - Version 1.0, by Photofroggy and electricnet
  • term - Shows predefined terms that are stored locally. - Version 1, by Photofroggy
  • idler - Shows your status on #IdleRPG. Uses 24bps text gateway, so is faster than most idle scripts (of course depending a bit on your internet connection). - Version 1.0, by electricnet
  • Maltriv - This is a fully functional trivia module for Futurism! Has all of the trivia commands and allows multiple hints and answers for questions. - Version 1.1, by Photofroggy

All modules »

Known bugs

This is a list of all the known bugs in the current version. If you find any, please add it here, or note electricnet. Future releases will focus on fixing as many as these bugs as possible.

  • The evt_property event is not correctly implemented.
  • There is a lot of extra code added to setProperty in dAmnChatroom that is not present in dAmnNs.


This is the list of changes which has been occuring throughout the development of Futurism. The small dates are the days that the versions got published.

0.8 - Silverado (beta)

Named after the Silverado Galaxy, 98 mly away. (2008-08-20 — updated 2008-11-08)

  • The biggest release in Futurism's history. Only the most important changes are listed below.
  • Completely rewritten in Python
  • Using Twisted networking framework to achieve a pure non-blocking and multitasking connection
  • Works out of the box in Unix-style environments using code snippets from efforts by infinity0 and photofroggy
  • Almost everything in this version is an object; large things like dAmn and the gate, and small things like packets and even commands. Especially the latter gives great advantages to extension programmers.
  • All internal commands finally moved to modules. This way, they are actually also displayed in the !commands list. Hooray!
  • A complete new minimalistic module system. Automatic target chatroom handling makes commands more flexible!
  • Module reloading built in!
  • Timer management built in using Twisted's <python-inline>reactor.callLater</python-inline> method!
  • Basic support for colour management on Windows! (Will be extended later)
  • Build 801: Fixed the dA login problems by connecting only using a secure connection. Requires PyOpenSSL Python module.

0.3.6 - Magellanic D

Futurism's look in this older version.

Named after the Magellanic Clouds. Legacy release. (2008-11-08)

  • Fixed the dA login problems by connecting only using a secure connection. Requires OpenSSL to be activated with PHP.

0.3.5 - Magellanic C

Named after the Magellanic Clouds. (2008-05-04)

  • Added internal autoreconnect, works on all platforms!
  • Finally added users array to <php-inline>$dAmn->properties</php-inline>!
  • Changed logfile to add "Current users in #channelname" upon joining
  • Changed debugWrite to include timestamps
  • Remade the config file a bit
  • Fixed a bug in the .bat autorestart system
  • This was the first release in over a year that wasn't a 100% bug fix! - Magellanic B

Named after the Magellanic Clouds. (2008-01-30)

0.3.4 - Magellanic B

Named after the Magellanic Clouds. (2007-11-23)

  • Yet another bug fix.
  • Package splitting is 100% fixed!
  • Regex commands now actually are turned off when the module is deactivated.
  • Memberdata upon another person joining the room are now correctly split into an array.
  • The 'name' input for the <php-inline>define()</php-inline> function is now the string it's supposed to be.
  • Bug in calculator module fixed.
  • Fixed various spelling mistakes.
  • The password now removes itself from the <php-inline>$botinfo</php-inline> variable no matter if you get an authtoken or not.

0.3.3 - Magellanic

Named after the Magellanic Clouds. (2007-06-19)

  • This is a bug fix.
  • The bot no longer continues if there's no authtoken available. It immediately quits.
  • Fixed/semi-fixed the packet split bug.
  • Line breaks no longer parsed as
  • You can no longer remove the owner of the bot from the bot's admin privclass.
  • The !modules list now displays a message when there's no modules. The bot now also displays a similar message upon startup.
  • The !commands list no longer displays a module that has no commands.
  • Now works if the PHP executable is in a folder with spaces in it.
  • &p and &img tablumps now correctly parsed.
  • title="" and other assorted empty tag properties now only get hidden if they're actually inside a tag.
  • The ShadowdAx color abbr tags now no longer clash with command arguments.



  • This is mainly a bug fix.
  • Logging bug fixed.
  • preg_match() bug in !uptime fixed.
  • Fixed AI bug
  • Fixed various !whois bugs.
  • Changed !quit force to just !quit and the old !quit to !quit soft since I'm guessing more people want it to close with no hassle when they type !quit.
  • Performed various updates to the <php-inline>quit()</php-inline> function.
  • Improved the disconnection debugger a bit.
  • The bot now only sees itself as connected when receiving a successful answer to the handshake, not when just sending the handshake. Same for login.
  • Bot username no longer case sensitive (on log in, the bot gets the correct username casing from the dAmnServer)
  • Added a mechanism that detects whether we haven't received anything from the socket in 2 minutes (pings included), and announces a disconnect if this is the case.
  • On that same note, I added an autorestart, so if the bot ends up disconnecting, it reconnects automatically! This can be set on or off in the config. On by default. (So far this only works on Windows, but this will be changed.)
  • Added !debug which you can use to turn debug mode on or off on runtime.
  • Scripts module now included by default
  • Searches module now only has the !google command.



  • Added the event raw which runs every time a raw packet is received. In this event, you can also decide whether to process the packet afterwards.
  • The main loop got faster, a lot of things are now only processed once a second.
  • The main file now got completely reorganized, process and parse functions got moved to internal/includes/process.php.
  • The bot now successfully shows uptime on !quit, and the nasty bug from 0.3 is removed.
  • New function, <php-inline>formatTime()</php-inline> got added. This calculates relative time, and is from Dante. This is used in uptime calculation too.
  • New commands, !quit force to quit the bot as quick as possible with no hassle (e.g. with no "The bot has quit, restart?"), and a !restart command. The latter is powered by awesome bat code from xbot.
  • IMPORTANT FOR DEVELOPERS: The metadata version is now required for a module.
  • Apparently, when the bot got kicked, it has never been registered. I fixed that so the bot can now see when it's kicked.
  • I also added autorejoin when kicked, for now only globally for all rooms, and the setting is only a variable so far.
  • You can now execute something directly to the command line / terminal by using !execute cmd.


This is the logo that was used for 0.3 through 0.3.2


  • Added ping command that introduced functions <php-inline>microtimeFloat()</php-inline> and <php-inline>pong()</php-inline>.
  • Added <php-inline>$sessId</php-inline>, every session gets a special unique id.
  • Added <php-inline>debugWrite()</php-inline>, a function dedicated to output debug data in a readible manner. Automatically used when debug mode is on. Everything is saved in a text file, savedata/debug/$sessId.txt.
  • Module system is updated and is now the same as in xbot 0.88.
  • Made the loop more compact, moved stuff to <php-inline>debugDisconnection()</php-inline> which is now just called <php-inline>disconnection()</php-inline>.
  • <php-inline>$socket</php-inline> is moved to the dAmn object, so it's now known as <php-inline>$dAmn->socket</php-inline>.
  • <php-inline>$homedirectory</php-inline> is moved to the config file, and is now known as <php-inline>$settings['homedirectory']</php-inline>.
  • Added <php-inline>$dAmn->npmsg($message, $chatroom)</php-inline>.
  • Tablump parser improved a lot.
  • Finally full title and topic compatibility! (On second thought, some new bugs were discovered which will be taken into concern in a later version.)
  • Added <php-inline>$dAmn->properties</php-inline> (array). Still unfinished, but includes title and topic for each room. Will be changed at the same time as the topic/title bugs will be fixed. (0.4, anyone?)
  • Showing "r" parameter when a room is parted.
  • Module metadata added! Any metadata can be added using the comment syntax, but the required ones are Name, Description and Creator.
  • Commandnames now also work as preg_matches! (as in <javascript-inline>/^example([0-9]+)$/</javascript-inline>, which would work for example1, example2, example2938.
  • Native pchat compatibility! Pchats with the bot and another user is formatted @username, just like channels are formatted #channelname.
  • Improved the disconnection debugger a bit more, slightly.
  • The Google command got upgraded, the number of o's in "google" determines the amount of search results returned. The max is 10. Idea stolen from the originally modded dAmnBot by doofsmack.
  • Some system variables got changed into constants.
  • Added <php-inline>openData("filename")</php-inline> and <php-inline>saveData("filename", "data")</php-inline> (where filename is without extension or folder or anything, just the name) functions which returns and save datas in the savedata folder as either .bsv or .txt files depending on whether they're serialized. Input is mixed variables, serializing is not done before saving the data.
  • Finally, fixed minor bugs.



  • Added quit command.
  • Added module and commands command.
  • Added <php-inline>randobullet()</php-inline>
  • Triggers now work with 2+ characters.
  • Improved the disconnection debugger.
  • Fixed a bug that didn't allow the bot to say more than one word when _say'ing something in another room.

0.2d F (security fix)


  • This version fixed a security hole introduced in 0.2d, in the add/remove privclass commands.
  • Furthermore, it fixed a problem that had always been in the bot, which caused the bot to ignore commands recieved by guests. This has now been fixed too.
  • This is not something you install after installing the bot, this includes the bot.



  • The function <php-inline>intF()</php-inline> is now <php-inline>f()</php-inline>. I encourage everyone linking to internal files to wrap this function around their relative paths. Update your scripts!
  • Moved most functions in main.php to new file internal/includes/functions.php.
  • Moved !about text to the config file.
  • Moved the cmd and log timestamps to the config file.
  • You can now add and remove privclass using the !user addprivclass and the !user removeprivclass commands.


  • Fixed stupid error in the new alias, <php-inline>intMsg()</php-inline>.
  • Fixed other small stuff. This version never really became public because of the huge amount of time that went from working on it to working on the next version.



  • Now using awesome new calculator designed for Tarbot by doofsmack.
  • The function <php-inline>internalMessage()</php-inline> now has an easier-to-type-if-you're-lasy alias, <php-inline>intMsg()</php-inline>.
  • New module; deviants. Includes commands: deviantinfo (better known as whois in NoodleBot), and deviantstats.
  • Whois command works much better, the timestamps especially. They are now calculated in a way inspired by the one in dAmnBot, since it was much more awesome than my attempt.
  • There's now a modules commands, so you can see what modules you have on and turned on/off. There isn't any way to change the state of them yet from a bot command, though.
  • Now you can type debug after the name of the main bot file to see what's going on in the bot. I also added a specific bat file.
  • Made minor fixes to the tablump parsing engine.

0.2a (alpha)


  • A big release.
  • Modules work (almost) fully now. Thanks to infinity0 for creating the awesome script. Go give him monies. Elec ported it to Tarbot, since the original script was built in infinity0's own extension of NoodleBot.
  • The bot's file system is now much more organized.
  • Tablumps are now properly parsed, so you don't get a weird stack of code when typing a simple smiley.
  • The calculator is now disabled, since doofsmack said he wanted to code a new and more safe one, so w00t for that!
  • The execute command, which didn't have any security whatsoever before, is now an owner-only command. IMPORTANT UPDATE!
  • I added a whois command, it is much like the /whois from the dAmn system. The timestamps are still a bit weird though.
  • Moved all search related commands into a new module called "searches". I'll remove the rest of the command into modules later on.
  • Feel free to start creating your own modules!


Maybe nicknamed OLD? (2006-06-22)

  • This was a small release. All fixes.
  • You now send your username to the talk server when talking to the bot AI. This can be one further step to making the bot recognize you instead of saying "Hello, undefined". It still says undefined as it is, but it is a step in the right direction. This also sends the data in another way that is incompatible with the old way, so the AI does not work in the 0.1c anymore.
  • Fixx0red Google command weirdnesses. Long links get shortened, and links are now italicized to separate better from rest of the text.
  • Now the Google command also shows a real message when it couldn't find any results for your query.
  • You can now have spaces in the ^ action in calc/calculator.
  • The sub tag is removed in the calculator because some people disliked it.


Nicknamed LE C or maybe OIC (2006-06-21)

  • Okay, a huge release, guys.
  • User system for the most, there's now a privilege and user system, and you can add and remove users from the comfort of your own chatroom.
  • Added all the normal dAmn commands; say, kick, promote, demote, ban, unban, topic, title, admin.
  • Some of those already have magic discovery and subfunctions, like kick.
  • And another huge thing. Logs. Logs are now automatically generated in the subfolder /logs, obviously. There's a folder for each room, and in there, a folder for each month. It doesn't say topics, titles, privclasses and members yet, though, that'll probably come later, in a separate file.
  • Another huge thing, AI. ALICE AI, also known as AIML. It's much better than the ones the older bots have. It can actually talk intelligently instead of saying Edible Pants and such. The AI is hosted on a tarserver, so the maaaaany amount of answers that the bot has got now doesn't change much of the size.
  • The Google command's normal search result amount got changed from 5 to 3. Less spamming.



  • Added an awesome autoresponse command with build in fnord and word generator, because j2n4me said so.
  • Fnord by doofsmack.
  • Added an older calculator by electricnet, which still semi-sucks, so it needs to be improved before the full version.
  • Added trigcheck response
  • Added message in console if the command used does not exist.
  • Added Google command, based on the one by doofsmack. I added that feature j2 wanted.
  • Added my own Odeo podcast and audio search.
  • Added a wikipedia search engine, although it gives a 403 when getting contents, so it's kinda on hold.
  • Err, so later on I fixed some problematic stuff, moved stuff around etc.
  • Also added join and part commands.
  • Had commands: test, about, credits, autoresponse, calc/calculator, join, part, google, odeo-audiosearch, odeo-podcastsearch, wikipedia

0.1a (pre-alpha)


  • Initial version
  • Included basic dAmn functions and an old module example. The module system used will be dumped soon though.
  • Had commands: test and about

Derivative work

See also

Read documentation on Futurism on Botdom Documentation.

Related and derivative bots

Projects by Electricnet
Futurism · Abugida

This work is released under the MIT License, which allows you to freely use, modify, or distribute it, as long as you retain the original copyright notice found in the work.