Flamebot - #uplink's personal Uplinker basher

Flamebot is an IRC bot written in Python, created and maintained by Jelco.

Flamebot started as a solution for the following problem: #uplink on irc.uplinkcorp.net is notorious for being the default channel for the in-game IRC client of Introversion's game Uplink, a defective client often confused by people for a notepad or an automated help program. This bot was created to deal with the most common lines, and reply with appropriate answers. In addition to this, Flamebot has gotten a feature that allows ghosting of certain users (especially TooManySecrets) and will probably get functionality for triggers and responses for non-Uplink users as well in the nearby future.

Flamebot will currently only respond to Uplink users, and it distinguishes them from regular users using a VERSION check. You will be VERSIONed when joining #uplink, and when Flamebot rejoins after a reboot. If you're authenticated to NickServ with a registered nick, you will not be VERSIONed since Uplinkers cannot auth with NickServ - hence, all authenticated users are non-Uplinkers by default.

This page is both a live list of contents of the database and a manual for its commands, including commands limited to Jelco only, for the sake of documentation.

Triggers support wildcards. * is an optional wildcard, *+ is a mandatory wildcard, and a backslash escapes the appropriate characters. Each wildcard represents a word. For example, the trigger "one * trout" is activated by both "one trout" and "one smashed trout", and the trigger "\* is an *+ wildcard" is activated by "* is an optional wildcard" but not by "* is an wildcard".

TriggerResponse
 
[1][Jelco][contains/1 word] rules[0][Jelco] The rules are pretty simple really. Don't swear, don't spam, don't call out random people's names. People will only help you if you behave nicely.
 
[2][Jelco][contains/1 word] guide.modlink.net[1][Jelco] It's a website, you can't access it from within the game. Open a web browser.
[92][Monty][starts with] http[^ ]+
 
[3][Jelco][contains] msg nickserv[2][Jelco] You can't communicate with Nickserv from within the Uplink client.
[4][Jelco][starts with/2+ words] /ns
 
[5][Jelco][starts with] ( )*/me [3][Jelco] The /me command doesn't work from within the Uplink client. Use /action if you must, but it will look like shit to you.
 
[10][Jelco][starts with] join [4][Jelco] Regular IRC commands don't work from the Uplink IRC client.
[11][-1][Jelco][starts with] /
[12][Jelco][starts with] nick
[57][Jelco][contains/1 word] motd
[71][Jelco][starts with] msg
 
[6][+1][Jelco][contains/1 word] exit[5][Jelco] To disconnect from IRC, click the 'Disconnect' button on the right.
[7][+1][Jelco][contains/1 word] quit
[8][+1][Jelco][contains/1 word] leave
[9][+1][Jelco][contains/1 word] part
[45][Jelco][contains/1 word] disconnect
 
[15][Jelco][contains] is this ((chat|thing|irc) )?real\??[6][Jelco] You are connected to a real IRC channel. The people are real people, Flamebot is the only bot here.
[17][Jelco][contains] are you (a )?bots?
[21][Jelco][contains] connects to the internet
[50][Jelco][contains] are you ((guys|people|someone|a) )?real
[54][Jelco][contains] you are ((not|really) )?real
[56][Jelco][is exactly] test
[133][Jelco][contains] real internet
[148][Monty][contains] this (a )?real irc\?
 
[13][Jelco][contains] hack other players[7][Jelco] Uplink is not multiplayer, you cannot hack other players.
[14][Jelco][contains] multiplayer
 
[19][Jelco][contains] onlink[8][Jelco] Please do not talk about Onlink in here, it's not officially supported. You can go talk about it over here: http://www.onlink-mod.net
 
[22][Jelco][contains] uplink ii[9][Jelco] There will not be a sequel to Uplink. You're only the umpteenth person to suggest it in 8 years.
[23][Jelco][contains] uplink 2
 
[24][Jelco][contains] polski[10][Jelco] This is an English channel. Please stop your gibberish.
[58][Jelco][contains] jemand
[59][Jelco][contains] deutsch
[67][Jelco][contains] kitaici
[132][Jelco][contains] brasileiro
[147][Monty][contains] ejja
[177][Monty][contains] espanol
 
[27][-1][Jelco][contains] ^help$[11][Jelco] Read http://guide.modlink.net before asking any questions about Uplink.
[44][-1][Jelco][contains] help( (me|((me )?with .+)))?\??
[46][-1][Jelco][contains] can (you|anyone|someone) (please )?(help|tell) me
[64][-1][Jelco][contains] how do i
[65][-1][Jelco][contains] how do you
[66][-1][Jelco][contains] how to
[69][-1][Jelco][contains] how can i
[70][-1][Jelco][contains] how can you
[94][-1][Monty][contains] want to help me
[101][-1][Monty][contains] need (some )?help
[142][Monty][contains] have a question
 
[29][Jelco][contains] voice print[14][Jelco] 1) find admin number in company public services 2) open analyser 3) call number
[30][Jelco][contains] voice analyser
[185][Jelco][contains] voice anyliser
[186][Jelco][contains] voice aniliser
 
[32][+1][Jelco][contains] lan[15][Jelco] LANs are explained in detail on this page: http://guide.modlink.net/section3.php#3-1
[63][Jelco][contains] network
 
[34][+2][Jelco][contains] arunmor[16][Jelco] The Storyline missions are explained in detail on this page: http://guide.modlink.net/section4.php
[35][+2][Jelco][contains] revelation
[110][Jelco][contains] storyline
[111][Jelco][contains] story line
[187][Jelco][contains] faith
 
[31][Jelco][contains/2+ words] online[20][Jelco] Uplink is not an online game, only this chat is.
 
[40][Jelco][contains] people ((out|in) )?here[22][Jelco] No.
[74][Monty][contains] any(( )?one) (here )?on(line)?\??
[90][Monty][contains] anyone alive
[112][Jelco][contains] does this work
[117][Monty][contains] any(one|body) (about|around)
[119][Jelco][contains] tell me
[143][Monty][contains] some( ?one| people) ((out|in) )?(here|about|around)
[149][Monty][contains] people ((actually|really) )?(still )?play this game\??
[184][Monty][contains] any(one)? (out )?there\?
 
[41][Jelco][contains] are ((you|people) )?still playing[23][Jelco] Most of us are just connected using a real IRC client. Very few actually still play the game.
[89][Monty][contains] (any|some)?one (still )?play(ing)? this
 
[48][Jelco][contains/1 word] wolflord[25][Jelco] Please don't call out random people's names, it can be fairly annoying.
[49][Jelco][contains/1 word] icepick
[68][Jelco][contains/1 word] ebola
[109][Monty][contains/1 word] neothermic
[178][Jelco][contains/1 word] haggy
 
[51][Jelco][contains] #uplinkcorp[26][Jelco] There is nothing in #UplinkCorp of interest to you.
 
[52][Jelco][contains] cut(t?ing|s)? off (my|the|every|all) first[27][Jelco] The Uplink IRC client does that. It's that shitty.
 
[28][Jelco] You just lost it.
 
[60][Jelco][contains] fuck
[61][Jelco][contains] cunt
[62][Jelco][contains] bitch
[72][Jelco][contains] dick
[73][Jelco][contains] shit
[150][Monty][contains] twat
 
[75][Monty][contains] pass(word)? (for )?((a|the) )?protovision[30][Monty] You need to watch the film "WarGames" (1983)
[188][Jelco][contains] in(to)? (the )?protovision
[190][Jelco][contains] proto(vision)? ?game
 
[76][Monty][contains] orange square[31][Monty] In the server list, you will notice a button to the right of each entry. This button can be used to show, hide or highlight servers on the world map. When it is used to highlight a server, it appears orange on the map.
[77][Monty][contains] orange server
[78][Monty][contains] orange node
[151][Monty][contains] what if it(('| i)?s)? ((blink(s|ing)?|flash(es|ing)?) )?orange
[152][Monty][contains] what about orange
 
[79][Monty][contains] solid boa?rder[32][Monty] A dashed border indicates that you have user access to the machine, and a solid border indicates admin access. If it's red then it means it's infected and if that doesn't make sense, try the storyline next time you play.
[80][Monty][contains] dotted boa?rder
[81][Monty][contains] dashed boa?rder
[82][Monty][contains] solid bou?nda?ry
[83][Monty][contains] dotted bou?nda?ry
[84][Monty][contains] dashed bou?nda?ry
[85][Monty][contains] solid (red )?(out)?line
[86][Monty][contains] dotted (red )?(out)?line
[88][Monty][contains] dashed (red )?(out)?line
 
[91][Monty][contains] already read[33][Monty] But did you read all of it and pay attention to what you read? If not, try reading it again, otherwise try doing a search of the forums (http://forums.introversion.co.uk/uplink/)
[115][Monty][contains] i('?ve| (did|have)) ((already|not) )?read the guide
 
[93][Monty][starts with/2 words] ^c?d usr[34][Monty] This is a real IRC channel, not an in-game server console. As such, those commands wont work here.
[97][Monty][starts with/2 words] ^c?d sys
[98][Monty][starts with/2 words] ^c?d logs?
[105][Monty][starts with/1 word] ^d?ir
[106][Monty][starts with/1 word] ^s?ys
[107][Monty][starts with/1 word] ^d?elete
[108][Monty][starts with/1 word] ^l?og
[116][Monty][starts with/2 words] ^r?un revelation
[131][Jelco][is exactly/1 word] menu
[168][Monty][starts with/1 word] ^l?ist
 
[95][Monty][contains/1 word] flamebot[35][Monty] Hi, I'm a bot. No one else here is though, this is a real IRC channel. Please don't call out random people's names, it can be fairly annoying.
[102][Jelco][contains] who is ((this|that) )?flamebot
[103][Jelco][contains] what is ((this|that) )?flamebot
 
[96][Monty][contains] i can('|no)?t belie?ve[36][Monty] Well, you better believe it.
 
[99][Monty][contains] what do you ((guys|people) )?(dis)?like most ((about|of) )?uplink[37][Monty] The IRC Client
 
[100][Monty][contains] waste of money[38][Monty] No, *YOU'RE* the waste of money.
 
[113][Monty][contains] get more missions[40][Monty] Use the buttons at the top of the screen to fast forward time until more missions appear.
[114][Monty][contains] no ((more|moar) )?missions
 
[121][Jelco][contains] ^(.+ )?ppl
[122][Jelco][contains] plz
[123][Jelco][contains] sr+y
[125][Monty][contains] pls
[126][Monty][contains] any1
[127][Monty][contains] some?1
[128][Monty][contains] sum1
[130][Monty][contains] ne1
[170][Monty][contains] @ all
[174][Monty][contains] thx
[175][Monty][contains] tnx
[176][Monty][contains] soz
[179][Monty][contains] ^(.+ )?w(a|o)t
 
[135][Ebola][contains] friends
[136][Ebola][contains] friend
[137][Ebola][contains] freind
[138][Ebola][contains] freinds
 
[139][Monty][contains] buddy
[141][Monty][contains] buddies
 
[140][Monty][contains] guy(s|z)?
 
[153][Monty][contains] you ((must|probably|can't) )?get asked ((this|that) )a ?lot[45][Monty] We have a bot which attempts to give predetermined responses, what do you think?
[159][Monty][contains] a ?lot of people ((must|probably) )ask (that|this)
 
[161][Monty][contains] lol
[162][Monty][contains] heh[he]*
[163][Monty][contains] hah[ha]*
[164][Monty][contains] lmao
[165][Monty][contains] rofl
[166][Monty][contains] lulz?
 
[167][Monty][contains] can (you|anyone|someone) hear me?[47][Monty] Roger, I hear you, over.
 
[169][Monty][contains] why is flamebot here[48][Monty] I'm a sophisticated sex robot, sent back in time to change the future for one lucky lady. Just kidding, I'm hear to respond to boring questions no one wants to answer yet people like you keep asking.
 
[172][Monty][starts with/1 word] ping[49][Monty] Pong
 
[173][Monty][contains] answer me![50][Monty] Only Smarties have the answer.
 
[189][Jelco][contains] can I ask[52][Jelco] Well, if you must. Go ahead.
 
[191][Jelco][contains] is this( \w*)? on[53][Jelco] Positive.
UsernameRights
CatalogBayAdmin
JelcoAdmin
MontySuperMod
EbolaMod
NeoThermicMod
Neo|LaptopMod
pathyMod
WolfLordMod
Dice_MaidenRegistered user
EB_WorkRegistered user
Energizer_BunnyRegistered user
EvangelionRegistered user
HauntedUnixRegistered user
KingAlRegistered user
MaximusBroodRegistered user
shinygerbilRegistered user
xanderRegistered user
XarlaxasRegistered user
GHOST usernameGreeting
[Jelco] MyNickNameOh hey MyNickName! %u says hi!
[Jelco] TooManySecretsOh hey TooManySecrets! %u says hi!

Levels

Banned
Flamebot will not respond to any command from these users
Registered
Users allowed to use the !ghost command
Mod
Users with the ability to add, edit and remove triggers, responses and ghosts
SuperMod
Users who can also edit and remove triggers, responses and ghosts created by others
Admin
The highest level, can add and edit user priveleges

Commands

Standard commands

!guide [<user>]
Flamebot will respond in the channel with a link to the online Uplink guide. If a username is supplied, it will only message that user.

!flame <user>
This will cause Flamebot to message a user, telling that user some basic rules, dos and don'ts of the channel.

!info [<user>]
This will let Flamebot tell you what kind of user a certain person is. If no username is supplied, it will default to yours. Note: 'Regular' means a user who is not an Uplinker and also not authenticated to NickServ. The other messages should be obvious.

<user>
If you PM Flamebot a username, it will tell that person where the guide is. Synonymous with !guide <user>.

Registered users

!ghost <username>
Will GHOST the user whose username is supplied, if Flamebot knows the password to that account.

Mods

!add trigger <response ID> <trigger>
This will notice you with a success or failure message. The response ID is the number in front of every response in the table above and given to you when you add a response.

!add response <response>
This will respond with a notice telling you if it succeeded or not, and if it succeeded it will tell you the response ID.

!del trigger <trigger ID>
This will delete the trigger of which you supplied the ID. The ID is the number preceding the trigger in the table above.

!del response <response ID>
This will delete the response of which you supplied the ID. The ID is the number preceding the response in the table above.

!edit trigger type <trigger ID> <trigger type>
Changes the trigger type. A type is a compound of different properties, with two digits. The first digit tells the bot how many words the line should have. If the type is negative the first digit tells the bot how many words the line should at least have. If the first digit is left out or zero, the amount of words doesn't matter. The second digit tells the bot how it should look for the trigger in the line. 0 means that it will simply look if it can find the trigger in the line, regardless of its place. 1 means that it will look for lines starting with the trigger. 2 means that it will look for lines ending with the trigger. 3 means that the line should be exactly the trigger. Any other digit is invalid. For example: type -31 means that it will look for a line with 3 words or more, starting with the trigger. A trigger cannot be typed case-sensitive.

!edit trigger text <trigger ID> <trigger text>
Edits the trigger text of the trigger with the supplied ID.

!edit trigger response <trigger ID> <response ID>
Edits the response associated with the trigger with the supplied ID.

!edit response text <response ID> <response text>
Edits the response text of the response with the supplied ID.

!userlist [<filter>]
Shows all the users currently in the channel, and whether Flamebot thinks they are an Uplink user or not. The optional filter has the several options. 'Uplink' shows uplink users only, 'regular' only regular unauthed users, 'authed' only authed users and 'special' only shows people who have priveleges for the bot.

!add ghost <username> <password> [<greeting>]
Adds a username/password combination to Flamebot's array of GHOST calls. If a greeting is supplied, Flamebot will say that line before ghosting the user in question.

!edit ghost password <username> <password>
Changes the password for the username in the GHOST list.

!edit ghost greeting <username> <greeting>
Changes the greeting for the username in the GHOST list.

!del ghost <username>
Deletes the username/password combination from the GHOST list.

Admins

!reset [<message>]
Makes Flamebot reboot itself.

!refresh [<username> [...]]
Retrieves the fresh list of triggers, responses, ghosts and users from the database and rechecks every user in the channel. If usernames are supplied, only those users are checked in the channel.

!add user <username> <rights>
Adds a user to the database with the supplied rights (a number representing any of the aforementioned levels).

!edit user <username> <rights>
Changes the rights of a specific user.

!del user <username>
Deletes the user from the database. Note: this is not the same as banning that user from bot use.