TARS

Important notice! This documentation is a mixture of prospective and out-of-date. That is to say that the accuracy here is pretty terrible and there's about a 50% of anything you read here being true. I'm working on a major documentation update which will hopefully be live soon - poke me whenever to ask how it's going. One day, you'll check back here and see that this notice is gone, and then everything will be guaranteed to be accurate. Thank you, and sorry!

This page contains a huge amount of detail. If you'd prefer a shorter version, see Quick Commands.

What is TARS?

TARS is an IRC bot primarily for aiding IO in social media promotion, but also has a bunch of other things it can do. The following is a list of all the commands that TARS knows.

Whenever you see a command such as .search, keep in mind that you can also use this command by pinging TARS at the start of your message: TARS: search

Command templates: .commandname requiredargument [optionalargument] [--tagged taggedargument]

"commandname" is the name of the command. "requiredargument" is required. Anything in [square brackets] is not required. Tagged arguments must come after their tag - for example, in the above command .commandname requiredargument --tagged taggedargument is valid, but .commandname requiredargument taggedargument is not.


Features

Usually TARS is operated with specific commands, but it has some features that aren't command-related.

SCP-matching

TARS will automatically provide a link for a message that's just an SCP number (it'll ignore any pings in the message). It'll also provide a link for a message that contains an SCP number prefixed with "!", e.g. "!SCP-4000".

Chevronning

TARS: ^

Tagging TARS in a message that's just a caret (or a chevron) is like saying "TARS, take a good hard look at the last message that was posted". TARS will take a look at the message above the chevron and attempt to parse any command that's there. If it doesn't find anything, it'll move up to the previous message, and will keep doing so until it finds a command.

Chevronning has a variety of effects:

Append a number after the chevron to change how many messages are checked, e.g. TARS: ^ 20. There is a hard limit of 50, and the default is 10.

Change the number of chevrons to skip commands. ^ will execute the first command that is found, ^^ will skip the first command and execute the second command, and so on.

An empty message that pings TARS and nothing else, eg TARS:, is equivalent to TARS: ^ 1.

When chevronning, TARS will always ignore any other chevrons.

Joining/Leaving

TARS will join any channel that it's invited to. This channel will be added to the auto-join list.

If TARS is kicked from a channel, it will leave, and the channel will be removed from the auto-join list.

Deferral (to other bots)

If someone posts a command like .help in a channel, if there are multiple bots there, they may all try to parse it at once! To avoid this, SCP IRC bots are in a hierarchy in which the bot at the top will always try to parse the command, and all the other bots will only try to parse it if all the bots above them in the hierarchy are not present.

jarvis is at the top of the hierarchy. Secretary_Helen is next. TARS is right at the bottom.

If jarvis or Secretary_Helen are in the channel, TARS will ignore any commands that they would usually pick up on. Look for J and/or H after the command name to see whether or not this is the case for each command.

However, if either of those bots fails the request (e.g. not finding anything in a .search) then TARS will automatically try as well. (If TARS also fails to find anything, it won't say anything.)

To force TARS to parse a command, either ping it at the start of the message, or prefix the command with two dots, e.g. ..search. TARS will respond regardless of other bots in the channel (be warned that other bots may respond to any URLs that TARS sends!)

If your command includes any TARS-specific syntax, then TARS will answer it anyway (in private messages), even if another bot gets there first.

General Commands

.help
J
H

Provides a link to both this page and Quick Commands.

Searches the wiki for pages, and provides URLs and basic info about the page that matches your search criteria. Searching is never case-sensitive.

.search [title] [--regex regex] [--tags tags] [--author author] [--rating rating] [--created created] [--parent parent] [--fullname] [--summary] [--select type number offset]

Example: TARS: search -t +scp +meta -r >100 -c 2014 - matches pages tagged both "scp" and "meta", with a rating of more than 100, posted in 2014.

Example: .s Insurgency --rating 20..80 --created 2018-06..2018 - matches pages that contain the word "Insurgency" in the title, which have a rating of between 20 and 80, and were created between June 1st 2018 and the end of 2018.

Example: .s Unexplained Location -f -c 20d..40W3d --random - matches pages whose name is exactly "Unexplained Location" created between 20 days and [40 weeks + 3 days] ago, and returns a random one.

Example: .s -x ^SCP-\d*2$ -m - matches articles that start with "SCP-" followed by any amount of numbers so long as that number ends in a 2, and returns the one that most needs extra attention.

If TARS finds more than one article that matches your criteria (and if you didn't specify --random, --summary or --recommend), it will provide a list of matches and ask if you meant any of them. To pick your article from the list, see the showmore command.

.regexsearch, .tags, .random and .lastcreated are aliases of this command.

.lastcreated, .lc, .l, .recent
J
H

TARS will generate a list of the 3 most recently created pages.

.lastcreated [amount] [extra arguments]

Example: .lc -a Croquembouche - shows the last 3 articles posted by Croquembouche.

.regexsearch, .regexsea, .rsea, .rs

Exactly the same as search, except your search terms are parsed as regular expressions. Not case-sensitive.

Example: .rs ^SCP- -t -scp - searches for articles starting with "SCP-" but that are not tagged 'scp'.

Example: .rs ^((?!the).)*$ - searches for articles that don't contain 'the'.

.showmore, .sm
J
H

When TARS presents you with a list of articles to pick from, use this command to pick which one you want to see.

Example: .sm 2 - pick the 2nd article from the list.

Anyone can .sm one of TARS' lists, even if they didn't send the command that created it.

You can always .sm the last list that TARS created in a given channel, even if TARS has been offline. When a new list is created in a channel, it will overwrite the old list.

Over time, TARS will learn which articles are picked more often than others, and will move those to the top of the list.

Use .sm or .sm 0 to see the whole list.

.authorpage, .author, .au
J
H

.au [username]

Fetches the author page for a given user. You must specify their Wikidot name exactly, although if you name an IRC user, TARS will check its list of aliases (see .alias) as well. If you don't specify anyone, TARS will try to find your author page instead (and it'll check your aliases, too).

.alias

.alias [name] [--add names] [--remove names] [--list]

Add an alternate name(s) for yourself into TARS' database. These names are used for .authorpage, .seen and .gib.

If TARS notices that you look up a single person a lot, it'll ask if that person is you and recommend that you add that name as an alias. It will only do this once.

Example: .alias --add "James Bond" James_Bond 007 - add these names to your alias.

Please be aware that aliases are moderated. Don't try to abuse the system.

.seen
J
H

.seen name

TARS will tell you when this user last sent a message in the current channel, and when they last sent a message in any channel.

.tags
J

.tags [tags]

Equivalent to .s -t [tag].

.tag
J

.tag tag

TARS will provide a link to the page that lists all the pages with this tag.

Note that jarvis uses this command as an alias for .tags.

.wikiname

.wikiname MyWikidotUsername

Set your Wikidot username in TARS' database.

.user
J
S

.user user

TARS will provide a link to the user's Wikidot page.

Multiple arguments will be interpreted as a single username that contains spaces.

.gib
J

.gib [--channel #channel] [--user user(s)] [--size size reduce] [--roulette mode] [--regex regex(es)] [--me] [--no-cache]

TARS will take all of the messages in the channel and employ an extremely sophisticated machine-learning algorithm backed by over $8 billion in research funding to contribute to the conversation.

Additionally, any pings (i.e. username mentions) that are produced in the output will be censored to avoid annoying anyone not present in the conversation. To add a nick to the list of pings to search, see .alias.

Staff-Only Commands

Some commands are reserved for SCP staff only.

.promote

Promote an article or message on SCP social media.

.promote [message] [--article article] [--image image] [--facebook image] [--twitter image] [--tumblr image] [--reddit] [--instagram]

The .promote command can only be used by an operator or higher in #site42, the Internet Outreach channel.

Once you've called .promote, TARS will message you privately. This private conversation will not be logged and the bot owner will not have access to these message. TARS will take you through a series of simple questions to confirm that you do actually want to post things to the social media accounts.

TARS will ask you for passwords and/or API keys to the accounts. These are necessary in order for TARS to post. At the end of the session, you'll be asked whether or not you want to keep the passwords saved. If you do, it'll make things faster next time by keeping the passwords in an encrypted file. If you don't, the passwords will be purged.

At any point during the session, type "ABORT" to cancel everything.

.autopromote

Turn on or off automatic promotion.

Automatic promotion follows the settings in the configuration document. Follow the instructions there to set up automatic promotion.

.autopromote [on/off]

.config

Provides a link to the config page.

Controller-only Commands

The following commands will only work if you are a Controller of TARS. The bot owner picks who the Controllers are.

Control commands

.record

.record [start | stop | status] [--output location] [--format format] [--restrict-channel-name]

Record messages sent in the channel and then save them somewhere safe.

If TARS goes offline or is reloaded while recording, the recording will end prematurely. Messages can be manually recovered, except for any missed while offline. You should contact the bot owner with the times of your planned recording to minimise the chances of this happening.

Please note: as of 2019-08-24, --output and --format are not implemented. Recordings will be sent to topia under the ftml format. Just use .record start and .record stop!

.pingall

.pingall [message]

Ping everyone in the channel.

If you don't specify a message to send, TARS will just dump a list of everyone's names into the channel.

If you do specify a message, TARS will send a PM to everyone with your message. TARS will also include the name of the person who sent the message as well as the current channel - no need to include them!

Database Query commands

For checking the integrity of the database.

Gimmicks and Aliases

The following commands are just simple gimmicks or aliases. You can request gimmick commands if you want.