6 1. Install [node.js](http://nodejs.org/) (Last tested on v7.4.0)
7 2. Either use `git clone https://github.com/nuclearace/CytubeBot` if you have git or download the zip file. (git is better since it allows easier updates via `git pull`
8 3. cd into the CytubeBot directory and run `npm install`
9 4. Add required info into config.json. See config section.
10 5. run `node index.js`
13 If you receive errors related to libxmljs, you need to install GCC and run `npm install` again. Getting it to work on Windows is a pain, so your best bet is to run it on Linux or OS X.
17 - `cytubeServer` - URL of the server. Ex "cytu.be"
18 - `username` - Account name the bot uses on the Cytube server
19 - `pw` [optional] - Password for the bot, blank logs in as guest
20 - `room` - Room the bot should join
21 - `roompassword` [optional] - Room password if there is one
22 - `wolfram` [optional] - WolframAlpha apikey. See http://products.wolframalpha.com/api/
23 - `weatherunderground` [optional] - WeatherUnderground apikey. see http://www.wunderground.com/weather/api/
24 - `youtubev3` [optional] - Youtubev3 api key. See https://developers.google.com/youtube/v3/
25 - `deleteIfBlockedIn` [optional] - If given youtubev3 and you would like to delete videos blocked in a specific country, put the 2 letter country code of it here
26 - `enableWebServer` - Turns on/off the webserver
27 - `webURL` [optional] - The domain/ip you would use to connect to the webserver example: http://google.com or http://192.76.32.222
28 - `webPort` [optional] - The port for the webserver. Anything below 1000 requires root.
29 - `socketPort` [optional] - The port for socketIO. Anything below 1000 requires root.
30 - `useIRC` - Whether or not to bridge to IRC. Note: All commands that require rank will not work
31 - `ircServer` [optional] - the IRC server address. ex: "irc.6irc.net"
32 - `ircNick` [optional] - The nickname of the bot on irc.
33 - `ircPass` [optional] - Password for the IRC nick (If needed).
34 - `ircChannel` [optional] - The channel the bot should join. ex: "#testing"
35 - `usemodflair` - Whether to use modflair or not.
36 - `enableLogging` - Whether to write log data to a file
37 - `maxvideolength` - Maximum length of videos to select from database
38 - `cleverbotioUser` - API User for cleverbot.io. See https://cleverbot.io/
39 - `cleverbotioKey` - API Key for cleverbot.io. See https://cleverbot.io/
44 Require rank/permission:
46 - `$mute/$unmute` - Mutes/Unmutes the bot. Requires mod on the channel or "M" permission.
47 - `$clearchat` - Clears chat. Requires mod or "M" permission.
48 - `$poll title.option1.option2.etc.[true]` - Opens a poll, use . to seperate options. The last option, if "true", makes it an obscured poll (votes are hidden to non-mods). Requires mod or "P" permission
49 - `$endpoll` - Ends a poll. Requires mod or "P" permission
50 - `$kick (username) [reason]` - Kicks user. Requires mod or kick permission.
51 - `$ban (username) [reason]` - Namebans user. Requires mod or ban permission.
52 - `$ipban (username) [reason]` - IPbans user. Requires mod or ban permission.
53 - `$unban (username)` - Unbans user. Requires mod or ban permission.
54 - `$blacklistuser (username) (true|false)` - Makes it so this users videos are not randomly added if the bot is leading
55 - `$blockuser (username) [true|false]` - Stops username from adding videos. Requires owner rank to use
56 - `$allow (username)` - Makes it so `user` can use the bot. Requires mod or "M" permission. Note - This command is case-sensitive.
57 - `$disallow (username)` - Makes it so `user` cannot use the bot. Requires mod or "M" permission. Note - This command is case-sensitive.
58 - `$permissions []` - example: `$permissions +x bob` gives permission x to bob. To take away use `$permissions -x bob`. To give or take away all permissions do `$permissions +all bob`/`$permissions -all bob`. See https://github.com/nuclearace/CytubeBot/wiki/Permissions
59 - `$userlimit (true|false) | n` - Limits the number of videos users can add. Mods are not exempt. Ex: `$userlimit true 5`
60 - `$addrandom [n]` - Adds n random videos from database. Requires mod on channel or "R" permission.
61 - `$blacklist` - Blacklists currently playing video so that the bot doesn't add it randomly. Users can still add video. See $autodelete. Irreversible without going into database. Requires admin on the channel.
62 - `$autodelete` - Makes it so non-mods cannot add currently playing video. Irreversible without going into database. Requires owner on channel.
63 - `$skip` - Skips the current video. Requires mod on channel or "S" permission.
64 - `$delete (username) [all | n]` - Deletes all or n videos added by username. Deletes the videos from the botton up. Leaving out all or n deletes the last video. Requires mod on channel or "D" permission
65 - `$purge (username)` - Deletes all videos added by username. Requires mod on channel or "D" permission
66 - `$bump -(user|title) (username | title to be matched) [all|n]` - Bumps all or n videos by username, or bumps videos matching the given title. Ex: `$bump -title the dog 2` - Will bump the last two videos matching `.*the dog.*`.
67 - `$add URL [next]` - Adds link, requires mod because of potential for media limit abuse.
68 - `$shuffle` - Shuffles the playlist. Requries mod or permission
69 - `$settime time` - Sets the time on the video to time. Whereas time is in seconds. Requires mod or "T" permission.
71 Don't require rank/permission:
73 - `$blacklistedusers` - Lists the blacklisted users
74 - `$blockedusers` - Lists the blocked users
75 - `$listpermissions [username]` - Lists the hybrid mod permissions for a user. Omitting username shows calling users permissions.
76 - `$quote [username]` - Fetches a quote from the user given, otherwise fetches a random quote
77 - `$processinfo` - Shows basic node process memory usage
78 - `$status` - Sends status ie. if the bot is muted
79 - `$talk message` - Cleverbot talk bot
80 - `$wolfram query` - Requires a [WolframAlpha API key](http://products.wolframalpha.com/api/)
81 - `$weather (US zip code | city/town country)` - Looks up current conditions. Requires [WeatherUnderground API key](http://www.wunderground.com/weather/api/)
82 - `$forecast (US zip code | city/town country) [tomorrow]` - Looks up forecast for that day, or if tomorrow is given, the next day. Requires [WeatherUnderground API key](http://www.wunderground.com/weather/api/)
83 - `$choose (choice1 choice2...)` - Chooses a random item from the choices given.
84 - `$translate [[bb] | [aa>bb] | [aa->bb]] string` -
85 Translates the given string from aa, which defaults to detecting the language, to bb, which defaults to en, using Google Translate.
86 The languages aa and bb must be specified as an ISO two letter language code.
91 You can add custom commands inside custom.js, this will help you avoid merge conflicts when I update the bot.
95 You can contact me either by creating an issue (if you believe there is a bug or you have an idea for an improvement) or by emailing at nuclearace@cytu.be. I can also be found on the Cytube support [irc](http://webchat.6irc.net/?channels=cytube), just ask for nuclearace.