The bot's IRC Nick
The bot's password with the IRC services (e.g. P)
The IRC server to connect to.
The password, if required, to connect to the IRC server.
The port to connect to the IRC server.
Minimum delay between messages in seconds
Most public servers will get upset and kill users (or bots) sending too many messages too quickly. One every 2 seconds is considered a good starting point. If you are running merlin on a private server without such flood protection, you can set this to 0.
Color of all text in mIRC format http://www.mirc.com/colors.html (optional)
This option is disabled by default because many users consider it a nuisance. If you want to use this option, be sure to check the [NoColor]
and [NoColorChan]
options below.
Warn admins if the message queue exceeds this length
The bot will automatically delay sending of messages to avoid flooding and will store them in a prioritised queue. If the queue gets long, there's probably something bad going on. This setting will warn you once every 5 minutes while the queue is too long.
Warn admins if a message takes longer than is to deliver (in whole seconds)
Similar to the maxqueue
setting above, this setting warns you if the delay to an individual message becomes too high. At most, the bot will warn you of such a delay once every 5 minutes.
The IRC nick of the network services.
host : P![email protected]
The full IRC host of the network services.
login : [email protected]
The IRC nick/address used for the login command.
nickserv : NS![email protected]
The full IRC host of the NickServ service, where different to host
.
The IRC hostmask for +x users should be in the format @registered nick[dot]usermask.
These nicks should never have colors sent to them
P : 1
[email protected] : 1
The bot will not use colored text when sending messages to these nicks. By default, this is just the services, which will often fail to understand colored messages.
These channels should never have colors sent to them. No # or & in front!
someboringchannel : 1
As with the [NoColor]
section, the bot will not use colored text when sending messages to these channels. These should be specified without any prefix.
multiple admins can be added
pnick : 1
Admins added here should be chosen carefully and added by their registered services nick. Ideally you, the person running the bot, should be at the top of the list. Note that anyone added here will have the following privileges:
- messages will be handled with higher priority
- notification if the
maxqueue
ormaxdelay
triggers are reached - can invite the bot to any channel it knows about
- can use the
!adduser
command and some others before being added to the bot themselves - has access to some extra commands unavailable to "normal" admins
- will receive responses to CTCP PING and VERSION queries
The name of the alliance (should match the name in-game)
if the propsandcookies modules are enabled, users are given this many cookies to give out per day.
if the propsandcookies modules are enabled, a prop vote cannot be started if there are already this many users.
home channel is all that is required at the moment
only special channels need to be defined here
everything else will be stored in the db
Special channels: public, home, scans, def, share
home : #channel
These channels will be created when createdb.py is run and some have some special parameters. Any channels will be added here, but the special names are:
- public: Added as a public/galchan. Any other channel will be added with userlevel of member and maxlevel of admin.
- home: This is the default channel for most things.
!letmein
will only let users into this channel. It is also the fallback if thescans
ordef
channels are not set. - scans: This channel will receive all scan requests.By default, users in this channel can cancel or update the number of distorters on any request.
- def: By default, any defcalls parsed from email notifications will appear here first.
- share: The bot will expect to receive shared scans via this channel. This helps to prevent infinite sharing loops.
This is used internally to determine whether the bot is using the legacy
or acl
branch.
General error log for merlin.
Scan parser log.
Log for Arthur (web interface).
Logs all traffic sent to stdout, including all conversations the bot sees. For privacy reasons, this is disabled by default and is the recommended value.
If enabled, this log will record every message sent to or received by merlin. This includes every command sent and everything said in any channel where the bot is. This has potential privacy concerns, so is disabled by default and recommended to stay that way.
Log for excalibur (the ticker). By default, this goes to stdout and the excalibur.sh
script handles logging.
Email logs to admin (see below)
Add letters to select which logs to email: e = errorlog; a = arthurlog; s = scanlog; d = dumplog (excaliburlog)
Note that an email is sent for each line, so scanlog and dumplog will create many email messages for each entry.
This will send an email to the address below for each line of a selected file logged. As such, scanlog and dumplog will result in a lot of email. Even errorlog is likely to send many emails for a single error.
Email address for maillogs. separate multiple addresses with a space.
Make sure that the smtp settings below are correct. If using the localhost mailer, it may be possible to use usernames in place of full email addresses.
If maillogs
is enabled above, the emails will be sent to this address.
Whether to allow "catch-up" from the altdumps botfiles archive specified below. This will avoid missed ticks by collecting them from an archive on another server.
If True, users are automatically added as galmates.
If True, nicks will not be shown in scan requests.
show scan URLs in "delivered to..." messages. If True, the scan URL will be included in the "delivered to" messages, as well as in the message to the requester.
present gal scan requests as a link to the "galaxy scan" page instead of indiviudal requests
If True, when a user requests a scan for a whole galaxy it will link to the in-game "Galaxy Scan" page, with the galaxy preselected. The scan type and individual planets will have to be selected manually, but it reduced the number of clicks and cleans up the scans channel.
more than this many scans in a single request command will be summarized.
If a users requests more than this many scans in one command, the output will show as a single message indicating the number and types of scans along with the highest number of distorters in the set.
When presenting a requested scan to a user, tell them who provided the scan, if known.
"rapid", "join" or blank
If set to rapid or join, the bot keeps track of IRC nicks and their associated registered nicks.
local TCP/IP port to use
This allows different parts of the bot to talk to each other. It must be different where two bots are operating on the same machine.
"clickatell", "googlevoice", or "combined". Note that the "email" smsmode requires "combined" here.
Configuration for various smsmodes is later in the file. For the most part, this should be left as combined
to allow for other smsmodes.
"cached", "enabled", or "disabled"
This controls graphing in Arthur.
mydef can be this old before the bot starts pestering people. Set to 0 to disable.
If a user's mydef is older than this number of ticks, every time they join a channel with the bot in it will send them a notice telling them to update it.
defcalls are sent to all channels, not just home or def.
If this is enabled, defcalls (using the email parser or !defcall
) will be sent to all registered channels (other than public/galchans), rather than just the home
or def
channels.
defcalls will autorequest autoscans (in format PDUNJA) when stored scans are older than scanage.
Leave autoscans blank to disable this feature.
When the bot receives an email notification of new incoming fleets it will request scans of any types specified in autoscans
if the stored versions are older than scanage
ticks.
!attack will autorequest attscans (in format PDUNJA) when scans are older than the current tick.
The bot will request these types of scan when !attack
is used to set up a new attack if the stored versions are older than the current tick.
Default number of waves for !attack.
The !attack
command will produce this number of waves.
Attack is active this many ticks before land tick.
Attacks are considered active and shown on the website this many ticks before the land tick.
Show JGPs on arthur this many ticks this many ticks before land tick.
These patterns will be filled with ID, dists, type, coords for !request list, and ID, dists and link for !request links. Use \x03 to begin a color code, \x0F to reset to default client colors.
This allows advanced users to set a custom format for scan requests in !request list
and !request links
. The order of the items cannot be changed.
Scan requests expire after this many ticks.
Scan requests will not be filled if they are older than this many ticks. This can prevent nuisance messages if someone happens to paste a scan you requested several days or weeks earlier.
0: Disallow requests where a scan exists with the same tick.
1: Allow the request, but make the user repeat it first.
2: Just request it, even if one exists.
This enables "clever" behaviour where the bot will ignore, ask for confirmation or allow multiple requests of the same type on the same planet in the same tick. The behaviour for JGP requests is handled separately because these are more likely to change during a tick.
The bot will send the URL of any scans it sees to this nick or channel, for sharing. This feature is primarily designed to allow scan pooling with the public #Scans bot. If you want to join the scan pool with the #Scans bot, speak to mPulse or Pit.
!tell uses NOTICE by default. Set to True to use PRIVMSG instead.
Specify how to pass !tell
messages to users.
Find new small (one-planet) alliances each tick. If True, excalibur will look for new one-planet alliances each tick, find the relevant planet and add the intel automatically.
Use bcrypt instead of SHA1 for passwords. This will break FluxBB integration and requires the Python bcrypt library. If True, use bcrypt for passwords instead of SHA1. This is a much more suitable algorithm for storing passwords, but is incompatible with FluxBB integration and requires the python bcrypt library which is not usually installed by default.
Users to be notified of new updates. Space-separated pnicks. Should be a subset of [Admins]. Empty will use the first user in the [Admins] section. Remove "updatenotifier" from Hooks/_init_.py to disable.
Filter updates by repo author name. Space separated.
Allow updates from these pnicks. Space separated.
Join this channel to receive updates. If you are forking merlin and would like voice, contact Pit.
Filter notifications by branch, e.g. acl, acl-stable, master, legacy-stable. Also allows these keywords: all, stable. Space separated list. Non-stable branches may require DB structure updates and should only be applied by advanced users, but there is no harm in being notified of them.
Filter notifications by level. Space separated list. Options are:
- major: Patches required for the bot to function correctly, or at all.
- bugfix: Patches fixing bugs in the code.
- minor: Minor changes, e.g. formatting, typos, documentation changes.
- feature: New features.
- all: Any of the above levels
- forks: New merlin forks when they are first added to the update channel
# MySQL
# driver : mysqldb
# dbms : mysql
# Postgres
driver : psycopg2
dbms : postgresql
Use the values for PostreSQL or MySQL. PsotgreSQL is recommended. MySQL is no loner officially supported.
Database username.
Database password.
Database host. If your database is hosted on a different machine, specify it here. Otherwise leave as localhost.
# Default ports:
# Postgres Normal: 5432
# Postgres Alt: 5433
# MySQL: 3306
The port used by your SQL Server. The ports listed in the comment are the default ports, so should work most of the time.
The database name.
This is a URL used by SQL Alchemy to connect to the database. It is generated using the preceding configuration options, so shouldn't need changing manually.
Prefix for using multiple bots in one database. If you are upgrading an existing merlin and do not need this feature, change to blank.
This is a prefix added to all alliance-specific tables in the database. The primary purpose of this is to allow multiple bots to run on the same server with minimum replication. If this is a new installation, it's a good idea to use an abbreviated form of your alliance name here. Leave the trailing underscore (_) for readability.
# member access needed for !letmein, bare minimum etc
# admin access is used by a few commands also
galmate : 0
half : 50
member : 100
trusted : 150
dc : 200
hc : 500
admin : 1000
This is where the access levels are defined. Most of these aren't important and aren't used, but are included to make life easier. Others are required. The higher the number, the higher the access, so admin
at 1000 automatically has access to all commands that member
does at 100.
100 : 1
150 : 5
This feature allows you to set per-tick limits on scan requests, controlled by access level. In the default case, any user with access 100 or below can make 1 scan request per tick. Any user with access 101-150 can make 5 scan requests per tick, and any user with access 151 or higher will not be limited.
This section can be commented out or removed completely if not required.
The website can be accessed by anyone, without logging in. This does not affect member-only functions such as intel, scans and the member list.
Intel on the website requires at least this level of access.
Access to scans requires at least this level of access.
If true, a link is shown to the dumps directory. Further instructions on dump/botfile saving can be found in README.md
Generate a secretkey with:
python -c 'import random; print "".join([random.choice("abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)") for i in range(50)])'
NB: Django 1.5+ will refuse to start if this is blank.
This string is used by Django to hash some data. Version 1.5+ will get upset if you don't set it, so best get it done now, even if you're using an older version. You'll only forget.
arthur : http://localhost:8000/
URL for Arthur (the web interface).
game : http://game.planetarion.com
URL for the game. This should only need to change for special rounds or beta.
The ship stats page of the manual.
Where to find the botfiles / tick dumps
altdumps : http://dumps.dfwtk.com/%s
An archive of tick dumps, so that we can catch up if we start mid-round or miss some.
The individual botfiles. 3 for normal, 3 for the archive.
Scan links, for viewing wihtout logging in.
Waves page.
Galaxy Scan page.
PA Battle Calc.
ip : http://146.185.135.215
# game : http://game.planetarion.com
# r56 : http://r56.planetarion.com
# tof : http://twistoffate.planetarion.com
# ranul : http://pa.ranultech.co.uk
# ranulgame : http://game.ranultech.co.uk
# p45 : http://p45.planetarion.com
IP for accessing Planetarion if you're having DNS issues.
##[arthururls] Section for any URLs arthur may run from, to keep Django happy. No "http", no "/", no port numbers. ###local : 127.0.0.1
user :
pass :
api : api_key
Clickatell configuration.
user :
pass :
api : api_key
Google Voice configuration.
sid :
auth_token:
number :
timeout : 10
warn : True
# timeout is in seconds to wait for an answer.
# If warn is True, anyone answering will be told that it's the bot and to stop wasting credit.
Twilio configuratoin
login :
password :
WhatsApp configuration. See README.md.
SMTP username, for sending emails. Leave blank for local mail.
SMTP password, for sending emails. Leave blank for local mail.
SMTP hostname.
SMTP port. Usually 25 for an external server over SMTP. 0 for the local mail system.
frommail : [email protected]
From address. Preferably one you can view mail for.
IMAP username for the email notifications parser (see README.md for details).
If you don't specify a password here, IMAPPush.py will prompt for it.
IMAP password. If not specified here, it will be requested at runtime.
IMAP server.
Should the bot connect via SSL? This should be set to True wherever SSL is available.
Address to warn if user not found
If a lookup fails in the email parser, it will bounce to this address with a warning.
If False, no mail will be forwarded. Notifications will still be send on after parsing so long as SMTP settings are configured.
This is used to differentiate PA notifications from other email.
Allows using a normal gmail account or similar, using [email protected]. In this mode, a blank defsuffix is recommended.
This changes the parser to look for username+pnick@domain rather than pnick-suffix@domain. More details in README.md.
enabled: Enables FluxBB integration.
Enable FluxBB integration. This includes automatically creating accounts and adding a link to Arthur. See README.md for further details.
url: URL for FluxBB installation.
FluxBB's URL.
prefix: Table prefix for FluxBB.
FluxBB allows setting a prefix for all its tables. This is very useful for preventing conflicts and to see at a glance what is part of the bot and what is part of the forums.
memgroup: ID of the default FluxBB usergroup for members. Set to 0 to disable adding members (Will still update existing accounts).
When auto-adding members to FluxBB, add them to this group.
galgroup: ID of the default FluxBB usergroup for galmates. Set to 0 to disable adding galmates (Will still update existing accounts).
When auto-adding galmates to FluxBB, add them to this group.