tokebot/config.js
2021-12-06 19:59:30 -05:00

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: "$M0k3&Cr04k"
},
//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;