Skip to content
Alex Baines edited this page Oct 18, 2016 · 2 revisions

Some modules store configuration files like modules/data/<name>.data, these are listed here:

mod_chans: chans.data

Simply a list of channels to join, one per line.

Example:

#miblo
#test
#yolo

mod_whitelist: whitelist.data

List of special permissions:

file = { line };
line = role , " " , name , <EOL>;
role = "ADMIN" | "WLIST";
name = { ? any IRC nick chars ? };

Example:

WLIST aoi
WLIST byakuya
ADMIN chiaki

mod_meta: meta.data

List of modules to enable per channel:

file    = { line };
line    = channel , { " " , module } , <EOL>;
channel = { ? any IRC chan chars ? };
module  = { ? any chars representing a module's name (no spaces assumed) ? };

Example:

#random markov haiku alias linkinfo brainfuck
#srsbsns linkinfo alias

mod_alias: alias.data

Stores the list of aliases in this format:

file        = "VERSION 2" , <EOL> , { alias-decl };
alias-decl  = { key , " " } , permission , " " , value , <EOL>;
key         = global-key | channel-key;
global-key  = global-pre , { key-char };
channel-key = channel-pre , { key-char };
channel-pre = "#" | "&" | "+" | "~" | "." | "!";
global-pre  = { ? [a-z0-9] ? };
key-char    = { ? any character except space or uppercase ? };
permission  = "NORMAL" | "WLIST" | "ADMIN";
value       = { ? any char except <EOL> ? };

Example:

VERSION 2
beep boop NORMAL beep boop I'm a bot
#random,beep NORMAL I only say this in #random!
nn NORMAL Goodnight %a
#test,a #test,b WLIST hello %t, you're whitelisted, in #test, and used !a or !b.

mod_twitch: twitch.data

Information for the twitch tracker and follow notifier. "TRACK" is for a channel added to the twitch tracker, "TAG" is for a user that wants to be tagged when a tracked channel starts streaming, "OUTPUT" is for the channel that the bot makes stream announcements, "NOTIFY" is for a channel that wants follow notifications.

file       = { cmd , <EOL> };
cmd        = track-cmd | tag-cmd | output-cmd | notify-cmd;
track-cmd  = "TRACK " , chan , " " , track-name;
track-name = { ? any char except <EOL> ? };
tag-cmd    = "TAG " , tag-name;
tag-name   = { ? any IRC nick chars ? };
output-cmd = "OUTPUT " , chan;
notify-cmd = "NOTIFY " , chan;
chan       = { ? any IRC channel chars ? };

Example:

TRACK #naysayer88 Jonathan Blow
TRACK #miblo
TAG xxx_sephiroth_420_xxx
TAG youre_it
OUTPUT #streams
NOTIFY #miblo

mod_karma: karma.data

Stores users karma scores.

file = { line };
line = { name } , " " , up , ":" , down , <EOL>;
name = { ? any IRC nick chars ? } , ":";
up   = integer
down = integer

Example:

eisbehr: 999:0
abner:abnercoimbre: 0:999
d7:d7samurai:c: 321:123

mod_markov: markov.data

This is a gzipped binary file that contains the wordlist, key + word hash tables, and array of values. It's basically dumped structs so it loads acceptably fast on my raspberry pi.

DISCLAIMER: It does minimal checking for the same reason, so be careful about accepting random copies of this from other people - it probably isn't secure and specially crafted files could probably cause memory corruption / maybe even code execution.