Skip to content

A Node.js Discord bot, focused on gaming and entertainment, with 124 commands.

Notifications You must be signed in to change notification settings

wasaab/scrub-daddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

scrub-daddy

Codacy Badge

A Node.js Discord bot, focused on gaming and entertainment, with 124 commands.

Most of the features were requested by users via the feature command.

Key Features

  • Playtime tracking
  • Player count heatmap and trends
  • Track players of games and invite all or a subset
  • List players by game name or see a list of those who play the same games as you
  • Simulated stock market using real world stocks
  • Soundbites
  • Server and bot administration
  • Discord integrated issue and feature submission system with task priority determined by majority vote
  • Game stat tracking
  • TV and movie user rating system integrated with IMDB and RT and viewable in Discord or a Bootstrap table in a website
  • Games and gambling
  • Mention custom user groups or power users of a given channel
  • fuzzy search for all commands and names of things such as games and movie titles
  • The bot's playing status will show the game and player count of whichever game the majority of online users are playing.
  • Channels in the Dynamic Voice category will change their name to whichever game the majority of connected users are playing.
  • While you are connected to a voice channel and playing a game, the game's name will be abbreviated and added to the end of your nickname.

Commands

Time Played

  • .time <Game Name> <@user> - user's playtime for the specified Game Name.
  • .time <Game Name> - cumulative playtime for the specified Game Name.
  • .time <@user> - user's playtime for all games.
  • .time - cumulative playtime for all games.
  • .opt-in - to opt into playtime tracking.
  • .heatmap - heatmap of player count for all games.

Gaming

  • .playing - player count of games currently being played.
  • .who-plays - to get list of players and last time played for games you play.
  • .who-plays <Game Name> - to get list of players and last time played for Game Name.
  • .lets-play - to ask Scrubs who have recently played the game you are playing if they want to play.
  • .lets-play <Game Name|Game Emoji> - to ask Scrubs who have recently played Game Name if they want to play.
  • .lets-play -all <Game Name|Game Emoji> - .lets-play including Super Ν‘Scrubs and inactive players.
  • .1-more - to request 1 more player for the game you are playing via mentions.
  • .split-group - to generate a random group splitting for users in your voice channel.
  • .round-robin <groupName> - to get the next user in the group in round robin fashion.
  • .trends <Game Name | Game, Game2, etc> - to see player count trends for the provided game(s).
  • .total-trends - To see total player count trends across all games.
  • .fortnite-stats <fortniteUserName|@user> <gameMode> <stat> - to lookup fortnite stats for the provided player.
  • .fortnite-leaderboard <gameMode> <stat> - to show the leaderboard for the provided game mode + stat.
  • .set-fortnite-name <fortniteUserName> - to link your Fortnite account to Scrub Daddy for stat lookup.

Stocks, Gambling, and Prizes

  • .enlist - enlists the discharged Scrubbing Bubbles to your army.
  • .discharge <numBubbles> - honorably discharges numBubbles Scrubbing Bubble from your army.
  • .give <numBubbles> <@user> - transfers numBubbles from your army to user's army.
  • .reserve - to get Scrubbing Bubble reinforcements from your reserve army.
  • .clean <numBubbles> - send numBubbles to clean the toilet.
  • .race <numBubbles> - to start a race that costs numBubbles to enter
  • .race - to join a race
  • .army - retrieves the size of your army.
  • .army <@user> - retrieves the size of the user's army.
  • .worth - retrieves your net worth (army + stock portfolio).
  • .worth <@user> - retrieves the user's net worth (army + stock portfolio).
  • .ranks - outputs the army size of every user.
  • .stats - outputs your clean stats.
  • .stats <@user> - outputs the user's clean stats.
  • .invest <stock> <shares> - to invest in shares of a stock. Cost is 1-1 with real world price.
  • .invest-scrubbles <stock> <numBubbles> - to invest the provided # of Scrubbing Bubbles in a stock. Cost is 1-1 with real world price.
  • .sell-shares <stock> <shares> - to sell shares in a stock
  • .stocks - to see how your stocks are doing today
  • .portfolio - to see how your stocks have done over time
  • .who-said <channel-name> <minMsgLength> <minMsgReactions> <sampleSize> - Starts a quote guessing game using 5 random quotes pulled from sampleSize messages, matching the provided criteria.
  • .sunken-sailor - to start a game of Sunken Sailor with the users in your current voice channel.
  • .add-emoji <tier> <name> + ATTACH PNG IN SAME MESSAGE - πŸ† to add the emoji to the server with the provided name.
  • .add-emoji <tier> + ATTACH PNG IN SAME MESSAGE - πŸ† to add the emoji to the server using the image's filename.
  • .magic-word <tier> <word> - πŸ† to set a magic word that when typed will ban that user from the channel cmd was called from.
  • .rename-hank <tier> - πŸ† to rename hank to hang
  • .rename-channel <tier> <#channel> <New Name> - πŸ† to rename a channel
  • .rename-role <tier> <@role> <New Name> - πŸ† to rename a role
  • .rename-user <tier> <@user> <New Name> - πŸ† to rename a user
  • .scrub-box <tier> - to open a Scrub Box. Tier cost = tier * 200. Better and longer lasting prizes as tier increases.
  • .scrub-box <tier> <numBoxes> - to open the provided # of Scrub Boxes.
  • .inventory - to see your scrub box prize inventory.
  • .prizes - to see the prize tiers table
  • .start-lotto <MM/DD> <HH> - πŸ† to start a Beyond lotto that will end at the specified time (HH is 24-hour format in EST)
  • .stop-lotto - πŸ† to stop the current Beyond Lotto without choosing a winner.
  • .billionaires-club - πŸ† to join The Billionaire's Club.

Voting

  • Please Note - You must be in a voice channel with at least 3 members to participate in a kick/ban vote.
  • .votekick <@user> - to remove user from channel.
  • .voteban <@user> - for a more permanent solution.
  • .vote <thing to vote for> - to do a custom vote.
  • .voteinfo - for totals of all custom votes.
  • .voteinfo <@user> - for total votes to kick/ban that user.

Bot Issues, Feature Requests, and Help

  • .tips - to show all tips.
  • .tips <keyword> - to show all tips with a title that includes the provided keyword.
  • .issue <issue-title> <msg detailing issue> - to submit bot issues.
  • .feature <feature-title> <msg detailing feature> - to submit bot feature requests.
  • .implement <task-title> - to vote for the next task to complete. task-title is the channel title of the issue or feature.
  • .help or .h - to get help for all commands.
  • .help <command> - to get help for a specific command

Roles & User Settings

  • .join-review-team - to be added to the review team.
  • .leave-review-team - to be removed from the review team.
  • .color <colorName> - to set your role/response color preference.
  • .rainbow-role <tier> - πŸ† to add a role with changing color for a limited time
  • .shuffle-scrubs - to randomize the first letter of every Srub's name.
  • .shuffle-scrubs <letter> - to set the first letter of every Srub's name.
  • .set-birthday <MM/DD> - to set your birthday and receive cake.
  • .set-stream <url> - to set the url for either your stream or the stream you are watching.
  • .toggle-streaming - to toggle your streaming state on/off, which will update your nickname.
  • .alias <alias> <command to call> - creates an alias for the provided command call. e.g. .alias ow who-plays Overwatch ... will allow you to call .ow
  • .unalias <alias> - removes the alias with the provided name.

Soundbites

  • .sb - to get the list of available soundbites.
  • .sb <name> - to play the sound byte of the given name in your voice channel.
  • .add-sb + ATTACHMENT IN SAME MESSAGE - to add a sound byte.
  • .fav-sb - to get the list of your most frequently used soundbites.
  • .volume <1-10> - to set the volume for the provided soundbite.

Utilities

  • .temp - Creates a temporary text channel
  • .temp <text|voice> - Creates a temp text/voice channel.
  • .temp <text|voice> <channel-title> - Creates a voice/text channel with the provided title.
  • .leave-temp - to leave the temp channel the command is called in.
  • .remind-me <#> <minutes|hours|days|etc> <message> - to be reminded of something at the specified time.
  • .lotto - to join the currently running Beyond lotto or get the time remaining.
  • .quote - to quote and reply or save the quote, depending on which reaction you use (:quoteReply: or :quoteSave:).
  • .quote <@user> - to quote and reply or save the quote from @user, depending on which reaction you use (:quoteReply: or :quoteSave:).
  • .quotes - to retrieve the list of quotes from everyone on the server.
  • .quotes <@user> - to retrieve the list of quotes from the specified user.
  • .create-list <name of list> - to create a named list that users can add entries to.
  • .list - to view all of the user created lists.
  • .list <list-name> <your new entry> - to add a new entry to a user created list.
  • .create-group <groupName> <@user1> <@user2> - To create a mentionable group of users. You can mention as many users as you want.
  • .create-group <groupName> <title of game> - To create a mentionable group of users who play the specified game.
  • .@<groupName> <message to send> - To mention all members of a custom group in a message.
  • .@<gameName> <message to send> - To mention all users who play gameName in a message.
  • .@power <message to send> - If not called from #bot-spam or #scrubs will mention the channel's power users in a message.
  • .subscribe-catfacts - Subscribe to have the latest catfacts DMed hourly!
  • .catfacts - to get a cat fact.
  • .channels-left - to see the temp channels you have left.
  • .rejoin-temp <channel-name> - to rejoin a temp channel.
  • .ignore-posts - after adding :trashcan: reaction to posts, to stop them from appearing in #car-parts.
  • .delete - call this after adding both :trashcan: and :black_circle: reactions to first and last messages to delete. All messages between the two you reacted to will be deleted, including those two. This will only work if you are in a temp channel you created.

TV and Movie Ratings

  • .rate <tv|movie> <1-4> <title of content> - to rate a tv or movie show 1-4 stars
  • .rating-info <title of content> - to get rating info for a title
  • .delete-rating <tv|movie> <title of content> - to delete your rating of a title
  • .refresh-ratings - to update the IMDB and RT ratings

Admin Commands

  • backup - backs up all json files within the data folder to ../jsonBackups.
  • restore <backupFileName> - restores json files to the specified backup.
  • list-backups - lists the available backups.
  • restart <up|hard> - restarts and updates the bot if specified.
  • export - writes all local data to their appropriate json files immediately.
  • log - toggles server output redirection to discord channel #server-log.
  • revive - revives a fallen Scrubbing Bubble.
  • update-readme - updates the readme to include new commands.
  • add-player <@user> <game name> - adds a player to gamesPlayed.
  • remove-player <@user> <game name> - removes a player from gamesPlayed.
  • cars - gets parts for sale by crawling car forum and creating a collage of all images in post.
  • admin-help - lists admin command usage.
  • missing-help - lists commands missing help.
  • review-messages - initiates message review process for quarantined users.

Examples

Player Count Heatmap and Trends

Player count heatmap Peak player count trend Single game player count trend Multi-game player count trend

Movie and TV Ratings Table

Ratings table

Stocks

Stock portfolio Daily stock changes

Users Who Play the Same Games and Playtime

Who Plays

Cumulative Hours Played

Games

Race