├── LICENSE ├── app.md ├── commands ├── commandlist.md ├── commands.md ├── commercial.md ├── filters.md ├── game.md ├── marker.md ├── poll.md ├── regulars.md ├── songs.md ├── sort ├── tags.md ├── title.md ├── variableslist.md └── winner.md ├── control-panel ├── commands.md ├── giveaways.md ├── managers.md ├── regulars.md ├── song-requests.md ├── sort ├── spam-protection.md └── timers.md ├── discord.md ├── faq.md ├── setup.md ├── spam-protection ├── blacklist.md ├── caps.md ├── emotes.md ├── links.md ├── repetitions.md ├── sort └── symbols.md ├── variables ├── arguments.md ├── channel.md ├── channelid.md ├── chatid.md ├── command.md ├── count.md ├── countdown.md ├── countup.md ├── djkhaled.md ├── eval.md ├── lastfm.md ├── leagueoflegends.md ├── meta ├── provider.md ├── query.md ├── querystring.md ├── rainwave.md ├── steam.md ├── teamfighttactics.md ├── time.md ├── touser.md ├── tweet.md ├── twitch.md ├── urlfetch.md ├── user.md ├── userid.md ├── userlevel.md └── weather.md └── what-is-nightbot.md /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Nightbot 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /app.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Nightbot App 3 | Sort: 2 4 | */ 5 | 6 | In order to provide some extra functionality to song requests, we've created a small app for Windows and MacOS. With this app you'll be able to show the current song in your streaming software (such as OBS) and use hotkeys for song requests. 7 | 8 | ## Download 9 | 10 | * [Windows v0.1.7](https://nightbot.tv/dl/nightbot_v0.1.7_win.exe) 11 | * [MacOS v0.1.7 (Intel)](https://nightbot.tv/dl/nightbot_v0.1.7_mac_x64.zip) 12 | * [MacOS v0.1.7 (Apple Silicon)](https://nightbot.tv/dl/nightbot_v0.1.7_mac_arm64.zip) 13 | 14 | ## Current Song Output 15 | 16 | On Windows and MacOS, we output a file in the Nightbot folder within your Documents folder. Here are the default paths: 17 | 18 | * Windows: `%USERPROFILE%\Documents\Nightbot\` 19 | * MacOS: `/Users/USERNAME/Documents/Nightbot/` 20 | 21 | You can customize the output of this file from the Settings menu on the Song Requests page. 22 | 23 | ## Hotkeys 24 | 25 | There are global hotkeys to make controlling song requests when streaming easier. These hotkeys make use of media keys, so if your keyboard does not support them you're not able to use them at this time. 26 | 27 | * Skip Song: `Fast Forward Media Key` 28 | * Play/Pause Toggle: `Play/Pause Media Key` 29 | * Volume Up: `Ctrl/Cmd` + `Shift` + `U` 30 | * Volume Down: `Ctrl/Cmd` + `Shift` + `D` 31 | 32 | ## Copyright Warning 33 | 34 | Streaming copyrighted music content may result in negative consequences for your stream. Many music content publishers (Monstercat, Ninety9Lives, etc.) offer licensing for their content to be played on streaming platforms like YouTube and Twitch. We recommend setting up a channel playlist full of licensed/free music and then restricting requested songs to the channel playlist (this can be configured in the song request settings). This prevents viewers from requesting unlicensed songs and causing you to receive a copyright strike/takedown by streaming copyrighted content. 35 | -------------------------------------------------------------------------------- /commands/commandlist.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Commands List 3 | Sort: 1 4 | */ 5 | 6 | These are the default commands for Nightbot. Find out more information about each command with its related link. 7 | 8 | * `!nightbot` 9 | * `join` - Force Nightbot to Join your Channel (Only in [Nightbot's Chat](https://www.twitch.tv/nightbot)) [**Owner Only**] 10 | * `part` or `leave` - Force Nightbot to Leave your Channel [**Owner Only**] 11 | * `!commands` - Link to Command Page for the Channel [[*more info*](https://docs.nightbot.tv/commands/commands)] 12 | * `add` - Add Custom Command to Nightbot 13 | * `edit` - Edit existing Custom Command 14 | * `delete` - Delete existing Custom Command from Nightbot 15 | * `!commercial` - Run a Commercial for Specified Duration [[*more info*](https://docs.nightbot.tv/commands/commercial)] 16 | * `!filters` - Manage existing Spam Protection Filters [[*more info*](https://docs.nightbot.tv/commands/filters)] 17 | * `!permit` - Allows User to Temporarily Post Links [[*more info*](https://docs.nightbot.tv/spam-protection/links)] 18 | * `!game` - Show Current Game for the Channel [[*more info*](https://docs.nightbot.tv/commands/game)] 19 | * `` - Set Current Game for the Channel 20 | * `!marker` - Set a Twitch stream marker from chat [[*more info*](https://docs.nightbot.tv/commands/marker)] 21 | * `!poll` [[*more info*](https://docs.nightbot.tv/commands/poll)] 22 | * `new` - Create a new Strawpoll to vote on 23 | * `results` - View Current Results of Latest Strawpoll 24 | * `!regulars` [[*more info*](https://docs.nightbot.tv/commands/regulars)] 25 | * `add` - Add Username to Regular UserLevel 26 | * `delete` - Delete Username from Regular UserLevel 27 | * `!songs` [[*more info*](https://docs.nightbot.tv/commands/songs)] 28 | * `current` - Display Current Song from Song Requests 29 | * `delete` - Delete Existing Song from the Song Queue 30 | * `list` - Link to Songlist for the Channel 31 | * `playlist` - Link to Playlist for the Channel 32 | * `next` - Display Next Song from Song Requests 33 | * `request` - Add Song into Song Queue 34 | * `skip` - Skip the Currently Playing Song in Song Requests 35 | * `save` - Save the Currently Playing Song into user Playlist 36 | * `promote` - Move Song to be Next Playing Song 37 | * `volume` - View and Change Current Song Requests Volume 38 | * `play` - Start the Playing of Song Requests (must be open in browser) 39 | * `pause` - Pause the Playing of Song Requests (must be open in browser) 40 | * `!tags` - Show Current Tags for the Channel [[*more info*](https://docs.nightbot.tv/commands/tags)] 41 | * `` - Set Current Tags for the Channel 42 | * `!title` - Show Current Title for the Channel [[*more info*](https://docs.nightbot.tv/commands/title)] 43 | * `` - Set Current Title for the Channel 44 | * `!winner` - Get Random Chatter from the Channel [[*more info*](https://docs.nightbot.tv/commands/winner)] 45 | -------------------------------------------------------------------------------- /commands/commands.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !commands 3 | Sort: 3 4 | */ 5 | 6 | The !commands command allows users to get a link to your custom commands page and allows you and your moderators to add, remove, and modify custom commands. 7 | 8 | ## Adding Commands 9 | 10 | ### Usage 11 | 12 | > !commands add `!command_name` `command response` 13 | 14 | `!command_name` is the name of the command you wish to use. Commands are usually prefixed with an exclamation mark 15 | 16 | `command response` is the message you want Nightbot to reply with when the command is called 17 | 18 | ### Example 19 | 20 | > !commands add !testing this is a test message 21 | 22 | When !testing is called, the command will return 23 | 24 | > this is a test message 25 | 26 | ## Editing Commands 27 | 28 | ### Usage 29 | 30 | > !commands edit `!command_name` `command response` 31 | 32 | `!command_name` is the name of command you wish to edit 33 | 34 | `command response` is the message you want Nightbot to reply with when the command is called 35 | 36 | ### Example 37 | 38 | > !commands edit !testing new testing message 39 | 40 | When !testing is called, the command will now return 41 | 42 | > new testing message 43 | 44 | ## Deleting Commands 45 | 46 | ### Usage 47 | 48 | > !commands delete `!command_name` 49 | 50 | `!command_name` is the name of command you wish to use 51 | 52 | ### Example 53 | 54 | > !commands delete !testing 55 | 56 | ## Advanced Usage 57 | 58 | ### Userlevels and Cooldowns 59 | 60 | When adding and editing commands, you can also specify the userlevel required to execute the command as well as the command's cooldown time. You just need to apply the parameters as shown below. 61 | 62 | > !commands add `!command_name` -ul=`userlevel` -cd=`cooldown` -a=`!alias` `command response` 63 | 64 | `!command_name` / `command response` is the same as above. 65 | 66 | `cooldown` is the minimum number of seconds between command uses. 67 | 68 | `userlevel` is one of the valid userlevels from below. 69 | 70 | `!alias` is a different command you want this command to call. Note that the input passed to the provided alias is the `command response`. To capture user input, you'd need to place [variables](https://docs.nightbot.tv/commands/variableslist) in the `command response` (like `$(query)`). 71 | 72 | #### UserLevel values 73 | 74 | * **owner** - Channel Owner 75 | * **moderator** - Channel Moderator 76 | * **twitch_vip** - Twitch VIP (only for Twitch accounts) 77 | * **regular** - Nightbot Regular (users in the [regulars](https://docs.nightbot.tv/control-panel/regulars) list) 78 | * **subscriber** - Paid Channel Subscriber 79 | * **everyone** - Normal User *(default)* 80 | 81 | ### Variables 82 | 83 | Variables can be used within command responses. For a list of variables and examples of their use, check out the [Variables](https://docs.nightbot.tv/commands/variableslist) page. 84 | 85 | ### Chat Commands 86 | 87 | On Twitch, Nightbot allows you to use the following chat commands in Nightbot responses: 88 | 89 | * `/me` - Calls attention to the message by italicizing it. 90 | * `/announce` - Calls attention to the message by highlighting it (with a gradient color). 91 | * `/announceblue` - Calls attention to the message by highlighting it blue. 92 | * `/announcegreen` - Calls attention to the message by highlighting it green. 93 | * `/announceorange` - Calls attention to the message by highlighting it orange. 94 | * `/announcepurple` - Calls attention to the message by highlighting it purple. 95 | 96 | On YouTube, Trovo, Noice, and SOOP, chat commands are not supported at this time. 97 | -------------------------------------------------------------------------------- /commands/commercial.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !commercial 3 | Sort: 12 4 | */ 5 | 6 | The !commercial command will run a commercial for a specified length. This command will only work if your channel is partnered. 7 | 8 | ## Usage 9 | 10 | > !commercial `duration` `[silent]` 11 | 12 | `duration` is the length you want the commercial to run for. The duration can be `30`, `60`, `90`, `120`, `150` or `180` seconds. 13 | 14 | `[silent]` is an optional value that will hide the Nightbot response, particularly for use in Timers. 15 | 16 | ### Examples 17 | 18 | > !commercial 30 19 | 20 | will start a commercial with a duration of 30 seconds. 21 | 22 | > !commercial 60 silent 23 | 24 | will start a commercial with the Nightbot response hidden. 25 | 26 | **Note:** The default UserLevel for the !commercial command is set to `owner`. 27 | -------------------------------------------------------------------------------- /commands/filters.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !filters 3 | Sort: 4 4 | */ 5 | 6 | The !filters command allows you and your moderators to edit existing Nightbot filters. For managing filters in the control panel please see [Spam Protection](https://docs.nightbot.tv/control-panel/spam-protection). 7 | 8 | In order to use the [!permit command](https://docs.nightbot.tv/spam-protection/links) the !filters command must be enabled. 9 | 10 | ## Selecting Spam Filter 11 | 12 | ### Usage 13 | 14 | > !filters `spam_filter` 15 | 16 | As explained above, the filters command at its core allows control over Nightbot's spam protection filters. 17 | 18 | `spam_filter` is the name of the filter that you or your moderators wish to manage and edit. The current spam filter names are identical to the [Spam Protection](https://docs.nightbot.tv/control-panel/spam-protection) located in the Control Panel. The filter names are as followed: 19 | 20 | - **blacklist** - Prevents chatters from posting certain words or phrases [[*more info*](https://docs.nightbot.tv/spam-protection/blacklist)] 21 | - **caps** - Prevents chatters from posting in all or mostly capitalizes messages [[*more info*](https://docs.nightbot.tv/spam-protection/caps)] 22 | - **emotes** - Prevents chatters from posting many emotes in messages [[*more info*](https://docs.nightbot.tv/spam-protection/emotes)] 23 | - **links** - Prevents chatters from posting links, and allows you to whitelist certain links [[*more info*](https://docs.nightbot.tv/spam-protection/links)] 24 | - **symbols** - Prevents chatters from posting many symbols in messages [[*more info*](https://docs.nightbot.tv/spam-protection/symbols)] 25 | - **repetitions** - Prevents chatters from posting repeating words and phrases [[*more info*](https://docs.nightbot.tv/spam-protection/repetitions)] 26 | 27 | As this step alone Nightbot will return both if the filter is enabled or disabled and further spam protection settings that can be managed. 28 | 29 | ### Example 30 | 31 | > !filters caps 32 | 33 | will return the response 34 | 35 | > Night -> No setting was specified. Current status for caps filtering: enabled. Possible settings: enable/disable/limit/message/time/silent/userlevel 36 | 37 | ## Filter Management 38 | 39 | ### Usage 40 | 41 | > !filters `spam_filter` `settings` 42 | 43 | After specifying a `spam_filter` from above, entering a setting will allow you and your moderators to modify certain aspects of the specified filter. The settings are identical to those in the [Spam Protection](https://docs.nightbot.tv/control-panel/spam-protection) menu. 44 | 45 | After selecting a setting you want to modify, a value, such as a number or text, needs to be entered to change the setting. 46 | 47 | **Note**: Placing "enable" or "disable" in the setting will turn on and off the specified filter respectively. 48 | 49 | ### Examples 50 | 51 | These examples show an assortment of different use cases for the !filter command. 52 | 53 | > !filters caps limit 8 54 | 55 | will change the current limit of caps to 8 56 | 57 | > !filters links message No Links! 58 | 59 | will change the links timeout message to "No Links!" 60 | 61 | > !filters symbols disable 62 | 63 | will disable the symbols filter -------------------------------------------------------------------------------- /commands/game.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !game 3 | Sort: 5 4 | */ 5 | 6 | The !game command displays the current game being played on the stream and allows you and your moderators to modify it. 7 | 8 | ## Usage 9 | 10 | > !game `game name` 11 | 12 | `game name` is the name of the game that you wish to change to. Only place a game name to change the current game. Omitting this value displays the current game. 13 | 14 | ### Examples 15 | 16 | > !game 17 | 18 | will return "night is playing League of Legends" 19 | 20 | > !game League of Legends 21 | 22 | will return "The stream game has been updated to: League of Legends" 23 | 24 | **Note:** The default userlevel for the !game command is set to `everyone`. This implies that everyone can check the current game being streamed to the channel. Only moderators and higher userlevels can modify the game. -------------------------------------------------------------------------------- /commands/marker.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !marker 3 | Sort: 4 4 | */ 5 | 6 | The !marker command allows you and your viewers to create Twitch Stream Markers to mark parts of your stream that you wish to return to later. 7 | 8 | ## Creating Stream Markers 9 | 10 | ### Usage 11 | 12 | > !marker `description` 13 | 14 | `description` is an optional description of the Stream Marker. 15 | 16 | ### Example 17 | 18 | > !marker Nightbot goes ham 19 | 20 | will create a Stream Marker with the description "Nightbot goes ham." 21 | -------------------------------------------------------------------------------- /commands/poll.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !poll 3 | Sort: 6 4 | */ 5 | 6 | The !poll command allows you and your moderators to easily create polls using [Straw Poll](https://strawpoll.com/). 7 | 8 | ## Creating a Poll 9 | 10 | ### Usage 11 | 12 | > !poll new `title` | `option 1` | `option 2` 13 | 14 | `title` is the main title of your poll. 15 | 16 | `options` are the individual options your users can vote for. Split by a vertical bar `|`, 2 options are required, however, a maximum of 30 can be added. 17 | 18 | ### Example 19 | 20 | > !poll new Should I bake a pizza? | yes | no | maybe 21 | 22 | will return a new StrawPoll with options yes, no, and maybe: 23 | 24 | > Night started a new poll: "Should I bake a pizza?" - Head to https://strawpoll.com/ABC123def456 to vote! 25 | 26 | ## Viewing Results 27 | 28 | ### Usage 29 | 30 | This command will output the most recent poll's results 31 | 32 | > !poll results 33 | 34 | ### Example 35 | 36 | > !poll results 37 | 38 | will return 39 | 40 | > StrawPoll Results: yes: 5 votes, no: 3 votes, maybe: 4 votes 41 | -------------------------------------------------------------------------------- /commands/regulars.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !regulars 3 | Sort: 7 4 | */ 5 | 6 | Nightbot regulars add another userlevel to the chat. Regulars can be granted extra permission for commands and spam protection. The !regulars command allows you and your moderators to add, remove, and modify channel regulars. 7 | 8 | ## Adding Regulars 9 | 10 | ### Usage 11 | 12 | > !regulars add `username` 13 | 14 | `username` is the username of the person you wish to add as a regular. In the case of YouTube, it would be the user's YouTube channel URL. 15 | 16 | ### Example 17 | 18 | > !regulars add test_user 19 | 20 | ## Deleting Regulars 21 | 22 | ### Usage 23 | 24 | > !regulars delete `username` 25 | 26 | `username` is the username of the person you wish to remove as a regular. In the case of YouTube, it would be the user's YouTube channel URL. 27 | 28 | ### Example 29 | 30 | > !regulars delete test_user -------------------------------------------------------------------------------- /commands/songs.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !songs 3 | Sort: 8 4 | */ 5 | 6 | The !songs command is used to manage Song Requests within Nightbot. **Note**: Make sure [song requests](https://nightbot.tv/song_requests) are enabled before using these commands. 7 | 8 | ## Viewing Current Song 9 | 10 | ### Usage 11 | 12 | > !songs current 13 | 14 | will display the title of the current song. 15 | 16 | ### Example 17 | 18 | > !songs current 19 | 20 | will display the current song 21 | 22 | > Night -> "AWOLNATION - Sail (Official Music Video)" by Red Bull Records is the current song. 23 | 24 | ## Deleting Queued Song 25 | 26 | ### Usage 27 | 28 | > !songs delete `queue_postion` 29 | 30 | will delete the song at the current `queue_postion`. 31 | 32 | ### Example 33 | 34 | > !songs delete 2 35 | 36 | will delete the song in the 2nd position and return 37 | 38 | > Night -> The song has been removed. 39 | 40 | ## Getting List of Songs 41 | 42 | ### Usage 43 | 44 | > !songs list 45 | 46 | will give a link to view all song requests. 47 | 48 | ### Example 49 | 50 | > !songs list 51 | 52 | will return the response 53 | 54 | > Night -> The song list for this channel is available at https://nightbot.tv/t/night/song_requests 55 | 56 | ## Getting Channels Playlist 57 | 58 | ### Usage 59 | 60 | > !songs playlist 61 | 62 | will return a link to the channel's playlist 63 | 64 | ### Example 65 | 66 | > !songs playlist 67 | 68 | will return the response 69 | 70 | > Night -> The song playlist for this channel is available at https://nightbot.tv/t/night/song_requests/playlist 71 | 72 | ## Getting Next Song 73 | 74 | ### Usage 75 | 76 | > !songs next 77 | 78 | will display the next requested song. This is also `queue_postion` 1. 79 | 80 | ### Example 81 | 82 | > !songs next 83 | 84 | will display the next song 85 | 86 | > night -> "AWOLNATION - Run (Audio)" by Red Bull Records is the next song. 87 | 88 | ## Requesting a Song 89 | 90 | ### Usage 91 | 92 | > !songs request `Youtube or SoundCloud Link / Search Term` 93 | 94 | Will use the link or search term supplied to add a song to the queue. **If YouTube or SoundCloud has been disabled in the song request settings, they cannot be used to request songs.** 95 | 96 | ### YouTube 97 | 98 | YouTube videos can be requested with the whole YouTube link, the video ID (text after `/watch?v=`), or through a search term (if YouTube is the selected search provider). 99 | 100 | #### Usage 101 | 102 | These chat commands will all result in the same song added to the song queue. 103 | 104 | > !songs request https://www.youtube.com/watch?v=ngzC_8zqInk 105 | 106 | > !songs request ngzC_8zqInk 107 | 108 | In the case of search terms 109 | 110 | > !songs request Arctic Monkeys - R U Mine? 111 | 112 | will search YouTube for a video with the closest name if the channel configured YouTube as the search provider. 113 | 114 | **Note**: When entering the video ID only the standalone ID will work. No additional characters can be added, for example `!songs request /watch?v=ngzC_8zqInk` and `!songs request ?v=ngzC_8zqInk` will result in an error. 115 | 116 | ### SoundCloud 117 | 118 | SoundCloud tracks can be requested with the whole SoundCloud link or through a search term if SoundCloud is the selected search provider. 119 | 120 | #### Usage 121 | 122 | > !songs request https://soundcloud.com/johnlegend/all-of-me-3 123 | 124 | In the case of search terms 125 | 126 | > !songs request All of me - John Legend 127 | 128 | will search SoundCloud for a track with the closest name if the channel configured SoundCloud as the search provider. 129 | 130 | 131 | ## Skipping Current Song 132 | 133 | ### Usage 134 | 135 | > !songs skip 136 | 137 | will skip the current song. 138 | 139 | ### Example 140 | 141 | > !songs skip 142 | 143 | will the skip current song and return 144 | 145 | > Night -> "AWOLNATION - Sail (Official Music Video)" by Red Bull Records has been skipped. 146 | 147 | ## Pausing Current Song 148 | 149 | ### Usage 150 | 151 | > !songs pause 152 | 153 | will pause the music player (if it's open and playing) 154 | 155 | ## Playing Current Song 156 | 157 | ### Usage 158 | 159 | > !songs play 160 | 161 | will play the music player (if it's open and paused) 162 | 163 | ## Promoting a Song 164 | 165 | ### Usage 166 | 167 | > !songs promote `queue_postion` 168 | 169 | will move the song in the `queue_postion` to position 1; the next song. 170 | 171 | ## Editing Song Volume 172 | 173 | ### Usage 174 | 175 | > !songs volume `between 1 - 100` 176 | 177 | will change the current volume to the specified number. 178 | 179 | ### Example 180 | 181 | > !songs volume 32 182 | 183 | will set the volume to 32 and return 184 | 185 | > Night -> The volume has been updated to 32. -------------------------------------------------------------------------------- /commands/sort: -------------------------------------------------------------------------------- 1 | 4 2 | -------------------------------------------------------------------------------- /commands/tags.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !tags 3 | Sort: 4 4 | */ 5 | 6 | The !tags command allows you and your moderators to update Twitch stream tags for better directory discoverability. 7 | 8 | ## Usage 9 | 10 | > !tags `stream, tags` 11 | 12 | `stream, tags` is an optional list of comma-separated list of stream tags. 13 | 14 | ### Examples 15 | 16 | > !tags 17 | 18 | will return your stream's current list of tags: "The stream's current tags: 100%, Achievement Hunting" 19 | 20 | > !tags 100, achievement hunting 21 | 22 | will update your stream's tags to "100%, Achievement Hunting" 23 | -------------------------------------------------------------------------------- /commands/title.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !title 3 | Sort: 10 4 | */ 5 | 6 | The !title command displays the current title of the stream and allows you and your moderators to modify it. 7 | 8 | ## Usage 9 | 10 | > !title `title` 11 | 12 | `title` is the title you wish to change your stream title to. Only place a title to change the title. Omitting this value displays the current title. 13 | 14 | ### Examples 15 | 16 | > !title 17 | 18 | will return "Current Stream Title: Day 2: Building Again" 19 | 20 | > !title Day 3: Building Again 21 | 22 | will return "The stream title has been updated to: Day 3: Building Again" 23 | 24 | **Note:** The default userlevel for the !title command is set to `everyone`. This implies that everyone can check the current title of the stream. Only moderators and higher userlevels can modify the title. -------------------------------------------------------------------------------- /commands/variableslist.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Variables List 3 | Sort: 2 4 | */ 5 | 6 | * `Arguments` – space separated arguments in the command's input [[*more info*](https://docs.nightbot.tv/variables/arguments)] 7 | * `Channel` – name of the current channel [[*more info*](https://docs.nightbot.tv/variables/channel)] 8 | * `ChannelID` – id of the current channel [[*more info*](https://docs.nightbot.tv/variables/channelid)] 9 | * `ChatID` – id of the current chat [[*more info*](https://docs.nightbot.tv/variables/chatid)] 10 | * `Count` – variable that automatically increments [[*more info*](https://docs.nightbot.tv/variables/count)] 11 | * `Countdown` – time left until a specified time [[*more info*](https://docs.nightbot.tv/variables/countdown)] 12 | * `Countup` – time past since a specified time [[*more info*](https://docs.nightbot.tv/variables/countup)] 13 | * `DJKhaled` - display one of DJ Khaled’s 🔑s to success [[*more info*](https://docs.nightbot.tv/variables/djkhaled)] 14 | * `Eval` - evaluates JavaScript code [[*more info*](https://docs.nightbot.tv/variables/eval)] 15 | * `Lastfm` – last scrobbled song from a Last.fm profile [[*more info*](https://docs.nightbot.tv/variables/lastfm)] 16 | * `LeagueOfLegends` - display rank information for a summoner name [[*more info*](https://docs.nightbot.tv/variables/leagueoflegends)] 17 | * `Query` – full input that comes after the command [[*more info*](https://docs.nightbot.tv/variables/query)] 18 | * `QueryString` – full input that comes after the command with url-encoding [[*more info*](https://docs.nightbot.tv/variables/querystring)] 19 | * `Rainwave` – current song information from the Rainwave radio network [[*more info*](https://docs.nightbot.tv/variables/rainwave)] 20 | * `Steam` – user information from a Steam profile [[*more info*](https://docs.nightbot.tv/variables/steam)] 21 | * `Time` – current time in a selected timezone [[*more info*](https://docs.nightbot.tv/variables/time)] 22 | * `ToUser` – first argument given to the command [[*more info*](https://docs.nightbot.tv/variables/touser)] 23 | * `Tweet` – Generate click-to-tweet templates with a specified message [[*more info*](https://docs.nightbot.tv/variables/tweet)] 24 | * `Twitch` – user information from a Twitch profile [[*more info*](https://docs.nightbot.tv/variables/twitch)] 25 | * `UrlFetch` – output from a remote url [[*more info*](https://docs.nightbot.tv/variables/urlfetch)] 26 | * `User` – name of the calling user [[*more info*](https://docs.nightbot.tv/variables/user)] 27 | * `UserID` – id of the calling user [[*more info*](https://docs.nightbot.tv/variables/userid)] 28 | * `UserLevel` – userlevel of the calling user [[*more info*](https://docs.nightbot.tv/variables/userlevel)] 29 | * `Weather` – weather information at a specified location [[*more info*](https://docs.nightbot.tv/variables/weather)] 30 | -------------------------------------------------------------------------------- /commands/winner.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: !winner 3 | Sort: 11 4 | */ 5 | 6 | The !winner command allows you and your moderators to pick a random active user in chat. It will pick randomly from a list of every user who has spoken in the past 10 minutes. 7 | 8 | ## Usage 9 | 10 | > !winner 11 | 12 | results in 13 | 14 | > And the winner is.. 15 | 16 | > !!! Night !!! (Night is following this channel) -------------------------------------------------------------------------------- /control-panel/commands.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Commands 3 | Sort: 1 4 | */ 5 | 6 | The crux of any chat bot is its commands. Commands allow people to perform bot actions within chat. There are built-in default commands, and Nightbot also offers the ability to create your own custom commands. 7 | 8 | ## Default Commands 9 | 10 | The majority of the default commands are designed to allow moderators to control Nightbot within chat. We offer the ability to change spam protection settings, manage regulars, and manage custom commands – all within chat. To give moderators more control, they can be [added as a manager](https://docs.nightbot.tv/control-panel/managers) of the channel to get control panel access. 11 | 12 | ### Default Commands List 13 | 14 | * [!commands](https://docs.nightbot.tv/commands/commands) 15 | - Allows users to see a list of channel commands, and allows moderators to manage custom commands 16 | * [!commercial](https://docs.nightbot.tv/commands/commercial) 17 | - Runs a commercial/ad on your stream (if your channel is partnered) 18 | * [!filters](https://docs.nightbot.tv/commands/filters) 19 | - Allows moderators to manage spam protection filter settings 20 | * [!game](https://docs.nightbot.tv/commands/game) 21 | - Allows users to see the current game of the stream, and allows moderators to change the current game 22 | * [!marker](https://docs.nightbot.tv/commands/marker) 23 | - Create a stream marker in your Twitch channel to easily return to later 24 | * [!poll](https://docs.nightbot.tv/commands/poll) 25 | - Allows moderators to create a Strawpoll within chat, and allows users to see the results 26 | * [!regulars](https://docs.nightbot.tv/commands/regulars) 27 | - Allows moderators to manage the channel regulars list 28 | * [!songs](https://docs.nightbot.tv/commands/songs) 29 | - Allows users to request songs, and allows moderators to manage the requested songs queue 30 | * [!tags](https://docs.nightbot.tv/commands/tags) 31 | - Edit your stream's tags to improve discoverability 32 | * [!title](https://docs.nightbot.tv/commands/title) 33 | - Allows users to see the current title of the stream, and allows moderators to change the current title 34 | * [!winner](https://docs.nightbot.tv/commands/winner) 35 | - Allows moderators to choose a random active user as a winner 36 | 37 | ### Managing Default Commands 38 | 39 | To manage default commands, head to the [default commands page](https://nightbot.tv/commands/default) in the control panel. 40 | 41 | A table of default commands will be shown, along with their status and buttons for managing their functionality. 42 | 43 | You can disable commands you do not wish to use by clicking on the "Disable" button towards the right of a default command listed in the table, and vice versa for enabling. 44 | 45 | There is also an options button that will allow you to change the userlevel and cooldown of default commands. 46 | 47 | - *Userlevel* - Selects who has the permission to execute the command. For example, selecting “Regulars” allows users in your channel's regular list the permission to use the command. Larger channels may want the Userlevel set to Regulars or above. 48 | 49 | - *Cooldown* - Time minimum amount of time between command uses (to prevent the command from spamming the chat) 50 | 51 | ## Custom Commands 52 | 53 | Nightbot is able to be programmed with customized commands which can be utilized to display information to your chatroom. Most frequently this is social links, but there is a multitude of cool commands you can form. 54 | 55 | For example, if a popular streamer is consistently bombarded by requests for a link to their YouTube channel, they may create a command which links directly to their YouTube channel. Instead of having to manually type or say it each time, just simply calling the command in chat will display the link. 56 | 57 | ### Creating Custom Commands 58 | 59 | To create custom commands, click on the "Add Command" button on your [commands page](https://nightbot.tv/commands/custom). 60 | 61 | Then, fill in the form with your desired command name, message, userlevel, and cooldown. 62 | 63 | - *Command* - Generally speaking, commands are usually prefixed with exclamation points. They can, in fact, be anything you would like, or even none at all. Command names are not allowed to contain spaces. 64 | 65 | - *Message* - The response of the command. You can use [Variables](https://docs.nightbot.tv/commands/variableslist) in your messages to make dynamic messages. 66 | 67 | - *Userlevel* - Selects who has the permission to execute the command. For example, selecting “Regulars” allows users in your channel's regular list the permission to use the command. Larger channels may want the Userlevel set to Regulars or above. 68 | 69 | - *Cooldown* - Time minimum amount of time between command uses (to prevent the command from spamming the chat) 70 | 71 | - *Alias* - If the command you're making is supposed to call another command, specify the other command here. Note that the input passed to the listed alias is the message. To capture user input, you'd need to place [variables](https://docs.nightbot.tv/commands/variableslist) in the message (like `$(query)`). 72 | 73 | ### Removing and Editing Existing Commands 74 | 75 | The control panel makes it a breeze to edit and delete existing custom commands. On the commands page, a list of created custom commands will be shown in a table. Under the actions column are buttons for editing and deleting commands. 76 | 77 | Use the pencil button to edit existing command. It will bring up a form similar to when adding a command. 78 | 79 | Use the trash can button to remove a command. 80 | 81 | ### Managing Custom Commands in Chat 82 | 83 | It is also possible to manage commands within chat. Check out the [!commands](https://docs.nightbot.tv/commands/commands) default command documentation for instructions on doing that. 84 | -------------------------------------------------------------------------------- /control-panel/giveaways.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Giveaways 3 | Sort: 2 4 | */ 5 | 6 | ## The Basics 7 | 8 | Upon entering the [Giveaways](https://nightbot.tv/giveaways) page you are presented with an eligibility list, a giveaway panel, and a chat window. 9 | 10 | ### Eligibility List 11 | 12 | The eligibility list shows the current pool of users eligible to win the current giveaway. 13 | 14 | A user has a blue eligibility mark next to their name if they are eligible to win the current giveaway. When a user becomes eligible, they are automatically marked as eligible in the list. Clicking the eligibilty mark next to a user will toggle their eligibility. 15 | 16 | Next to the search is a Reset Eligibility Button which will clear the eligibility of all users in the list. 17 | 18 | ### Giveaway Panel 19 | 20 | #### Eligibility 21 | 22 | In the giveaway panel is an eligibility selector that allows you to choose userlevels which are eligible to participate in the giveaway. A user must have at least one of the selected userlevels to be considered eligible. 23 | 24 | #### Giveaway Types 25 | 26 | Nightbot currently offers three different types of giveaways to choose from: 27 | 28 | - *Active User* - Selects a user in the eligibility list that has spoken during the selected time duration. 29 | 30 | - *Keyword* - Allows users to become eligible by entering a keyword. Antispam options can make users ineligible for repetition of the keyword. *Note:* Changing keywords resets all users' eligibility to win. 31 | 32 | - *Random Number* - Generates a random number between two selected numbers. The first user to type the number generated is the winner. 33 | 34 | #### Extra Luck 35 | 36 | Subscribers and Regulars can be selected to have more entries using the luck sliders. Simply adjust the sliders to the desired amount. 37 | 38 | ### Winners! 39 | 40 | Once a user has won a giveaway their profile will be displayed with options to visit their channel page and send a direct message. The giveaway panel is replaced with their chat and a timer to mark inactivity. 41 | -------------------------------------------------------------------------------- /control-panel/managers.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Managers 3 | Sort: 6 4 | */ 5 | 6 | Managers are positions that can allow users to fully access your Nightbot through the control panel. Managers have the power to control everything with Nightbot in your channel. Because of this, *managers should only be users you trust*. 7 | 8 | ## Usage 9 | 10 | Managers can be handled in the [Managers](https://nightbot.tv/account/managers) tab in the settings panel. Also in the settings panel, is your personal Nightbot User ID code. 11 | 12 | ### Adding a Manager 13 | 14 | In order to add a user as a manager, you are going to need to get that user's Nightbot ID code. This can be found in the upper right of the [Managers](https://nightbot.tv/account/managers) page. 15 | 16 | 1. Start by heading over to the [Manager settings](https://nightbot.tv/account/managers). 17 | 2. Clicking the Add Manager button will open a popout to enter a Nightbot User ID Code. *This is not a profile username!* (ex. `5570cbd62115a35f5124aqf2`) 18 | 3. After clicking submit, that user is successfully added as a manager of your channel. 19 | 20 | ### Removing a Manager 21 | 22 | To remove a manager simply click the delete button next to the user. Accepting the popout to confirm your selection. 23 | 24 | ### Accessing a Channel as Manager 25 | 26 | To access a channel you manage, simply click the icon of your profile image in the top right of the page. 27 | 28 | This will show different channels you can access, including your own. The profile image of the current channel will overlay the image icon. **If you don't see the right channel, the owner incorrectly added you as a manager.** -------------------------------------------------------------------------------- /control-panel/regulars.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Regulars 3 | Sort: 3 4 | */ 5 | 6 | Nightbot Regulars adds another userlevel to the chat. Regulars can be granted extra permission for commands and spam protection. 7 | 8 | ## Usage 9 | 10 | Regulars can be added and removed on the [Regulars](https://nightbot.tv/regulars) page in the control panel or via chat with the [!regulars](https://docs.nightbot.tv/commands/regulars). 11 | 12 | ### Creating a Regular 13 | 14 | Head over to the [Regulars](https://nightbot.tv/regulars) page. 15 | 16 | In the top right corner of the panel, clicking the Add User button which will open up a popup allowing you to add a user as a regular. 17 | 18 | #### Settings 19 | 20 | - *User* - This is the username of the person you wish to add as a regular. In the case of YouTube, it would be the user's YouTube channel URL. 21 | 22 | ### Managing Regulars 23 | 24 | On the panel screen, you will see a list of all regulars you have created. 25 | 26 | #### Action Button 27 | 28 | - *Delete* - The Delete button will prompt you to confirm that you want to remove a regular. 29 | -------------------------------------------------------------------------------- /control-panel/song-requests.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Song Requests 3 | Sort: 4 4 | */ 5 | 6 | Song Requests is the ability for music in your stream to be chosen by the viewers. 7 | 8 | ## Usage 9 | 10 | The [Song Requests](https://nightbot.tv/song_requests) page contains Song Request settings, a music player with media controls, and a queue of upcoming songs. The controls at the top of the page are as follows: 11 | 12 | - *Enable & Disable* - This setting will enable or disable new requests from being put in the queue. 13 | - *Clear Queue* - Will clear all songs currently in the queue. 14 | - *Add Song* - Will open a popup where you can enter a direct url (from SoundCloud or Youtube) or search term for the defined Search Provider. 15 | 16 | 17 | ### Settings 18 | 19 | The Settings control opens a popup where all settings are divided into three categories. These settings can only be changed in the Control Panel. 20 | 21 | #### General 22 | 23 | - *Userlevel* - This is the minimum required userlevel to request a song. Userlevels are listed from highest to lowest. 24 | - *Providers* - Services you wish to allow users to request songs from. You can check and uncheck different music providers. 25 | - *Playlist* - When your song request queue is empty, songs are pulled from the selected playlist. "Channel" is your own [personal playlist](https://nightbot.tv/song_requests/playlist). 26 | - *Search Provider* - This is the provider that you want to be used for searching songs. Users can add songs by entering the URL or by searching the selected search provider. 27 | 28 | #### Limits 29 | 30 | - *Queue Length* - This is the maximum amount of songs that can be stored in the queue. This can be between 1 - 100 songs. 31 | - *Limit to Playlist* - Enabling this will force songs requested to originate from the playlist selected under general. 32 | - *User Limit* - This is the maximum amount of songs that a user can request at a time. 33 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from the user limit. Userlevels are listed from highest to lowest. The userlevel is still affected by the Queue Length and cannot go beyond the limit. 34 | 35 | #### YouTube 36 | 37 | This category is dedicated to [YouTube](https://www.youtube.com) available controls. 38 | 39 | - *Limit to Music* - This will require requested YouTube videos to be from the Music category. 40 | - *Limit to Liked Videos* - This will only allow people to request YouTube videos with more likes than dislikes to help reduce lower content videos. 41 | 42 | ### Player Controls & Song Information 43 | 44 | The music player will change automatically in accordance to the selected Providers in the Settings. For example from, YouTube to SoundCloud, depending on the requested song site. 45 | 46 | #### Controls 47 | 48 | - *Play & Pause* - Used to play or pause the currently playing song. 49 | - *Next Song* - The next song button can be used to instantly start the next queued song. 50 | - *Track Slider* - Used to display the current location of the song and can be used to jump around on the current song. 51 | - *Volume* - Used to change the overall volume of Song Requests, also controllable through the [!volume](https://docs.nightbot.tv/commands/songs#editing-song-volume) command. 52 | 53 | #### Song Information 54 | 55 | The music player will also give the following information while the song is currently playing: 56 | 57 | - Song/Video Title - Uploader 58 | - Song Duration 59 | - Link to Song 60 | - User Who Requested Song 61 | - Save to Channel Playlist Button 62 | 63 | ### Queue 64 | 65 | Below the player and controls lays the queue where Song Requests displays the upcoming songs. 66 | 67 | Using the gray up arrow icon you can promote a song to be first in the queue. To delete upcoming songs use the red trash icon on the right of the entry. Both of these can also be done with the [!songs](https://docs.nightbot.tv/commands/songs) command. 68 | 69 | Gray colored songs in the queue are playlist entries set in the Settings. The playlist will play if the queue is empty and will allow newly requested songs to be played next. -------------------------------------------------------------------------------- /control-panel/sort: -------------------------------------------------------------------------------- 1 | 2 2 | -------------------------------------------------------------------------------- /control-panel/spam-protection.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Spam Protection 3 | Sort: 5 4 | */ 5 | 6 | * [Blacklist Words/Phrases](https://docs.nightbot.tv/spam-protection/blacklist) 7 | - Prevents chatters from posting certain words or phrases 8 | * [Caps](https://docs.nightbot.tv/spam-protection/caps) 9 | - Prevents chatters from posting in all or mostly capitalizes messages 10 | * [Emotes](https://docs.nightbot.tv/spam-protection/emotes) 11 | - Prevents chatters from posting many emotes in messages 12 | * [Links](https://docs.nightbot.tv/spam-protection/links) 13 | - Prevents chatters from posting links, and allows you to whitelist certain links 14 | * [Symbols](https://docs.nightbot.tv/spam-protection/symbols) 15 | - Prevents chatters from posting many symbols in messages 16 | * [Repetitions](https://docs.nightbot.tv/spam-protection/repetitions) 17 | - Prevents chatters from posting repeating words and phrases 18 | -------------------------------------------------------------------------------- /control-panel/timers.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Timers 3 | Sort: 6 4 | */ 5 | 6 | Nightbot Timers have the ability to send messages at specific intervals. Frequently used for social media links and general chat notifications. 7 | 8 | ## Usage 9 | 10 | Timers can be created and managed on the [Timers](https://nightbot.tv/timers) page in the control panel. 11 | 12 | ### Creating a Timer 13 | 14 | Creating a Timer for your chat couldn't be any easier. 15 | 16 | First head over to the [Timers](https://nightbot.tv/timers) page. 17 | 18 | In the top right corner of the panel, click the blue Add button which will open up a popup allowing you to create a timer. 19 | 20 | #### Settings 21 | 22 | - *Name* - This is your timer name. This has no real significance but to give you a quick reference to what your timer does. Ex. Twitter Message 23 | 24 | - *Message* - What do you want your timer's message to say when it gets shown in the chat? [Custom Variables](https://docs.nightbot.tv/commands/variableslist) can also be used to make dynamic messages. 25 | 26 | - *Interval* - Move the slider to the desired amount of time before the timer repeats. For example, 15 minute intervals will activate at 2:00, 2:15, 2:30, etc. 27 | 28 | - *Chat Lines* - This is the minimum amount of chat lines (measured in lines per 5 minutes) required to activate the timer. This is useful in slow chats to prevent Nightbot from spamming in an empty channel. 29 | 30 | - *Alias* - If you want this timer to call a command, specify that command here. Note that the input passed to the listed alias is the message field above, so to pass data to the command you need to place it in the message field. You can also use most variables in the message field. 31 | 32 | **Note**: The timer will first wait the specified amount of time and then check to see if the specified number of chat lines have passed before displaying a message. This can account for timer messages not displaying after passing their interval. 33 | 34 | ### Managing Timers 35 | 36 | The Panel screen lists all timers; displaying their current status, name, message, and action buttons. 37 | 38 | #### Action Buttons 39 | 40 | - *Disable/Enable* - Can be used to turn off and on your timers. This will change the far left column status after clicking. 41 | 42 | - *Edit* - Reopen the popup to edit current timers. Be sure to hit Submit to save changes otherwise changes will be lost. 43 | 44 | - *Delete* - The Delete button will open a prompt to remove that timer. 45 | 46 | ### Tips 47 | 48 | - **Less is More** - Keep your amount of timers and the length between timers showing reasonable. Users do not like being spammed. 49 | 50 | - **Change them up** - Don't be afraid to change a timers message, either to new changes such as a Twitter post or a link to a shirt your trying to advertise, change the content frequently. And with [Variables](https://docs.nightbot.tv/commands/variableslist) you can set messages that update automatically. 51 | -------------------------------------------------------------------------------- /discord.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Discord Integration 3 | Sort: 3 4 | */ 5 | 6 | 7 | This a quick guide of how to setup Nightbot for Discord. 8 | 9 | No idea what Discord is? Discord is an all-in-one voice, video, and text chat for gamers that’s free, secure, and works on both your desktop and phone. Check them out at [discordapp.com](https://discordapp.com/)! 10 | 11 | ### Setup 12 | 13 | 1. If you don't have a Discord account and a Discord server, make one at [discordapp.com](https://discordapp.com/). Need help doing that? Check our Discord's [help desk](https://support.discordapp.com/hc/en-us). 14 | 15 | 2. Sign into Nightbot and head to the [Integrations](https://nightbot.tv/integrations) tab. Here all integration settings for Discord are managed. 16 | 17 | 3. Clicking "Connect" will open a popup where you allow Nightbot to access your Discord account information. Upon granting access you'll then be able to add Nightbot to a Discord server. Select your server from the dropdown list and click "Authorize." 18 | 19 | 4. Nightbot should now be in your Discord Server! Nightbot is given a Discord role named "Nightbot" with the permissions you just granted it. You can modify the role's permissions and colors as wanted. All of your Nightbot commands will now be functional in your Discord server. 20 | 21 | 5. For further customization, click the "Settings" button for your server on the Nightbot Integrations page. For each userlevel, select a Discord role for Moderators, Regulars, and Subscribers (if applicable). Enabling "Role Syncing" will auto-sync these roles every 15 minutes *for active users in your server*. Click "Update" to save these settings. **Note:** In order to sync, users must connected their Twitch/YouTube account to Discord in their "Connections" settings. 22 | 23 | 6. Need some light auto moderation? You can also toggle "Spam Filtering" will allows Nightbot to filter messages as it does in your stream's chat. *Because there is no timeout function in Discord, Nightbot will only delete a user's message (not timeout/kick/ban them).* 24 | 25 | ### FYIs 26 | 27 | 1. Nightbot's role *must* be seated above roles you want it to sync in your server's settings. Discord will disallow Nightbot from granting roles above its own role. 28 | 29 | 2. Nightbot does not sync subscribers. Discord has a built-in subscription integration with Twitch and YouTube, so the role selection for Subscribers is only used to identify *existing subscribers* in the server. 30 | 31 | --- 32 | 33 | Find a Bug? Have a suggestion? Let us know on the [Forums](https://community.nightdev.com/c/nightbot) or [@nightbotapp](https://twitter.com/nightbotapp). 34 | -------------------------------------------------------------------------------- /faq.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Nightbot FAQ 3 | Sort: 4 4 | */ 5 | 6 | Here are the most common questions we get asked, all on one page. For additional support for specific items use the [Nightbot Forum](https://community.nightdev.com/c/nightbot) or the [Contact Form](https://nightdev.com/contact/) for more private matters. 7 | 8 | ### Why isn't Nightbot responding on YouTube? 9 | 10 | Your stream must be live and public, also Nightbot needs to have been joined via the [control panel](https://nightbot.tv/dashboard). 11 | 12 | If Nightbot still isn't responding your channel, it may not be a moderator or is banned from your channel. 13 | 14 | Sometimes YouTube can also filter Nightbot's chat from "TopChat," so be sure you are looking at "Live Chat" and not "Top Chat." 15 | 16 | If you operate a stream which is live 24/7, YouTube sometimes glitches and does not report your chat to Nightbot as live. As a temporary fix, restarting the stream does fix this issue. 17 | 18 | ### Why isn't Nightbot responding on Twitch? 19 | 20 | Make sure Nightbot is joined to your chat in the control panel. 21 | 22 | If you recently changed your Twitch username, be sure to logout and back into the Nightbot control panel. Parting and re-joining the bot via the control panel may also help. 23 | 24 | If Nightbot still isn't responding your channel, it may not a moderator or is banned from your channel. 25 | 26 | Lastly, sometimes users have accidentally blocked/ignored Nightbot. This causes Nightbot to not be seen by you (but can be seen by others). You can type `/unignore nightbot` in chat to unignore the bot. 27 | 28 | ### My Playlist was deleted and I can't find it. How do I get it back? 29 | 30 | Navigate to the [Song Request settings](https://nightbot.tv/song_requests) and under the **General** Header change the **Playlist** setting to **Channel**. Personal playlists can be edited in the [Playlist](https://nightbot.tv/song_requests/playlist) page. 31 | 32 | ### Why do I get songs in Song Requests that can't be deleted? 33 | 34 | There is another playlist active in the Song Request settings. Please refer to the previous question to change this. 35 | 36 | ### How do I get the current song to display on OBS/XSpilt? 37 | 38 | Download and install the [Nightbot App](https://docs.nightbot.tv/app). Upon running song request, a text file is created with the current song in the `%USERPROFILE%\Documents\Nightbot\` location for Windows and in `/Users/USERNAME/Documents/Nightbot/` for OSX. 39 | 40 | ### This isn't working and it should be. This should be added to Nightbot! 41 | 42 | We are always looking to fix bugs and improve Nightbot, unreported bugs often go unnoticed. Contact us using the [Nightbot forum](https://community.nightdev.com/c/nightbot) or on Twitter at [@nightbotapp](https://twitter.com/nightbotapp). If there is a feature you think should be added, tell us in greater detail on the forum. We're always looking for ways to improve Nightbot. 43 | -------------------------------------------------------------------------------- /setup.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: General Setup 3 | Sort: 5 4 | */ 5 | 6 | ## General Setup Guide for Nightbot 7 | 8 | This page's purpose is a general guide for new users who want to use Nightbot. This guide will review some of the basics of using Nightbot with more advanced usage on the individual doc site pages. Nightbot is currently available for Twitch, YouTube, Trovo, Noice, and SOOP! 9 | 10 | ### Sign in & Dashboard 11 | 12 | To begin head to the [Nightbot Homepage](https://nightbot.tv/) and sign in using the service you intend to use Nightbot with. Upon granting access you are directed to the Nightbot Control Panel. 13 | 14 | The Control Panel is the central hub to controlling Nightbot. The Dashboard also displays stats such as chat activity, command usage, and spam filters. Using the navigation bar on the left you can edit a specific area of Nightbot. 15 | 16 | ### Make Nightbot Join Your Channel 17 | 18 | On the Dashboard, click the Join Button on the top-right of the page to have Nightbot join your channel. You will then have a popout with instructions for making Nightbot a moderator in your channel. 19 | 20 | **For YouTube:** Nightbot for YouTube will only join your channel when you are live and your stream is public. This is currently due to rate limits on YouTube's API. 21 | 22 | ### Custom Commands 23 | 24 | After adding Nightbot, you can now begin with creating custom commands. Custom commands are an important part of any stream, making information easier to access. Commands are managed in the [Custom Command](https://nightbot.tv/commands/custom) page in the Control Panel. 25 | 26 | When adding a command you will need a command name (usually leading with an exclamation mark) and a command response. [Custom Variables](https://docs.nightbot.tv/commands/variableslist) can customize your commands with features like Click-To-Tweet links or displaying the weather of a location. 27 | 28 | Commands can also be managed using the [!commands](https://docs.nightbot.tv/commands/commands) command. 29 | 30 | ### Timers 31 | 32 | The [Timers](https://nightbot.tv/timers) page contains configurable timers where Nightbot displays a message every so often. The time interval and chat lines required can be changed to your liking and can be enabled and disabled as needed. 33 | 34 | ### Regulars 35 | 36 | Regulars are users who are more privileged than normal users. You may want regulars to be ignored when dealing with Spam Filters or you might want them to have access to certain commands. 37 | 38 | The solution is for you to add users as Regulars into Nightbot. Users can be managed in the [Regulars](https://nightbot.tv/regulars) page, just click the Add User button and enter the Username. Those users are now defined as a regular of the channel and you can filter separate user-specific commands around them. 39 | 40 | This can also be done by using the [!regulars command](https://docs.nightbot.tv/commands/regulars). 41 | 42 | ### Song Requests 43 | 44 | Song Requests is the ability for music in your stream to be chosen by the viewers. 45 | 46 | A personal playlist is provided as a "backup song list" if the queue runs out of songs. We provide a default selection of songs to get you started, but you can build your own. 47 | 48 | For more information see the [Song Requests](https://nightbot.tv/song_requests) page and [Song Requests Guide](https://docs.nightbot.tv/control-panel/song-requests). 49 | 50 | ### Spam Filters 51 | 52 | Spam Filters within Nightbot can help deal with users who spam. Offering filters including Capitalization, Links, Symbols, and Custom Blacklist. All filters can be edited in the [Spam Protection](https://nightbot.tv/spam_protection) page within the Nightbot Control Panel or with the [!filters](https://docs.nightbot.tv/commands/filters) command. 53 | 54 | --- 55 | 56 | More in-depth information about the topics here can be found throughout the Nightbot Documentation. Reach out to us on the [forums](https://community.nightdev.com/c/nightbot) for any questions. 57 | -------------------------------------------------------------------------------- /spam-protection/blacklist.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Blacklist Words/Phrases 3 | Sort: 1 4 | */ 5 | 6 | Nightbot offers a blacklist filter that allows you to set timeouts for custom words, phrases, and patterns. 7 | 8 | ## Usage 9 | 10 | Creating and Managing Blacklist Words and Phrases can only be done by the owner and channel managers in the Nightbot Spam Protection menu. 11 | 12 | ### Adding to a Blacklist 13 | 14 | To add words and phrases to Nightbot's Blacklist head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 15 | 16 | Clicking the Options button will open a popout that you can customize blacklist settings. 17 | 18 | ## Advanced Usage 19 | 20 | ### Regex 21 | 22 | The blacklist filter also supports regular expressions (regex) for more filtering options. You can enter a regex expression with the pattern below. 23 | 24 | > `~/[pattern]/[flags]` 25 | 26 | ### Example 27 | 28 | `~/(\d{3}[-.])?\d{3}[-.]\d{4}/` will blacklist any like looking phone numbers such as 253.532.8757 and 321-2345. 29 | 30 | #### Options 31 | 32 | - *Blacklist* - This is the text box of filtered words and phrases you wish to blacklist. Entering one entry per line. You can use an asterisk (\*) as a wildcard character to dynamically filter words and phrases. For example, `test*` blocks `test`, `testing`, `testerino`, etc. 33 | 34 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select here. The 600-second default value is equivalent to 10 minutes. 35 | 36 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to use blacklisted words and not get punished. 37 | 38 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 39 | 40 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the blacklist filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 41 | 42 | ### Managing Blacklist Filter 43 | 44 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 45 | -------------------------------------------------------------------------------- /spam-protection/caps.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Caps 3 | Sort: 2 4 | */ 5 | 6 | Nightbot offers a capitalization filter that allows you to control how excessive capitalization is handled in your chat. 7 | 8 | ## Usage 9 | 10 | Managing excessive caps be found in the Nightbot Spam Protection menu by owners and channel managers. 11 | 12 | To view settings for Nightbot's caps filter, head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 13 | 14 | Clicking the Options button will open a popout that you can customize filter settings. 15 | 16 | #### Options 17 | 18 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select. The 600-second default value is equivalent to 10 minutes. 19 | 20 | - *Limit* - This is the minimum number of Caps before Nightbot will punish the user for spamming. The default limit is 8 characters. 21 | 22 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to use excessive caps and not get punished. 23 | 24 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 25 | 26 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the caps filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 27 | 28 | ### Managing Caps Filter 29 | 30 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 31 | -------------------------------------------------------------------------------- /spam-protection/emotes.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Emotes 3 | Sort: 3 4 | */ 5 | 6 | Nightbot offers a emotes filter that allows you to control how excessive Twitch emotes are handled in your chat. 7 | 8 | ## Usage 9 | 10 | Managing excessive emotes can be found in the Nightbot Spam Protection menu by owners and channel managers. 11 | 12 | To view settings for Nightbot's emotes filter, head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 13 | 14 | Clicking the Options button will open a popout that you can customize filter settings. 15 | 16 | #### Options 17 | 18 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select. The 600-second default value is equivalent to 10 minutes. 19 | 20 | - *Limit* - This is the minimum number of emotes before Nightbot will punish the user for spamming. The default limit is 3 emotes. 21 | 22 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to use excessive emotes and not get punished. 23 | 24 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 25 | 26 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the emotes filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 27 | 28 | ### Managing Emotes Filter 29 | 30 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 31 | -------------------------------------------------------------------------------- /spam-protection/links.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Links 3 | Sort: 4 4 | */ 5 | 6 | Nightbot offers a link filter that allows you to control how links are handled in your chat. 7 | 8 | ## Usage 9 | 10 | Managing Links can be found in the Nightbot Spam Protection menu by owners and channel managers. This filter can also be managed through the [!filters command](https://docs.nightbot.tv/commands/filters). 11 | 12 | To view settings for Nightbot's links filter, head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 13 | 14 | Clicking the Options button will open a popout that you can customize filter settings. 15 | 16 | ## Advanced Usage 17 | 18 | ### Regex 19 | 20 | The links filter also supports regular expressions (regex) for more whitelist options. You can enter a regex expression with the pattern below. 21 | 22 | > `~/[pattern]/[flags]` 23 | 24 | ### Example 25 | 26 | `~/i.imgur.com\/[\d\w]+.(png|jpg|gif)/i` will whitelist imgur direct links such as ([i.imgur.com/ghOCjsn.png](https://i.imgur.com/ghOCjsn.png)), but will not allow image links ([imgur.com/ghOCjsn](https://imgur.com/ghOCjsn)), gallery links, and album links ([imgur.com/a/Tkyl6](https://imgur.com/a/Tkyl6)). 27 | 28 | #### Options 29 | 30 | - *Link Whitelist* - This is the list of allowed links, entered one entry per line. You can allow entire websites (example: `youtube.com`) or specific links (example: `twitter.com/nightbotapp`). 31 | 32 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select. The 600-second default value is equivalent to 10 minutes. 33 | 34 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to post links and not get punished. 35 | 36 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 37 | 38 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the links filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 39 | 40 | ### Permitting Links 41 | 42 | Users can be temporarily permitted to post a link using the !permit command. The [!filters command](https://docs.nightbot.tv/commands/filters) needs to be enabled for the !permit to function. 43 | 44 | #### Usage 45 | 46 | > !permit night 47 | 48 | will allow the user night to post links for the duration of 60 seconds. 49 | 50 | ### Managing Links 51 | 52 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 53 | -------------------------------------------------------------------------------- /spam-protection/repetitions.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Repetitions 3 | Sort: 6 4 | */ 5 | 6 | Nightbot offers a repetition filter that allows you to control how repeated phrases handled in your chat. 7 | 8 | ## Usage 9 | 10 | Managing Repetition can be found in the Nightbot Spam Protection menu by owners and channel managers. 11 | 12 | To view settings for Nightbot's repetitions filter, head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 13 | 14 | Clicking the Options button will open a popout that you can customize filter settings. 15 | 16 | #### Options 17 | 18 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select. The 600-second default value is equivalent to 10 minutes. 19 | 20 | - *Limit* - This is the minimum percentage of repetitions posted before Nightbot will punish the user for spamming. The default limit is 45% but can be adjusted as needed. 21 | 22 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to use repetition and not get punished. 23 | 24 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 25 | 26 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the repetition filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 27 | 28 | ### Managing Repetition Filter 29 | 30 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 31 | -------------------------------------------------------------------------------- /spam-protection/sort: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /spam-protection/symbols.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Symbols 3 | Sort: 5 4 | */ 5 | 6 | Nightbot offers symbol filter that allows you to control how excessive symbols are handled in your chat. 7 | 8 | ## Usage 9 | 10 | Managing excessive symbols can be found in the Nightbot Spam Protection menu by owners and channel managers. 11 | 12 | To view settings for Nightbot's symbols filter, head over to the [Spam Protection menu](https://nightbot.tv/spam_protection). 13 | 14 | Clicking the Options button will open a popout that you can customize filter settings. 15 | 16 | #### Options 17 | 18 | - *Timeout Length* - This is the maximum length of time Nightbot will timeout users for when being punished for this spam filter. Nightbot always issues a warning for first offenses (either the message is deleted or the user is timed out for 5 seconds), and repeat offenses yield the length you select. The 600-second default value is equivalent to 10 minutes. 19 | 20 | - *Limit* - This is the minimum number of symbols before Nightbot will punish the user for spamming. The default limit is 8 symbols. 21 | 22 | - *Exempt Userlevel* - This is the minimum required userlevel to be exempt from this filter. For example, if `regular` is set, regulars are able to use excessive symbols and not get punished. 23 | 24 | - *Silent Mode* - Enable this setting and Nightbot will no longer give messages to punished users. This is useful for busier channels where Nightbot floods the chat with timeout explanation messages. 25 | 26 | - *Custom Message* - This sets a custom message to be displayed to users when they are punished from the symbols filter. Leaving this blank will use the default messages, which are randomly chosen Duke Nukem quotes. 27 | 28 | ### Managing Filters 29 | 30 | All filters can be managed through the [Spam Protection menu](https://nightbot.tv/spam_protection) or through the [!filters command](https://docs.nightbot.tv/commands/filters). 31 | -------------------------------------------------------------------------------- /variables/arguments.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Arguments 3 | */ 4 | 5 | The arguments variables (1-9) print arguments split by spaces after a command. This is primarily useful when used within nested commands. 6 | 7 | ## Usage 8 | 9 | > $(`number`) 10 | 11 | `number` can be a value from 1 through 9 12 | 13 | ## Example 14 | 15 | > $(3) 16 | 17 | would print the third argument after a command 18 | 19 | If the input for a !command was 20 | 21 | > !command lorem ipsum dolor 22 | 23 | the result would be dolor -------------------------------------------------------------------------------- /variables/channel.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Channel 3 | */ 4 | 5 | The channel variable just prints the current channel. It's useful when used within nested variables. 6 | 7 | ## Usage 8 | 9 | > $(channel) 10 | 11 | #### Example Usage 12 | 13 | > $(channel) 14 | 15 | would result in 16 | 17 | > nightdev 18 | 19 | if the current chat was nightdev's 20 | 21 | ## Examples 22 | 23 | #### Adding a command to show how many Twitch followers the current channel has 24 | 25 | > !commands add !followers $(channel) has $(twitch $(channel) "{{followers}} followers!") -------------------------------------------------------------------------------- /variables/channelid.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: ChannelID 3 | */ 4 | 5 | ChannelID can be used to show the particular channel's ID when used within that particular service. 6 | 7 | ## Usage 8 | 9 | > $(channelid) 10 | -------------------------------------------------------------------------------- /variables/chatid.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: ChatID 3 | */ 4 | 5 | ChatID can be used to retrieve the particular chat's ID. This is primarily useful for bots which may be used in multiple chats (like with YouTube) alongside of the `eval` variable. 6 | 7 | ## Usage 8 | 9 | > $(eval '$(chatid)' === 'pM4IfHZ5qcYSf987SDFDF9' ? 'say this' : 'say something else') 10 | -------------------------------------------------------------------------------- /variables/command.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Command 3 | */ 4 | 5 | The command variable just prints the current command being executed. It's useful when used within nested variables. 6 | 7 | ## Usage 8 | 9 | > $(command) 10 | 11 | #### Example Usage 12 | 13 | > $(command) 14 | 15 | would result in 16 | 17 | > !testcommand 18 | 19 | if the current command being executed was `!testcommand` 20 | -------------------------------------------------------------------------------- /variables/count.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Count 3 | */ 4 | 5 | The count variable prints how many times a command has been used. 6 | 7 | ## Usage 8 | 9 | > $(count) 10 | 11 | #### Example Usage 12 | 13 | > $(count) 14 | 15 | would result in 16 | 17 | > 1 18 | 19 | if this was the first time you called the command, then 20 | 21 | > 2 22 | 23 | The next time you called the command, and so on 24 | 25 | ## Examples 26 | 27 | #### Adding a command to show how many hugs Nightbot has given 28 | 29 | > !commands add !hug /me hugged $(touser) ($(count) hugs have been given) -------------------------------------------------------------------------------- /variables/countdown.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Countdown 3 | */ 4 | 5 | You can use the countdown variable to create commands that display the time left until a specified date. For example, you may want to countdown until a special event on stream, or until when the stream will start every day. 6 | 7 | ## Usage 8 | 9 | The countdown variable accepts two kinds of arguments: a **date/time** or a **time** 10 | 11 | ### Date/Time 12 | 13 | > $(countdown `date/time`) 14 | 15 | `date/time` is the specific date/time you wish to count down to 16 | 17 | It can accept variants of dates, but you will find it works best with dates in the format: `MM DD YYYY HH:MM:SS AM/PM TZ`, `MM` is the month, `DD` is the day, `YYYY` is the year, `HH` is the hour, `MM` is the minutes, `SS` is the seconds, `AM/PM` is `AM` *or* `PM`, and `TZ` is the timezone. For a list of supported timezones, check out [the time variable page](https://docs.nightbot.tv/variables/time#timezones). 18 | 19 | #### Example Usage 20 | 21 | > $(countdown Dec 25 2015 12:00:00 AM EST) 22 | 23 | will result with a response in this format 24 | 25 | > 1 day 3 hours 20 minutes 30 seconds 26 | 27 | ### Time 28 | 29 | > $(countdown `time`) 30 | 31 | `time` is the specific time you wish to count down to (the countdown resets daily) 32 | 33 | It can accept variants of times, but you will find it works best with times in the format: `HH:MM:SS AM/PM TZ`, where `HH` is the hour, `MM` is the minutes, `SS` is the seconds, `AM/PM` is `AM` *or* `PM`, and `TZ` is the timezone. For a list of supported timezones, check out [the time variable page](https://docs.nightbot.tv/variables/time#timezones). 34 | 35 | #### Example Usage 36 | 37 | > $(countdown 5:00:00 PM EST) 38 | 39 | will result with a response in this format 40 | 41 | > 3 hours 20 minutes 30 seconds 42 | 43 | 44 | ## Examples 45 | 46 | #### Adding a command to show chatters when your special Christmas stream begins 47 | 48 | > !commands add !christmas Christmas Countdown: $(countdown Dec 25 2015 12:00:00 AM EST) 49 | 50 | 51 | #### Adding a command to show chatters when your stream starts daily 52 | 53 | > !commands add !starting The stream is starting in $(countdown 5:00:00 PM EST) -------------------------------------------------------------------------------- /variables/countup.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Countup 3 | */ 4 | 5 | You can use the countup variable to create commands that display the time since a specified date. For example, maybe you want to countup from a special event that happened on your stream. 6 | 7 | ## Usage 8 | 9 | The countup variable accepts two kinds of arguments: a **date/time** or a **time** 10 | 11 | ### Date/Time 12 | 13 | > $(countup `date/time`) 14 | 15 | `date/time` is the specific date/time you wish to count up to 16 | 17 | It can accept variants of dates, but you will find it works best with dates in the format: `MM DD YYYY HH:MM:SS AM/PM TZ`, `MM` is the month, `DD` is the day, `YYYY` is the year, `HH` is the hour, `MM` is the minutes, `SS` is the seconds, `AM/PM` is `AM` *or* `PM`, and `TZ` is the timezone. For a list of supported timezones, check out [the time variable page](https://docs.nightbot.tv/variables/time#timezones). 18 | 19 | #### Example Usage 20 | 21 | > $(countup Dec 25 2015 12:00:00 AM EST) 22 | 23 | will result with a response in this format 24 | 25 | > 1 day 3 hours 20 minutes 30 seconds 26 | 27 | ### Time 28 | 29 | > $(countup `time`) 30 | 31 | `time` is the specific time you wish to count up to (the countup resets daily) 32 | 33 | It can accept variants of times, but you will find it works best with times in the format: `HH:MM:SS AM/PM TZ`, where `HH` is the hour, `MM` is the minutes, `SS` is the seconds, `AM/PM` is `AM` *or* `PM`, and `TZ` is the timezone. For a list of supported timezones, check out [the time variable page](https://docs.nightbot.tv/variables/time#timezones). 34 | 35 | #### Example Usage 36 | 37 | > $(countup 5:00:00 PM EST) 38 | 39 | will result with a response in this format 40 | 41 | > 3 hours 20 minutes 30 seconds 42 | 43 | ## Examples 44 | 45 | #### Adding a command to show chatters how long it's been since Christmas 46 | 47 | > !commands add !christmas It has been days since Christmas $(countup Dec 25 2014 12:00:00 AM EST) 48 | -------------------------------------------------------------------------------- /variables/djkhaled.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: DJKhaled 3 | */ 4 | 5 | You can use the DJKhaled variable to randomly display one of DJ Khaled’s 🔑s to success 6 | 7 | ## Usage 8 | 9 | > $(djkhaled) 10 | 11 | #### Example Usage 12 | 13 | > $(djkhaled) 14 | 15 | would result in 16 | 17 | > lion, i be confused. why they be mad? cuz we enjoying ourselves and we got positive energy and we got rolls royces. why they mad? 18 | 19 | ## Examples 20 | 21 | #### Adding a command to show chatters a key to success 22 | 23 | > !commands add !key DJ Khaled Once Said: $(djkhaled) 24 | -------------------------------------------------------------------------------- /variables/eval.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Eval 3 | */ 4 | 5 | The Eval variable is used to evaluate JavaScript code. 6 | 7 | ## Usage 8 | 9 | > $(eval `javascript`) 10 | 11 | #### Example Usage 12 | 13 | > $(eval 2 + 2) 14 | 15 | would result in 16 | 17 | > 4 18 | 19 | ## Examples 20 | 21 | #### Generate a random number between 1 to 100 22 | 23 | > !commands add !random The Random Number is: $(eval Math.floor((Math.random() * 100) + 1)) 24 | 25 | #### Make an 8ball command 26 | 27 | > !commands add !8ball 🎱 $(eval const responses = ['All signs point to yes...', 'Yes!', 'My sources say nope.', 'You may rely on it.', 'Concentrate and ask again...', 'Outlook not so good...', 'It is decidedly so!', 'Better not tell you.', 'Very doubtful.', 'Yes - Definitely!', 'It is certain!', 'Most likely.', 'Ask again later.', 'No!', 'Outlook good.', 'Don\\'t count on it.']; responses[Math.floor(Math.random() * responses.length)];) 28 | 29 | ## Limitations 30 | 31 | ### Execution Timeout 32 | 33 | The timeout length of the script execution is 1 second. 34 | 35 | ### Async Support 36 | 37 | Only synchronous execution is supported. Async code will result in an error. 38 | 39 | ### Input Injection 40 | 41 | Variables substituted inside of the Eval variable are treated as raw JavaScript. 42 | Because of this, extra care should be taken when using variables inside of Eval. 43 | 44 | > !addcom !upper $(eval "@$(user), " + "$(query)".toUpperCase()) 45 | 46 | At first glance, this command works as expected: 47 | 48 | > User: !upper lulw 49 | Nightbot: @User, LULW 50 | 51 | However, a malicious user could use this command in combination with Nightbot's moderator level privileges to perform unintended actions. 52 | This can be especially risky when Nightbot is used in combination with other twitch bots. 53 | 54 | > User: !upper ";"!settitle Last stream ever!"// 55 | 56 | > Nightbot: !settitle Last stream ever! 57 | 58 | > OtherBot: @Nightbot, the title has been updated to "Last stream ever!" 59 | 60 | In order to avoid this, make use of the [QueryString](https://docs.nightbot.tv/variables/querystring) variable and JavaScript's [decodeURIComponent](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent): 61 | 62 | > !addcom !upper $(eval "@$(user), " + decodeURIComponent("$(querystring)").toUpperCase()) 63 | 64 | Or, if substituting a different variable, such as an [argument](https://docs.nightbot.tv/variables/arguments): 65 | 66 | > !addcom !upper $(eval "@$(user), " + decodeURIComponent("$(querystring $(3))").toUpperCase()) 67 | -------------------------------------------------------------------------------- /variables/lastfm.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Lastfm 3 | */ 4 | 5 | You can use the Lastfm variable to display the most recent song scrobbled to a Last.fm account. This is useful when you use a scrobbling tool or enable scrobbling to Last.fm in Spotify and want viewers to know what track is playing on your stream. 6 | 7 | ### Normal Usage 8 | 9 | > $(lastfm `username`) 10 | 11 | `username` is the username being looked up on Last.fm 12 | 13 | #### Example for Normal Usage 14 | 15 | > $(lastfm night) 16 | 17 | would result in 18 | 19 | > The Reason by Hoobastank 20 | 21 | ### Advanced Usage 22 | 23 | > $(lastfm `username` "`formatted string`") 24 | 25 | `username` is the username being looked up on Last.fm 26 | 27 | `formatted string` is a string with the following mustache-tagged parameters: 28 | 29 | * *artist* - The artist of the most recent scrobbled track 30 | * *title* - The title of the most recent scrobbled track 31 | * *url* - A link to the most recent scrobbled track on Last.fm 32 | 33 | #### Example Usage 34 | 35 | > $(lastfm night "{{title}} by {{artist}} - {{url}}") 36 | 37 | would result in 38 | 39 | > The Reason by Hoobastank - http://www.last.fm/music/Hoobastank/_/The+Reason 40 | 41 | ## Last.fm + Spotify 42 | 43 | A lot of streamers use Spotify for music on stream. If this is the case for you, you may want to connect your Spotify to Last.fm. You can do this in the Spotify settings: 44 | 45 | 1. Open Spotify settings 46 | 2. Scroll to Last.fm section 47 | 3. Click the "Connect to Last.fm" button to connect your Last.fm account to Spotify 48 | 4. Add a Nightbot command to show the most recent scrobbled song (shown under Examples below) 49 | 50 | ## Examples 51 | 52 | #### Adding a command to show chatters what song you're listening to on stream (if you're scrobbling songs to Last.fm) 53 | 54 | > !commands add !song $(lastfm `username`) -------------------------------------------------------------------------------- /variables/leagueoflegends.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: LeagueOfLegends 3 | */ 4 | 5 | You can use the LeagueOfLegends variable to create commands that display rank information for a Riot ID. 6 | 7 | ## Usage 8 | 9 | > $(leagueoflegends `riot_id` `region`) 10 | 11 | `riot_id` is the Riot ID being looked up (`GameName#TagLine`) 12 | `region` is the region the summoner plays on 13 | 14 | #### Example Usage 15 | 16 | > $(leagueoflegends testing#1234 na) 17 | 18 | would result in 19 | 20 | > testing#1234's current rank: Challenger I 21 | 22 | ## Examples 23 | 24 | #### Adding a command to show chatters your rank 25 | 26 | > !commands add !rank $(leagueoflegends `riot_id` `region`) 27 | 28 | #### Adding a command to allow users in chat to lookup their own account 29 | 30 | > !commands add !rank $(leagueoflegends $(query)) 31 | 32 | ### Legal Jibber Jabber 33 | 34 | Nightbot isn’t endorsed by Riot Games and doesn't reflect the views or opinions of Riot Games or anyone officially involved in producing or managing League of Legends. League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. League of Legends © Riot Games, Inc. 35 | -------------------------------------------------------------------------------- /variables/meta: -------------------------------------------------------------------------------- 1 | Title: Custom Variables 2 | Sort: 5 3 | -------------------------------------------------------------------------------- /variables/provider.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Provider 3 | */ 4 | 5 | The Provider variable can be used to show the service where Nightbot is receiving a command. It's useful when used as an argument for a [UrlFetch](https://docs.nightbot.tv/variables/urlfetch). 6 | 7 | ## Usage 8 | 9 | > $(provider) 10 | 11 | would result depending on what service the command was used. 12 | 13 | #### Provider Values 14 | 15 | * `twitch` - When used in Twitch chat 16 | * `youtube` - When used in YouTube live chat 17 | * `discord` - When used in a Discord message 18 | * `trovo` - When used in Trovo chat 19 | * `noice` - When used in Noice chat 20 | * `soop` - When used in SOOP chat 21 | -------------------------------------------------------------------------------- /variables/query.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Query 3 | */ 4 | 5 | The query variable prints anything a user types after a command. This is useful when combined with other variables that accept parameters. 6 | 7 | ## Usage 8 | 9 | > $(query) 10 | 11 | ## Examples 12 | 13 | #### Adding a command to show the weather 14 | 15 | > !commands add !weather $(weather $(query)) 16 | 17 | #### Adding a command to lookup an Xbox Live gamertag 18 | 19 | > !commands add !xbl $(xbl $(query)) -------------------------------------------------------------------------------- /variables/querystring.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: QueryString 3 | */ 4 | 5 | The querystring variable prints a url-encoded string of the user's text after a command. This is useful when combined with the urlfetch variable in cases where data is being passed to a server via querystring. 6 | 7 | ## Usage 8 | 9 | > $(querystring) 10 | 11 | The querystring also accepts arguments that will return a url-encoded string. 12 | 13 | ## Alternate Usage 14 | 15 | > $(querystring $(twitch $(channel) "{{url}}")) 16 | 17 | will return 18 | 19 | > https%3A%2F%2Fwww.twitch.tv%2Fnight -------------------------------------------------------------------------------- /variables/rainwave.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Rainwave 3 | */ 4 | 5 | Rainwave is a gaming radio network that plays game soundtracks, remixes, and more. You can use the Rainwave variable to display the now playing song on any of the Rainwave stations. 6 | 7 | ### Normal Usage 8 | 9 | > $(rainwave `station`) 10 | 11 | `station` is the station being looked up on Rainwave 12 | 13 | The station can be any of the following: 14 | 15 | * *all* - All 16 | * *game* - Game 17 | * *chiptune* - Chiptune 18 | * *ocremix* - OC Remix 19 | * *covers* - Covers 20 | 21 | #### Example for Normal Usage 22 | 23 | > $(rainwave game) 24 | 25 | would result in 26 | 27 | > Battlefield - Those That Slay and Fall by Yuzo Koshiro 28 | 29 | ### Advanced Usage 30 | 31 | > $(rainwave `station` "`formatted string`") 32 | 33 | `station` is the station being looked up on Rainwave (same as above) 34 | 35 | `formatted string` is a string with the following mustache-tagged parameters: 36 | 37 | * *artist* - The artist of the current playing song 38 | * *title* - The title of the current playing song 39 | * *url* - A link to the source of the current playing song 40 | 41 | #### Example Usage 42 | 43 | > $(rainwave ocremix "{{title}} by {{artist}} - {{url}}") 44 | 45 | would result in 46 | 47 | > The Vision of the Wind Fish by Sound Test - http://threshold.ocremix.org 48 | 49 | ## Examples 50 | 51 | #### Adding a command to show chatters what song you're listening to on stream (if you're playing a station on Rainwave) 52 | 53 | > !commands add !song $(rainwave `station`) -------------------------------------------------------------------------------- /variables/steam.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Steam 3 | */ 4 | 5 | You can use the Steam variable to display various information about a specific Steam profile. 6 | 7 | ### Normal Usage 8 | 9 | > $(steam `username`) 10 | 11 | `username` is the Steam community ID being looked up 12 | 13 | #### Example for Normal Usage 14 | 15 | > $(steam night) 16 | 17 | would result in 18 | 19 | > Night is Offline since Sun Dec 06 2015 04:09:04 GMT-0500 (EST) - http://steamcommunity.com/id/night/ 20 | 21 | ### Advanced Usage 22 | 23 | > $(steam `username` "`formatted string`") 24 | 25 | `username` is the Steam community ID being looked up 26 | 27 | `formatted string` is a string with the following mustache-tagged parameters: 28 | 29 | * *name* - Currently set player name 30 | * *realName* - User's real name (if one is set) 31 | * *profileUrl* - Link to the user's Steam community page 32 | * *lastOnline* - The last time a user was online on Steam 33 | * *status* - The current status of the user (Online, Offline, Busy, Away, Snooze, Looking to play, Looking to trade) 34 | * *country* - The country the user resides in (if one is set) 35 | * *gameId* - The game ID of a Steam game being played (if one is being played) 36 | * *gameName* - The game being played (if one is being played) 37 | * *gameUrl* - The link to the game's Steam page (if a game is being played) 38 | * *gameServer* - The IP and port of the server being played on (if an eligible game is being played) 39 | 40 | #### Example Usage 41 | 42 | > $(steam night "{{name}} resides in {{country}} - {{profileUrl}}") 43 | 44 | would result in 45 | 46 | > Night resides in US - http://steamcommunity.com/id/night/ 47 | 48 | ## Examples 49 | 50 | #### Adding a command to show chatters your Steam profile info 51 | 52 | > !commands add !steam $(steam `username`) 53 | 54 | #### Adding a command to allow users in chat to lookup their own Steam profile 55 | 56 | > !commands add !steamlookup $(steam $(query)) -------------------------------------------------------------------------------- /variables/teamfighttactics.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: TeamfightTactics 3 | */ 4 | 5 | You can use the TeamfightTactics variable to create commands that display rank information for a Riot ID. 6 | 7 | ## Usage 8 | 9 | > $(teamfighttactics `riot_id` `region`) 10 | 11 | `riot_id` is the Riot ID being looked up (`GameName#TagLine`) 12 | `region` is the region the summoner plays on 13 | 14 | #### Example Usage 15 | 16 | > $(teamfighttactics testing#1234 na) 17 | 18 | would result in 19 | 20 | > testing#1234's current rank: Challenger I 21 | 22 | ## Examples 23 | 24 | #### Adding a command to show chatters your rank 25 | 26 | > !commands add !rank $(teamfighttactics `riot_id` `region`) 27 | 28 | #### Adding a command to allow users in chat to lookup their own account 29 | 30 | > !commands add !rank $(teamfighttactics $(query)) 31 | 32 | ### Legal Jibber Jabber 33 | 34 | Nightbot isn’t endorsed by Riot Games and doesn't reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Teamfight Tactics. Teamfight Tactics and Riot Games are trademarks or registered trademarks of Riot Games, Inc. Teamfight Tactics © Riot Games, Inc. 35 | -------------------------------------------------------------------------------- /variables/time.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Time 3 | */ 4 | 5 | The time variable prints the current time in a selected timezone. 6 | 7 | ## Normal Usage 8 | 9 | > $(time `timezone`) 10 | 11 | `timezone` is the timezone to be converted to (timezone list at bottom of page) 12 | 13 | #### Example Usage 14 | 15 | > $(time US/Eastern) 16 | 17 | would result in 18 | 19 | > December 8th 2015, 10:05:04 am EST GMT-05:00 20 | 21 | ## Advanced Usage 22 | 23 | > $(time `timezone` "`formatted time`") 24 | 25 | `timezone` is the timezone to be converted to (timezone list at bottom of page) 26 | 27 | `formatted time` is a time format to print 28 | 29 | We use moment.js to compute time, so you can use their [formatting guide](http://momentjs.com/docs/#/displaying/format/) to create a format you'd like to use. 30 | 31 | #### Example Usage 32 | 33 | > $(time US/Eastern "MMMM Do YYYY, h:mm:ss a z [GMT]Z") 34 | 35 | would result in 36 | 37 | > December 8th 2015, 10:05:04 am EST GMT-05:00 38 | 39 | ## Examples 40 | 41 | #### Adding a command to show your chatters your current local time 42 | 43 | > !commands add !time $(time `timezone`) 44 | 45 | ## Timezones 46 | 47 | * Africa/Abidjan 48 | * Africa/Accra 49 | * Africa/Addis_Ababa 50 | * Africa/Algiers 51 | * Africa/Asmara 52 | * Africa/Asmera 53 | * Africa/Bamako 54 | * Africa/Bangui 55 | * Africa/Banjul 56 | * Africa/Bissau 57 | * Africa/Blantyre 58 | * Africa/Brazzaville 59 | * Africa/Bujumbura 60 | * Africa/Cairo 61 | * Africa/Casablanca 62 | * Africa/Ceuta 63 | * Africa/Conakry 64 | * Africa/Dakar 65 | * Africa/Dar_es_Salaam 66 | * Africa/Djibouti 67 | * Africa/Douala 68 | * Africa/El_Aaiun 69 | * Africa/Freetown 70 | * Africa/Gaborone 71 | * Africa/Harare 72 | * Africa/Johannesburg 73 | * Africa/Juba 74 | * Africa/Kampala 75 | * Africa/Khartoum 76 | * Africa/Kigali 77 | * Africa/Kinshasa 78 | * Africa/Lagos 79 | * Africa/Libreville 80 | * Africa/Lome 81 | * Africa/Luanda 82 | * Africa/Lubumbashi 83 | * Africa/Lusaka 84 | * Africa/Malabo 85 | * Africa/Maputo 86 | * Africa/Maseru 87 | * Africa/Mbabane 88 | * Africa/Mogadishu 89 | * Africa/Monrovia 90 | * Africa/Nairobi 91 | * Africa/Ndjamena 92 | * Africa/Niamey 93 | * Africa/Nouakchott 94 | * Africa/Ouagadougou 95 | * Africa/Porto-Novo 96 | * Africa/Sao_Tome 97 | * Africa/Timbuktu 98 | * Africa/Tripoli 99 | * Africa/Tunis 100 | * Africa/Windhoek 101 | * America/Adak 102 | * America/Anchorage 103 | * America/Anguilla 104 | * America/Antigua 105 | * America/Araguaina 106 | * America/Argentina/Buenos_Aires 107 | * America/Argentina/Catamarca 108 | * America/Argentina/ComodRivadavia 109 | * America/Argentina/Cordoba 110 | * America/Argentina/Jujuy 111 | * America/Argentina/La_Rioja 112 | * America/Argentina/Mendoza 113 | * America/Argentina/Rio_Gallegos 114 | * America/Argentina/Salta 115 | * America/Argentina/San_Juan 116 | * America/Argentina/San_Luis 117 | * America/Argentina/Tucuman 118 | * America/Argentina/Ushuaia 119 | * America/Aruba 120 | * America/Asuncion 121 | * America/Atikokan 122 | * America/Atka 123 | * America/Bahia 124 | * America/Bahia_Banderas 125 | * America/Barbados 126 | * America/Belem 127 | * America/Belize 128 | * America/Blanc-Sablon 129 | * America/Boa_Vista 130 | * America/Bogota 131 | * America/Boise 132 | * America/Buenos_Aires 133 | * America/Cambridge_Bay 134 | * America/Campo_Grande 135 | * America/Cancun 136 | * America/Caracas 137 | * America/Catamarca 138 | * America/Cayenne 139 | * America/Cayman 140 | * America/Chicago 141 | * America/Chihuahua 142 | * America/Coral_Harbour 143 | * America/Cordoba 144 | * America/Costa_Rica 145 | * America/Creston 146 | * America/Cuiaba 147 | * America/Curacao 148 | * America/Danmarkshavn 149 | * America/Dawson 150 | * America/Dawson_Creek 151 | * America/Denver 152 | * America/Detroit 153 | * America/Dominica 154 | * America/Edmonton 155 | * America/Eirunepe 156 | * America/El_Salvador 157 | * America/Ensenada 158 | * America/Fort_Nelson 159 | * America/Fort_Wayne 160 | * America/Fortaleza 161 | * America/Glace_Bay 162 | * America/Godthab 163 | * America/Goose_Bay 164 | * America/Grand_Turk 165 | * America/Grenada 166 | * America/Guadeloupe 167 | * America/Guatemala 168 | * America/Guayaquil 169 | * America/Guyana 170 | * America/Halifax 171 | * America/Havana 172 | * America/Hermosillo 173 | * America/Indiana/Indianapolis 174 | * America/Indiana/Knox 175 | * America/Indiana/Marengo 176 | * America/Indiana/Petersburg 177 | * America/Indiana/Tell_City 178 | * America/Indiana/Vevay 179 | * America/Indiana/Vincennes 180 | * America/Indiana/Winamac 181 | * America/Indianapolis 182 | * America/Inuvik 183 | * America/Iqaluit 184 | * America/Jamaica 185 | * America/Jujuy 186 | * America/Juneau 187 | * America/Kentucky/Louisville 188 | * America/Kentucky/Monticello 189 | * America/Knox_IN 190 | * America/Kralendijk 191 | * America/La_Paz 192 | * America/Lima 193 | * America/Los_Angeles 194 | * America/Louisville 195 | * America/Lower_Princes 196 | * America/Maceio 197 | * America/Managua 198 | * America/Manaus 199 | * America/Marigot 200 | * America/Martinique 201 | * America/Matamoros 202 | * America/Mazatlan 203 | * America/Mendoza 204 | * America/Menominee 205 | * America/Merida 206 | * America/Metlakatla 207 | * America/Mexico_City 208 | * America/Miquelon 209 | * America/Moncton 210 | * America/Monterrey 211 | * America/Montevideo 212 | * America/Montreal 213 | * America/Montserrat 214 | * America/Nassau 215 | * America/New_York 216 | * America/Nipigon 217 | * America/Nome 218 | * America/Noronha 219 | * America/North_Dakota/Beulah 220 | * America/North_Dakota/Center 221 | * America/North_Dakota/New_Salem 222 | * America/Ojinaga 223 | * America/Panama 224 | * America/Pangnirtung 225 | * America/Paramaribo 226 | * America/Phoenix 227 | * America/Port-au-Prince 228 | * America/Port_of_Spain 229 | * America/Porto_Acre 230 | * America/Porto_Velho 231 | * America/Puerto_Rico 232 | * America/Rainy_River 233 | * America/Rankin_Inlet 234 | * America/Recife 235 | * America/Regina 236 | * America/Resolute 237 | * America/Rio_Branco 238 | * America/Rosario 239 | * America/Santa_Isabel 240 | * America/Santarem 241 | * America/Santiago 242 | * America/Santo_Domingo 243 | * America/Sao_Paulo 244 | * America/Scoresbysund 245 | * America/Shiprock 246 | * America/Sitka 247 | * America/St_Barthelemy 248 | * America/St_Johns 249 | * America/St_Kitts 250 | * America/St_Lucia 251 | * America/St_Thomas 252 | * America/St_Vincent 253 | * America/Swift_Current 254 | * America/Tegucigalpa 255 | * America/Thule 256 | * America/Thunder_Bay 257 | * America/Tijuana 258 | * America/Toronto 259 | * America/Tortola 260 | * America/Vancouver 261 | * America/Virgin 262 | * America/Whitehorse 263 | * America/Winnipeg 264 | * America/Yakutat 265 | * America/Yellowknife 266 | * Antarctica/Casey 267 | * Antarctica/Davis 268 | * Antarctica/DumontDUrville 269 | * Antarctica/Macquarie 270 | * Antarctica/Mawson 271 | * Antarctica/McMurdo 272 | * Antarctica/Palmer 273 | * Antarctica/Rothera 274 | * Antarctica/South_Pole 275 | * Antarctica/Syowa 276 | * Antarctica/Troll 277 | * Antarctica/Vostok 278 | * Arctic/Longyearbyen 279 | * Asia/Aden 280 | * Asia/Almaty 281 | * Asia/Amman 282 | * Asia/Anadyr 283 | * Asia/Aqtau 284 | * Asia/Aqtobe 285 | * Asia/Ashgabat 286 | * Asia/Ashkhabad 287 | * Asia/Baghdad 288 | * Asia/Bahrain 289 | * Asia/Baku 290 | * Asia/Bangkok 291 | * Asia/Beirut 292 | * Asia/Bishkek 293 | * Asia/Brunei 294 | * Asia/Calcutta 295 | * Asia/Chita 296 | * Asia/Choibalsan 297 | * Asia/Chongqing 298 | * Asia/Chungking 299 | * Asia/Colombo 300 | * Asia/Dacca 301 | * Asia/Damascus 302 | * Asia/Dhaka 303 | * Asia/Dili 304 | * Asia/Dubai 305 | * Asia/Dushanbe 306 | * Asia/Gaza 307 | * Asia/Harbin 308 | * Asia/Hebron 309 | * Asia/Ho_Chi_Minh 310 | * Asia/Hong_Kong 311 | * Asia/Hovd 312 | * Asia/Irkutsk 313 | * Asia/Istanbul 314 | * Asia/Jakarta 315 | * Asia/Jayapura 316 | * Asia/Jerusalem 317 | * Asia/Kabul 318 | * Asia/Kamchatka 319 | * Asia/Karachi 320 | * Asia/Kashgar 321 | * Asia/Kathmandu 322 | * Asia/Katmandu 323 | * Asia/Khandyga 324 | * Asia/Kolkata 325 | * Asia/Krasnoyarsk 326 | * Asia/Kuala_Lumpur 327 | * Asia/Kuching 328 | * Asia/Kuwait 329 | * Asia/Macao 330 | * Asia/Macau 331 | * Asia/Magadan 332 | * Asia/Makassar 333 | * Asia/Manila 334 | * Asia/Muscat 335 | * Asia/Nicosia 336 | * Asia/Novokuznetsk 337 | * Asia/Novosibirsk 338 | * Asia/Omsk 339 | * Asia/Oral 340 | * Asia/Phnom_Penh 341 | * Asia/Pontianak 342 | * Asia/Pyongyang 343 | * Asia/Qatar 344 | * Asia/Qyzylorda 345 | * Asia/Rangoon 346 | * Asia/Riyadh 347 | * Asia/Saigon 348 | * Asia/Sakhalin 349 | * Asia/Samarkand 350 | * Asia/Seoul 351 | * Asia/Shanghai 352 | * Asia/Singapore 353 | * Asia/Srednekolymsk 354 | * Asia/Taipei 355 | * Asia/Tashkent 356 | * Asia/Tbilisi 357 | * Asia/Tehran 358 | * Asia/Tel_Aviv 359 | * Asia/Thimbu 360 | * Asia/Thimphu 361 | * Asia/Tokyo 362 | * Asia/Ujung_Pandang 363 | * Asia/Ulaanbaatar 364 | * Asia/Ulan_Bator 365 | * Asia/Urumqi 366 | * Asia/Ust-Nera 367 | * Asia/Vientiane 368 | * Asia/Vladivostok 369 | * Asia/Yakutsk 370 | * Asia/Yekaterinburg 371 | * Asia/Yerevan 372 | * Atlantic/Azores 373 | * Atlantic/Bermuda 374 | * Atlantic/Canary 375 | * Atlantic/Cape_Verde 376 | * Atlantic/Faeroe 377 | * Atlantic/Faroe 378 | * Atlantic/Jan_Mayen 379 | * Atlantic/Madeira 380 | * Atlantic/Reykjavik 381 | * Atlantic/South_Georgia 382 | * Atlantic/St_Helena 383 | * Atlantic/Stanley 384 | * Australia/ACT 385 | * Australia/Adelaide 386 | * Australia/Brisbane 387 | * Australia/Broken_Hill 388 | * Australia/Canberra 389 | * Australia/Currie 390 | * Australia/Darwin 391 | * Australia/Eucla 392 | * Australia/Hobart 393 | * Australia/LHI 394 | * Australia/Lindeman 395 | * Australia/Lord_Howe 396 | * Australia/Melbourne 397 | * Australia/NSW 398 | * Australia/North 399 | * Australia/Perth 400 | * Australia/Queensland 401 | * Australia/South 402 | * Australia/Sydney 403 | * Australia/Tasmania 404 | * Australia/Victoria 405 | * Australia/West 406 | * Australia/Yancowinna 407 | * Brazil/Acre 408 | * Brazil/DeNoronha 409 | * Brazil/East 410 | * Brazil/West 411 | * CET 412 | * CST6CDT 413 | * Canada/Atlantic 414 | * Canada/Central 415 | * Canada/East-Saskatchewan 416 | * Canada/Eastern 417 | * Canada/Mountain 418 | * Canada/Newfoundland 419 | * Canada/Pacific 420 | * Canada/Saskatchewan 421 | * Canada/Yukon 422 | * Chile/Continental 423 | * Chile/EasterIsland 424 | * Cuba 425 | * EET 426 | * EST 427 | * EST5EDT 428 | * Egypt 429 | * Eire 430 | * Etc/GMT 431 | * Etc/GMT+0 432 | * Etc/GMT+1 433 | * Etc/GMT+10 434 | * Etc/GMT+11 435 | * Etc/GMT+12 436 | * Etc/GMT+2 437 | * Etc/GMT+3 438 | * Etc/GMT+4 439 | * Etc/GMT+5 440 | * Etc/GMT+6 441 | * Etc/GMT+7 442 | * Etc/GMT+8 443 | * Etc/GMT+9 444 | * Etc/GMT-0 445 | * Etc/GMT-1 446 | * Etc/GMT-10 447 | * Etc/GMT-11 448 | * Etc/GMT-12 449 | * Etc/GMT-13 450 | * Etc/GMT-14 451 | * Etc/GMT-2 452 | * Etc/GMT-3 453 | * Etc/GMT-4 454 | * Etc/GMT-5 455 | * Etc/GMT-6 456 | * Etc/GMT-7 457 | * Etc/GMT-8 458 | * Etc/GMT-9 459 | * Etc/GMT0 460 | * Etc/Greenwich 461 | * Etc/UCT 462 | * Etc/UTC 463 | * Etc/Universal 464 | * Etc/Zulu 465 | * Europe/Amsterdam 466 | * Europe/Andorra 467 | * Europe/Athens 468 | * Europe/Belfast 469 | * Europe/Belgrade 470 | * Europe/Berlin 471 | * Europe/Bratislava 472 | * Europe/Brussels 473 | * Europe/Bucharest 474 | * Europe/Budapest 475 | * Europe/Busingen 476 | * Europe/Chisinau 477 | * Europe/Copenhagen 478 | * Europe/Dublin 479 | * Europe/Gibraltar 480 | * Europe/Guernsey 481 | * Europe/Helsinki 482 | * Europe/Isle_of_Man 483 | * Europe/Istanbul 484 | * Europe/Jersey 485 | * Europe/Kaliningrad 486 | * Europe/Kiev 487 | * Europe/Lisbon 488 | * Europe/Ljubljana 489 | * Europe/London 490 | * Europe/Luxembourg 491 | * Europe/Madrid 492 | * Europe/Malta 493 | * Europe/Mariehamn 494 | * Europe/Minsk 495 | * Europe/Monaco 496 | * Europe/Moscow 497 | * Europe/Nicosia 498 | * Europe/Oslo 499 | * Europe/Paris 500 | * Europe/Podgorica 501 | * Europe/Prague 502 | * Europe/Riga 503 | * Europe/Rome 504 | * Europe/Samara 505 | * Europe/San_Marino 506 | * Europe/Sarajevo 507 | * Europe/Simferopol 508 | * Europe/Skopje 509 | * Europe/Sofia 510 | * Europe/Stockholm 511 | * Europe/Tallinn 512 | * Europe/Tirane 513 | * Europe/Tiraspol 514 | * Europe/Uzhgorod 515 | * Europe/Vaduz 516 | * Europe/Vatican 517 | * Europe/Vienna 518 | * Europe/Vilnius 519 | * Europe/Volgograd 520 | * Europe/Warsaw 521 | * Europe/Zagreb 522 | * Europe/Zaporozhye 523 | * Europe/Zurich 524 | * GB 525 | * GB-Eire 526 | * GMT 527 | * GMT+0 528 | * GMT-0 529 | * GMT0 530 | * Greenwich 531 | * HST 532 | * Hongkong 533 | * Iceland 534 | * Indian/Antananarivo 535 | * Indian/Chagos 536 | * Indian/Christmas 537 | * Indian/Cocos 538 | * Indian/Comoro 539 | * Indian/Kerguelen 540 | * Indian/Mahe 541 | * Indian/Maldives 542 | * Indian/Mauritius 543 | * Indian/Mayotte 544 | * Indian/Reunion 545 | * Iran 546 | * Israel 547 | * Jamaica 548 | * Japan 549 | * Kwajalein 550 | * Libya 551 | * MET 552 | * MST 553 | * MST7MDT 554 | * Mexico/BajaNorte 555 | * Mexico/BajaSur 556 | * Mexico/General 557 | * NZ 558 | * NZ-CHAT 559 | * Navajo 560 | * PRC 561 | * PST8PDT 562 | * Pacific/Apia 563 | * Pacific/Auckland 564 | * Pacific/Bougainville 565 | * Pacific/Chatham 566 | * Pacific/Chuuk 567 | * Pacific/Easter 568 | * Pacific/Efate 569 | * Pacific/Enderbury 570 | * Pacific/Fakaofo 571 | * Pacific/Fiji 572 | * Pacific/Funafuti 573 | * Pacific/Galapagos 574 | * Pacific/Gambier 575 | * Pacific/Guadalcanal 576 | * Pacific/Guam 577 | * Pacific/Honolulu 578 | * Pacific/Johnston 579 | * Pacific/Kiritimati 580 | * Pacific/Kosrae 581 | * Pacific/Kwajalein 582 | * Pacific/Majuro 583 | * Pacific/Marquesas 584 | * Pacific/Midway 585 | * Pacific/Nauru 586 | * Pacific/Niue 587 | * Pacific/Norfolk 588 | * Pacific/Noumea 589 | * Pacific/Pago_Pago 590 | * Pacific/Palau 591 | * Pacific/Pitcairn 592 | * Pacific/Pohnpei 593 | * Pacific/Ponape 594 | * Pacific/Port_Moresby 595 | * Pacific/Rarotonga 596 | * Pacific/Saipan 597 | * Pacific/Samoa 598 | * Pacific/Tahiti 599 | * Pacific/Tarawa 600 | * Pacific/Tongatapu 601 | * Pacific/Truk 602 | * Pacific/Wake 603 | * Pacific/Wallis 604 | * Pacific/Yap 605 | * Poland 606 | * Portugal 607 | * ROC 608 | * ROK 609 | * Singapore 610 | * Turkey 611 | * UCT 612 | * US/Alaska 613 | * US/Aleutian 614 | * US/Arizona 615 | * US/Central 616 | * US/East-Indiana 617 | * US/Eastern 618 | * US/Hawaii 619 | * US/Indiana-Starke 620 | * US/Michigan 621 | * US/Mountain 622 | * US/Pacific 623 | * US/Samoa 624 | * UTC 625 | * Universal 626 | * W-SU 627 | * WET 628 | * Zulu -------------------------------------------------------------------------------- /variables/touser.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: ToUser 3 | */ 4 | 5 | The touser variable just prints the first argument given to a command. 6 | 7 | ## Usage 8 | 9 | > $(touser) 10 | 11 | #### Example Usage 12 | 13 | > $(touser) 14 | 15 | would result in 16 | 17 | > nightdev 18 | 19 | if the first argument after the command was nightdev 20 | 21 | #### Example Usage 22 | 23 | if **no** argument after the command 24 | 25 | > $(touser) 26 | 27 | would result in 28 | 29 | > night 30 | 31 | if the current executor of the command was night 32 | 33 | ## Examples 34 | 35 | #### Adding a command to hug a user 36 | 37 | > !commands add !hug /me hugs $(touser) 38 | -------------------------------------------------------------------------------- /variables/tweet.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Tweet 3 | */ 4 | 5 | The tweet variable creates a click-to-tweet link. This is useful for providing chatters with a link to tweet out your stream. 6 | 7 | ## Usage 8 | 9 | > $(tweet `message`) 10 | 11 | `message` is the message to be tweeted 12 | 13 | #### Example Usage 14 | 15 | > $(tweet Come check out Night's Twitch stream: http://twitch.tv/night) 16 | 17 | would result in 18 | 19 | > http://bit.ly/someshortenedlink 20 | 21 | ## Examples 22 | 23 | #### Adding a command to let viewers tweet out your stream 24 | 25 | > !commands add !tweet $(tweet Come watch @`TwitterUser` while they play $(twitch $(channel) "{{game}} on Twitch! {{url}}")) -------------------------------------------------------------------------------- /variables/twitch.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Twitch 3 | */ 4 | 5 | You can use the Twitch variable to display various profile information about a specific Twitch account. 6 | 7 | ### Normal Usage 8 | 9 | > $(twitch `username`) 10 | 11 | `username` is the Twitch user being looked up 12 | 13 | #### Example for Normal Usage 14 | 15 | > $(twitch night) 16 | 17 | would result in 18 | 19 | > Night is currently live playing Super Mario Kart at 720p, 60 fps with 64 viewers since Mon Dec 07 2015 22:10:56 GMT-0500 (EST) (4 hours, 3 minutes, 50 seconds) - http://www.twitch.tv/night 20 | 21 | ### Advanced Usage 22 | 23 | > $(twitch `username` "`formatted string`") 24 | 25 | `username` is the Twitch user being looked up 26 | 27 | `formatted string` is a string with the following mustache-tagged parameters: 28 | 29 | * *name* - username 30 | * *displayName* - display name 31 | * *url* - channel page link 32 | * *status* - offline, live, or playing a playlist 33 | * *title* - stream title 34 | * *game* - stream game 35 | * *tags* - stream tags 36 | * *createdAt* - date/time user account was created 37 | * *createdLength* - length of time user has been created (years, months, days, hours, minutes, seconds) 38 | * *viewers* - current number of live viewers 39 | * *views* - current number of channel views 40 | * *followers* - current number of channel followers 41 | * *resolution* - stream resolution (if live) 42 | * *fps* - stream fps (if live) 43 | * *uptimeAt* - date/time user went live (or started playing a playlist) 44 | * *uptimeLength* - length of time user has been live (or started playing a playlist) (years, months, days, hours, minutes, seconds) 45 | * *subscriberCount* - the number of subscribers a channel has (only available when querying from the desired channel) 46 | 47 | #### Example Usage 48 | 49 | > $(twitch night "{{displayName}} has {{followers}} followers") 50 | 51 | would result in 52 | 53 | > Night has 14,359 followers 54 | 55 | ## Examples 56 | 57 | #### Adding a command to show chatters your channel's uptime 58 | 59 | > !commands add !uptime Stream uptime: $(twitch $(channel) "{{uptimeLength}}") 60 | 61 | #### Adding a command to show chatters your channel's stats 62 | 63 | > !commands add !stats Channel stats: $(twitch $(channel) "{{viewers}} viewers, {{views}} views, {{followers}} followers") 64 | -------------------------------------------------------------------------------- /variables/urlfetch.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: UrlFetch 3 | */ 4 | 5 | The urlfetch (formerly customapi) variable calls a remote url to retrieve and display a response. It's useful for building more complex commands that Nightbot does not support. 6 | 7 | ## Usage 8 | 9 | > $(urlfetch `url`) 10 | 11 | `url` is a URL that returns a body in *plain text* with less than 400 characters in its response 12 | 13 | ### Examples 14 | 15 | Check out the community made Custom APIs on our forum: https://community.nightdev.com/c/nightbot/custom-apis 16 | 17 | ## Advanced Usage 18 | 19 | Nightbot sends request headers that contain pertinent information of the user calling the command, the channel the command was called, and a response URL to POST a response. 20 | 21 | ### Headers 22 | 23 | `Nightbot-Response-Url` - A response link where responses can be sent with a POST request without prior authorization. See [/channel/send](https://api-docs.nightbot.tv/#send-channel-message) in the API docs. 24 | 25 | `Nightbot-User` - User data of the user who used the command that triggered the urlfetch. **Note:** This header is **not** sent when the urlfetch is called from a timer. 26 | 27 | `Nightbot-Channel` - Channel data of the channel where the command was used. 28 | 29 | #### Example Headers 30 | 31 | > Nightbot-Response-Url: https://api.nightbot.tv/1/channel/send/TVRRM05UazRNVGsyT1RnNE1TOWthWE5... 32 | 33 | > Nightbot-User: name=night&displayName=night&provider=twitch&providerId=11785491&userLevel=owner 34 | 35 | > Nightbot-Channel: name=night&displayName=Night&provider=twitch&providerId=11785491 36 | 37 | ### JSON 38 | 39 | This variant of urlfetch will allow the api to be greater than 400 characters, however the response must be type JSON. This is most useful when paired with [eval](https://docs.nightbot.tv/variables/eval) to get more dynamic results. 40 | 41 | ### Usage 42 | 43 | > $(urlfetch json `url`) 44 | 45 | `url` is a URL that returns a body of JSON 46 | 47 | ### Example Usage 48 | 49 | #### Get Wikipedia Article from Query 50 | 51 | > !commands add !wiki Wikipedia Article: $(eval const api = $(urlfetch json https://en.wikipedia.org/w/api.php?format=json&action=opensearch&search=$(querystring)); api.error || !api[1][0] ? 'Please add a query to the search' : `${api[1][0]} - ${api[3][0]}`) 52 | -------------------------------------------------------------------------------- /variables/user.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: User 3 | */ 4 | 5 | The user variable prints the name of the user calling the command. 6 | 7 | ## Usage 8 | 9 | > $(user) 10 | 11 | #### Example Usage 12 | 13 | > $(user) 14 | 15 | would result in 16 | 17 | > nightdev 18 | 19 | if the current executer of the command was nightdev 20 | 21 | ## Examples 22 | 23 | #### Adding a command to make Nightbot hug the command caller 24 | 25 | > !commands add !hugme /me hugs $(user) -------------------------------------------------------------------------------- /variables/userid.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: UserID 3 | */ 4 | 5 | UserID can be used to show the particular user's ID when used within that particular service. 6 | 7 | ## Usage 8 | 9 | > $(userid) -------------------------------------------------------------------------------- /variables/userlevel.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: UserLevel 3 | */ 4 | 5 | The userlevel variable prints the userlevel of the user calling the command. It's useful when used within a UrlFetch variable. 6 | 7 | ## Usage 8 | 9 | > $(userlevel) 10 | 11 | #### Example Usage 12 | 13 | > $(userlevel) 14 | 15 | would result in 16 | 17 | > owner 18 | 19 | if the current chat was nightdev's and nightdev called the command 20 | 21 | #### UserLevel Values 22 | 23 | * **owner** - Channel Owner 24 | * **moderator** - Channel Moderator 25 | * **twitch_vip** - Twitch VIP (only for Twitch accounts) 26 | * **regular** - Nightbot Regular (users in the [regulars](https://docs.nightbot.tv/control-panel/regulars) list) 27 | * **subscriber** - Paid Channel Subscriber 28 | * **everyone** - Normal User *(default)* 29 | -------------------------------------------------------------------------------- /variables/weather.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: Weather 3 | */ 4 | 5 | You can use the weather variable to create commands that display weather information for a specific location. 6 | 7 | ## Usage 8 | 9 | > $(weather `location`) 10 | 11 | `location` is the location being looked up 12 | 13 | #### Example Usage 14 | 15 | > $(weather kappa) 16 | 17 | would result in 18 | 19 | > Weather for Kappa, IL: Conditions are Overcast with a temperature of 37 F (3 C). The wind is blowing From the South at 15 MPH and the current humidity is 100%. 20 | 21 | ## Examples 22 | 23 | #### Adding a command to show chatters your local weather 24 | 25 | > !commands add !weather $(weather `location`) 26 | 27 | #### Adding a command to allow users in chat to lookup their own weather 28 | 29 | > !commands add !weatherlookup $(weather $(query)) -------------------------------------------------------------------------------- /what-is-nightbot.md: -------------------------------------------------------------------------------- 1 | /* 2 | Title: What is Nightbot? 3 | Sort: 1 4 | */ 5 | 6 | Nightbot is a chat bot for Twitch, YouTube, Trovo, Noice, and SOOP that allows you to automate your live stream's chat with moderation and new features, allowing you to spend more time entertaining your viewers. 7 | 8 | Learn more at [nightbot.tv](https://nightbot.tv)! 9 | --------------------------------------------------------------------------------