RationalWiki:Bots

From RationalWiki
Jump to navigation Jump to search

Bots (short for "robots") are (usually small) computer programs/scripts created to perform repetitive tasks or to ease routine maintenance of a website.

On wikis Bot is a class of user which is usually such a program, although some users have Bot alteregos or make themselves technically bots so that repetitive tasks won't clog up Special:RecentChanges.

A current list of RW's bots can be found here (there are 54). Any of these which are generally applicable should have usage instructions on their user page.

Active bots[edit]

Edit filter[edit]

Blocks people who trigger certain edit filters.

Inferno Bot[edit]

The fifth incarnation of a talkpage archival bot. Configurable with a template. See userpage for instructions.

Old bots[edit]


How to make your own[edit]

You can talk to the API at http://rationalwiki.org/w/api.php. See the MediaWiki help pages.

Pywikibot[edit]

It's probably easiest to use a framework like Pywikibot. You want to use the new "core" version, not the old "compat".

Getting started[edit]

Follow the installation instructions to install Pywikibot & dependencies (note: some systems also have packages for Pywikibot: [1] [2]).

Now create the rationalwiki family; this will tell Pywikibot how to interact with the RationalWiki API:

python3.4 generate_family_file.py http://rationalwiki.org/wiki/Main_Page rationalwiki

will give you a family file in pywikibot/families/rationalwiki_family.py. The default will do fine for most cases.

You'll need to edit the user-config.py:

mylang = 'en'
family = 'rationalwiki'
usernames['rationalwiki']['en'] = 'MummificationBot'

Finally, test your setup with python pwb.py login, which should prompt for the login password for your bot, and then output Logged in on somewiki:lang as bot username. The password should be remembered.

Multiple accounts[edit]

Pywikibot only supports a single account name; for separate accounts you could use something along the lines of this in your user-config.py:

import os, sys

mylang = 'en'
family = 'rationalwiki'
user = os.getenv('RW_USER')
valid = {
    'MummificationBot': 'store password here if you want',
    'RedirectBot': 'store password here if you want',
}

if user not in valid.keys():
    print('No such user; valid users: {}'.format(valid.keys()))
    sys.exit(1)

print(user)
usernames['rationalwiki']['en'] = user

del user
del valid

Now just set the RW_USER environment variable before running the script:

RW_USER=MummificationBot python pwb.py login

An alternative is using separate Pywikibot directories (this is the documented way, but a bit silly).