297 lines
12 KiB
JavaScript
297 lines
12 KiB
JavaScript
var config = {
|
|
//api related stuff
|
|
api: {
|
|
//YouTube API v3 key
|
|
youtube_key: "",
|
|
//Wolfram API key
|
|
wolfram_key:""
|
|
},
|
|
//Connection and socket options...
|
|
connection: {
|
|
/* If true, will connect to a secure cytu.be server using an encrypted
|
|
* connection. If false, will use an unsecure server. You should ONLY ever
|
|
* set this to false if you cannot connect to a secure server.
|
|
*/
|
|
secureSocket: true,
|
|
//Hostname of the server to connect to. https://cytu.be/ becomes "cytu.be"
|
|
hostname: "ourfore.st",
|
|
//If true, will only allow socket connections that are on the same domain as
|
|
// the hostname above. Only disable this if you need to and know what you're
|
|
// doing.
|
|
sameDomainSocketOnly: true
|
|
},
|
|
db: {
|
|
//If true, will use database stuff
|
|
use: false,
|
|
//Tables to use in the database. Comments with each table describe what they
|
|
// handle and what will be subsequently disabled if false
|
|
useTables: {
|
|
users: true, //user activity time, visits
|
|
//Disabling the "users" table will disable the child tables below
|
|
emote_data: true, //Emote counts
|
|
duel_stats: true, //Dueling stats, will also disable duels
|
|
chat: true, //Chat logging, quotes
|
|
bump_stats: true, //Bump counts for moderators
|
|
saved_polls: true, //Storage of poll info for reuse
|
|
video_play_data: true //Not implemented
|
|
},
|
|
/*
|
|
Database connection info. Change these options as needed.
|
|
*/
|
|
connectionInfo: {
|
|
user: 'username',
|
|
host: 'localhost',
|
|
database: 'dbname',
|
|
password: 'password',
|
|
port: '5432',
|
|
client_encoding: 'utf8'
|
|
},
|
|
//If true, will allow statistic and quote collection of unregistered users
|
|
allowGuestData: false
|
|
},
|
|
//options relating to the Discord Bot feature
|
|
discord: {
|
|
//if true, will use the token below to log into a discord bot
|
|
use: false,
|
|
token: "",
|
|
//if true, will send Now Playing notifications to the given channel ID
|
|
sendNowPlayingMessages: true,
|
|
nowPlayingChannelID: "",
|
|
//if true, will send poll open/close notifications to the given channel ID
|
|
sendPollResultMessages: true,
|
|
pollResultChannelID: "",
|
|
//url to the icon to use for rich embed messages (20x20 is best)
|
|
iconUrl: "",
|
|
//hex colors for rich embed messages
|
|
pollClosedColor: "#FF2222", //color of Poll Closed messages
|
|
pollInProgressColor: "#22AAFF", //color of Poll In Progress messages
|
|
pollOpenedColor: "#22FF22" //color of Poll Opened messages
|
|
},
|
|
//Interface options...
|
|
interface: {
|
|
//If true, usernames will be colored in the terminal.
|
|
// Disabling this will cut down a few operations, but there will be
|
|
// a negligible performance boost if any at all.
|
|
colorUsernames: true,
|
|
//Same thing but for titles of media items.
|
|
colorMediaTitles: true,
|
|
//Rank colors. If colorUsernames is true, usernames will be colored
|
|
// by rank. Uses color names from the cli-color package.
|
|
rankColors: {
|
|
anonymous: "blackBright",
|
|
unregistered: "white",
|
|
server: "cyanBright",
|
|
1: "whiteBright",
|
|
1.5: "yellowBright",
|
|
2: "blueBright",
|
|
3: "greenBright",
|
|
4: "redBright",
|
|
5: "red",
|
|
255: "magentaBright"
|
|
},
|
|
/* If true, chat messages may be sent from the CLI Interface
|
|
* without using the /say command. Otherwise, if false,
|
|
* the /say command must be used to send a chat message.
|
|
* False is recommended to prevent accidental chat messages.
|
|
*/
|
|
allowQuickCLIChat: false,
|
|
//If true, debug logs will be shown and logged into debug.log.
|
|
logDebug: true,
|
|
//If true, much more info will be logged. Not necessary, but can be helpful.
|
|
// Verbose logs contain a magentaBright asterisk after the timestamp.
|
|
logVerbose: true,
|
|
//If true, non-generic logs will still be put into the regular log file.
|
|
// Can be helpful for having full log context in one file, but will result
|
|
// in a larger bot.log
|
|
logConsolidation: true,
|
|
//If true, excludes errors from the main log if consolidation is enabled.
|
|
// Highly recommended as errors might include sensitive information.
|
|
excludeErrorsFromLog: true,
|
|
//If true, logged times will use a 24-hour format. If false, will
|
|
// use 12-hour time along with am/pm. Doesn't affect anything else.
|
|
useTwentyFourHourTime: true,
|
|
//If true, title of the terminal/prompt will be populated with various
|
|
// bits of info. Turn this off if you will never see it.
|
|
fancyTitle: true,
|
|
//If true, muted users will be clearly indicated in chat message logs.
|
|
indicateMutedUsers: true
|
|
},
|
|
//Login options...
|
|
//Hidden from Bot.cfg object
|
|
login: {
|
|
//If true, bot will not log into an account.
|
|
guest: false,
|
|
//Room to connect to.
|
|
room: "afterparty",
|
|
//Room password, if required.
|
|
roomPassword: "",
|
|
//Username and password. Not needed if logging in as a guest.
|
|
username: "tokebot",
|
|
password: "pass"
|
|
},
|
|
//Use this to enumerate ranks for your room.
|
|
// Be absolutely sure these ranks are correct.
|
|
// If changed, make sure you refactor any occurrences in the entire bot.
|
|
// Found in Bot.RANKS, not Bot.cfg
|
|
RANKS: {
|
|
GUEST: 0,
|
|
USER: 1,
|
|
LEADER: 1.5,
|
|
MOD: 2,
|
|
ADMIN: 3,
|
|
OWNER: 4,
|
|
FOUNDER: 5,
|
|
SITEOWNER: 10,
|
|
SUPERADMIN: 255
|
|
},
|
|
//Define proper names for ranks. Used when a user doesn't have permission
|
|
//for a command, for example.
|
|
rankNames: {
|
|
unregistered: "Guest",
|
|
1: "User",
|
|
1.5: "Leader",
|
|
2: "Moderator",
|
|
3: "Room Admin",
|
|
4: "Room Owner",
|
|
5: "Room Founder",
|
|
10: "Site Owner",
|
|
255: "Superadmin"
|
|
},
|
|
chat: {
|
|
//If true, emotes will be colored. Must be true for emote data to be recorded
|
|
// in the database.
|
|
parseEmotes: true,
|
|
//Max emotes per message. This is essentially infinite in vanilla rooms, you'd
|
|
// have to edit execEmotes in your room script to limit emotes. Set below 0
|
|
// for infinite emotes (-1, for example). Set to 0 if emotes are disabled.
|
|
maxEmotes: -1,
|
|
//Allow using commands in the middle of a message with two colons, example: ::!cmdname
|
|
allowInlineCmd: true,
|
|
//The trigger character will be used to distinguish chat commands.
|
|
// Must be one character. Valid chars: !#$%^&*()_+-=`~.,?
|
|
trigger: "!",
|
|
//If true, sends chat messages using your rank color.
|
|
useFlair: true,
|
|
//Minimum rank to bypass both user and global cooldowns on commands.
|
|
// Set to -1 to enforce cooldowns for all ranks.
|
|
minRankToBypassCooldown: 3,
|
|
//If true, disables any chat commands.
|
|
disableAllCommands: false,
|
|
//Put chatfilters here if needed.
|
|
filters: {
|
|
//Code for img chat command.
|
|
img: "",
|
|
//Code for comment chat command. (excluding brackets: [code][/code] becomes just "code")
|
|
commentAuthor: "",
|
|
//Code for pokeroll filter
|
|
pokeroll: "",
|
|
//Tags for spoiler filter. Opener is the left tag, closer is the right tag.
|
|
//Example: [spoiler] is the opener, [/spoiler] is the closer
|
|
spoilerTagOpener: "",
|
|
spoilerTagCloser: ""
|
|
},
|
|
//If true, will use ssc:#rrggbb in some chat messages which requires
|
|
// Xaekai's external chat color script in the room. Search the bot's code
|
|
// for examples where this variable is used, as it doesn't automatically
|
|
// remove any instances of ssc itself.
|
|
roomHasSSC: false,
|
|
//If true, will announce winning option of polls when they close. Requires
|
|
// two or more options in the poll, and will only occur if the poll
|
|
// ends after exactly 3 minutes.
|
|
announcePollResults: true,
|
|
//If true, muted users will not be able to use commands and their emotes will not
|
|
// be checked. However, this may make it easier for users to determine if they
|
|
// are muted or not.
|
|
ignoreMutedUsers: true,
|
|
//Minimum length a chat message must be before putting it in the database
|
|
minimumQuoteLength: 16
|
|
},
|
|
//Media and playlist options...
|
|
media: {
|
|
//Maximum position to bump videos to. This should be according to a 1-based index,
|
|
// or how you'd see the playlist on the site.
|
|
bumpCap: 5,
|
|
//Amount of milliseconds between bumps of individual users.
|
|
bumpCooldown: 300000
|
|
},
|
|
misc: {
|
|
//Controls the bot's AFK state automatically.
|
|
// 0 - Disabled (default)
|
|
// 1 - Tries to stay AFK at all times
|
|
// 2 - Tries to stay active (not AFK) at all times
|
|
autoAFK: 0,
|
|
//Choose a language to use. Currently does nothing, planning on
|
|
// implementing this in the future (also a command to change it during runtime)
|
|
lang: "en",
|
|
//List of bot usernames that may be in your room. Bots will not receive mod-only
|
|
// PM broadcasts and will not be able to execute commands. Their messages cannot
|
|
// be stored and/or quoted. Keep the names lowercase. This bot's name is not needed.
|
|
// Example: ["botname1", "botname2"]
|
|
bots: [],
|
|
//List of blacklisted avatar hostnames. If a user's profile picture's hostname
|
|
// matches one of these, they'll be notified if moderation.notifyBlacklistedAvatar
|
|
// is true.
|
|
// Example: ["maliciousdomain.gov", "wackydomainname.io"]
|
|
blacklistedAvatarHosts: [],
|
|
//Threshold in seconds for the total playlist time to be considered low. Each time
|
|
// the playlist time falls below this, the bot will send a chat message warning of
|
|
// a low playlist. Must also have moderation.notifyLowPlaylistTime set to true.
|
|
lowPlaylistTime: 3600,
|
|
//Minimum amount of time in milliseconds between queued actions.
|
|
// Helps to prevent flooding the server. Should stay above maybe 200ms.
|
|
queueInterval: 200, //Generic socket event.
|
|
broadcastPMQueueInterval: 250, //For broadcasts of private messages.
|
|
largeDataQueueInterval: 2000 //For large data requests, like ban list or channel log.
|
|
},
|
|
moderation: {
|
|
//If true, will automatically disallow users if any of their aliases are disallowed.
|
|
autoDisallow: true,
|
|
//If true, will broadcast a PM to online mods if a new user joins the room.
|
|
// Requires the user table of the database to be active.
|
|
notifyNewUser: true,
|
|
//If true, will broadcast a PM to online mods if a joining user's subnet
|
|
// matches that of any banned users.
|
|
// Requires rank >=3, as the banlist requirement is hardcoded that way.
|
|
notifyBannedSubnets: true,
|
|
//If true, will automatically shadowmute users whose subnets match those of
|
|
// banned users.
|
|
autoShadowmuteOnSubnetMatch: false,
|
|
//If true, will PM users if their avatar hostname matches one in misc.blacklistedAvatarHosts
|
|
notifyBlacklistedAvatar: false,
|
|
//If true, will send a low playlist time warning message in chat whenever the
|
|
// total playlist time falls below misc.lowPlaylistTime
|
|
notifyLowPlaylistTime: true,
|
|
//If true, will send a chat message whenever the skip rate is changed
|
|
notifySkipRateChange: true
|
|
},
|
|
advanced: {
|
|
//If true, will automatically grab the Channel Log and save it after certain channel events.
|
|
// Requires Rank 3+
|
|
automaticChannelLog: false,
|
|
//If true, index.js will look for the scripts in .\lib\[channel name]\
|
|
// Probably useful for running multiple bot instances, but not very practical
|
|
scriptsInChannelFolder: false,
|
|
//If true, loads customchatcommands-roomname.js instead of
|
|
// customchatcommands.js
|
|
useChannelCustomCommands: false,
|
|
//If true, uses settings-roomname.json instead of settings.json
|
|
useChannelSettingsFile: true,
|
|
//List of command files to load. If useChannelCustomCommands is true, you
|
|
// do not need to include the channel name, but it won't break anything if
|
|
// you do. Try not to load too many command files as it might increase
|
|
// the bot's startup time.
|
|
// Command files must be named customchatcommands-NAME.js
|
|
// For example, if this is set to ["test", "external", "fun"], the bot will
|
|
// look for:
|
|
// customchatcommands-test.js
|
|
// customchatcommands-external.js
|
|
// customchatcommands-fun.js
|
|
// Be aware that this also respects the scriptsInChannelFolder option.
|
|
// Duplicate commands will be overwritten, with the last one loaded taking
|
|
// effect.
|
|
customCommandsToLoad: ["toke"]
|
|
}
|
|
}
|
|
|
|
module.exports = config;
|