2020-05-31 18:38:37 -04:00
Fix
2020-05-19 20:58:13 -04:00
2020-05-31 10:22:00 -04:00
2020-05-31 18:38:37 -04:00
Fix
2020-05-21 23:55:41 -04:00
2020-05-30 18:48:00 -04:00
2020-05-11 10:11:40 -04:00
2017-09-12 22:58:38 +00:00
2020-05-25 11:43:25 -04:00
2020-05-31 18:38:37 -04:00
2020-05-31 18:38:37 -04:00
2020-05-23 23:20:16 -04:00

Xiao

Xiao

Build Status Donate on PayPal Discord

Xiao is a Discord bot coded in JavaScript with discord.js using the Commando command framework. With over 400 commands, she is one of the most feature-rich bots out there. Formerly "XiaoBot".

Table of Contents

Invite

Permissions

Xiao needs several permissions to be able to do what she does. Below is every permission Xiao asks for, and what commands you lose if you don't grant that permission.

  • Create Instant Invite is needed to allow owners to join your server to test if needed.
    • You lose no commands by turning this off, but you might hinder support.
  • View Audit Log is not needed yet, but is something Xiao might utilize in the future.
  • Change Nickname is not needed, but is included as a basic permission.
  • View Channels is required for every single command to work.
  • Send Messages is required for every single command to work.
  • Manage Messages allows Xiao to use the prune command.
  • Embed Links is required to allow commands that send embeds to work. Too many commands to list use it.
  • Attach Files is required to allow commands that send files to work. Too many commands to list use it.
  • Read Message History allows Xiao to use the first-message and prune commands.
  • Use External Emojis allows Xiao to use custom emoji in certain commands.
    • While the commands benefit from it, it is not required for the commands to work.
  • Add Reactions allows Xiao to use commands that add reactions to messages in certain commands.
    • While the commands benefit from it, it is not requried for the commands to work.
  • Connect allows Xiao to connect to voice channels. This is needed for commands in the "Voice-Based" group.
  • Speak allows Xiao to speak in voice channels. This is needed for commands in the "Voice-Based" group.
  • Use Voice Activity is not needed, but is included as an extra precaution for voice commands.

Fun Information

  • 400+ Commands
  • 23,000+ lines of JavaScript
  • 61,000+ lines of JSON data
  • 3 years of development
  • 4,000+ commits

Installing

Before You Begin

  1. Make sure you have installed Node.js (you will need at least v12.0.0) and Git.
  2. Clone this repository with git clone https://github.com/dragonfire535/xiao.git.
  3. Run cd xiao to move into the folder that you just created.
  4. Create a file named .env and fill it out as shown in .env.example.

Windows

  1. Open an ADMIN POWERSHELL window and run npm i -g --production windows-build-tools.
  2. Follow these instructions to install the dependencies for node-canvas.
  3. Follow these instructions to install ffmpeg.
  4. Run npm i --production in the folder you cloned the bot.
  5. Run npm i -g pm2 to install PM2.
  6. Run pm2 start Xiao.js --name xiao to run the bot.

Mac

  1. Use a real (cheaper!) OS to host your bot.
  2. ???
  3. Profit.

Ubuntu and other Debian-based systems

  1. Run apt update.
  2. Run apt upgrade to install the latest dependencies of your distro.
  3. Run apt install python to install python.
  4. Run apt install ffmpeg to install ffmpeg.
  5. Follow these instructions to install the dependencies for node-canvas.
  6. Run npm i --production in the folder you cloned the bot.
  7. Run npm i -g pm2 to install PM2.
  8. Run pm2 start Xiao.js --name xiao to run the bot.

Filling Out Your .env File

Getting all the API keys for your .env file can be a pain on a bot this big, I know. That's why I've compiled a list here of where to go to get every single API key. Note, not all of these are free. The difficulty in getting all of these keys is why I recommend inviting Xiao rather than self-hosting her.

  • XIAO_TOKEN can be obtained at the Discord Developer Portal.
  • OWNERS is a comma-seperated list of Discord User IDs.
  • XIAO_PREFIX is the prefix you want the bot to have. Like x;.
  • INVITE is an invite link to a Discord server. The whole thing, not just the code.
  • XIAO_WEBHOOK_ID is the ID of the webhook you want the webhook command to use.
  • XIAO_WEBHOOK_TOKEN is the token of the webhook you want the webhook command to use.
  • POSTER_ID is the ID of the webhook used for Xiao's meme poster. Not required.
  • POSTER_TOKEN is the token of the webhook used for Xiao's meme poster. Not required.
  • POSTER_TIME is the interval to wait between when posting memes using Xiao's meme poster. Not required and defaults to one hour.
  • REPORT_CHANNEL_ID is the ID of the Discord channel you want to send messages from report to. Not required, and if not provided the report command simply DMs the owner.

Emoji IDs

All the emoji IDs are the IDs of Discord custom emoji. You need to make these yourself, but none are required, and any left out will simply switch to basic text.

  • GOLD_FISH and SILVER_FISH are used in neko-atsume-password.
  • MOCKING is used in mocking.
  • PORTAL is used in portal-send.
  • FLANKER, FRONT_LINE, SUPPORT, and DAMAGE are used in paladins.

API Keys, IDs, and Secrets

Here's where things get LONG. If you're greeted with a log-in page when clicking any of these links, you'll need an account for that API. All are free unless otherwise stated.

Imgur Album IDs

This section is a bit different, as all of these keys are the same process. First, sign up for Imgur. Then, just go to your profile and make albums that contain the images for the command you want to use. Use the ID of that album (look at the URL) as the variable. Yes, you need to fill these albums yourself. This is why you shouldn't self-host Xiao.

  • Rando Cardrissian is a Cards Against Humanity bot, whose features were originally built into Xiao.

Options

Options in Xiao are configured using channel topics. Place the option in the appropriate channel's topic to use it.

  • <xiao:disable-leave> Disables leave messages (Place in the channel you recieve welcome messages in).
  • <xiao:phone> Allows a channel to recieve phone calls from the phone command.
  • <xiao:phone:no-voicemail> Prevents this channel from recieving voicemails for missed calls.
  • <xiao:phone-book:hide> Hides a channel from the phone-book command.
  • <xiao:portal> Allows a channel to recieve portal messages from the portal-send command.

Commands

Total: 451

Utility:

  • eval: Executes JavaScript code. (Owner-Only)
  • changelog: Responds with the bot's latest 10 commits.
  • cloc: Responds with the bot's code line count.
  • command-leaderboard-export: Exports a command leaderboard JSON file. (Owner-Only)
  • command-leaderboard-import: Imports a command leaderboard JSON file. (Owner-Only)
  • command-leaderboard: Responds with the bot's most used commands.
  • credit: Responds with a command's credits list.
  • donate: Responds with the bot's donation links.
  • help: Displays a list of available commands, or detailed information for a specific command.
  • info: Responds with detailed bot information.
  • invite: Responds with the bot's invite links.
  • ip: Responds with the IP address the bot's server is running on. (Owner-Only)
  • options: Responds with a list of server options.
  • ping: Checks the bot's ping to the Discord server.
  • report: Reports something to the bot owner(s).
  • shutdown: Shuts down the bot. (Owner-Only)

Discord Information:

  • avatar: Responds with a user's avatar.
  • channel: Responds with detailed information on a channel.
  • emoji-image: Responds with an emoji's full-scale image.
  • emoji-list: Responds with a list of the server's custom emoji.
  • emoji: Responds with detailed information on an emoji.
  • first-message: Responds with the first message ever sent to a channel.
  • id: Responds with a user's ID.
  • message-source: Responds with a codeblock containing a message's contents.
  • message: Responds with detailed information on a message.
  • role: Responds with detailed information on a role.
  • server: Responds with detailed information on the server.
  • user: Responds with detailed information on a user.

Random Response:

  • 8-ball: Asks your question to the Magic 8 Ball.
  • advice: Responds with a random bit of advice.
  • axis-cult: Responds with a teaching of the Axis Cult.
  • cat-fact: Responds with a random cat fact.
  • charlie-charlie: Asks your question to Charlie.
  • choose: Chooses between options you provide.
  • chuck-norris: Responds with a random Chuck Norris joke.
  • coin: Flips a coin.
  • compliment: Compliments a user.
  • dog-fact: Responds with a random dog fact.
  • draw-cards: Draws a random hand of playing cards.
  • fact-core: Responds with a random Fact Core quote.
  • fact: Responds with a random fact.
  • fml: Responds with a FML quote. (NSFW)
  • fortune: Responds with a random fortune.
  • github-zen: Responds with a random GitHub design philosophy.
  • joke: Responds with a random joke.
  • kiss-marry-kill: Determines who to kiss, who to marry, and who to kill.
  • light-novel-title: Responds with a randomly generated Light Novel title.
  • lorem-ipsum: Generates a randomized Lorem Ipsum placeholder text.
  • magic-conch: Asks your question to the Magic Conch.
  • name: Responds with a random name, with the gender of your choice.
  • number-fact: Responds with a random fact about a specific number.
  • offspring: Determines if your new child will be a boy or a girl.
  • opinion: Determines the opinion on something.
  • oracle-turret: Responds with a random Oracle Turret quote.
  • pun: Responds with a random pun.
  • quantum-coin: Flips a coin that lands on some form of nothing.
  • quote: Responds with a random quote.
  • random-user: Randomly chooses a member of the server.
  • rank: Ranks the options you provide.
  • rate: Rates something.
  • roast: Roasts a user.
  • roll: Rolls a dice with a minimum/maximum value of your choice.
  • security-key: Responds with a random security key.
  • shower-thought: Responds with a random shower thought, directly from r/Showerthoughts.
  • smw-level: Responds with a random Super Mario World level name.
  • subreddit: Responds with a random post from a subreddit.
  • suggest-command: Suggests a random command for you to try.
  • superpower: Responds with a random superpower.
  • the-onion: Responds with a random "The Onion" article.
  • this-for-that: So, basically, it's like a bot command for this dumb meme.
  • waifu: Responds with a randomly generated waifu and backstory.
  • will-you-press-the-button: Responds with a random "Will You Press The Button?" dilemma.
  • word: Responds with a random word.
  • would-you-rather: Responds with a random "Would you rather ...?" question.
  • xiao-fact: Responds with a random fact about Xiao.

Random Image:

  • bird: Responds with a random image of a bird.
  • cat: Responds with a random cat image.
  • dog: Responds with a random dog image.
  • duck: Responds with a random duck image.
  • fidget: Responds with a random image of Fidget.
  • fox: Responds with a random fox image.
  • hentai: Responds with a random hentai image. (NSFW)
  • karen: Responds with a random image of Karen.
  • lando: Responds with a random image of Lando Calrissian.
  • light-novel-cover: Responds with a randomly generated Light Novel cover. (NSFW)
  • lorem-picsum: Responds with a random image of a certain size.
  • meme: Responds with a random meme.
  • porn: Responds with a random porn image. (NSFW)
  • potato: Responds with a random potato image.
  • shiba: Responds with a random image of a Shiba Inu.
  • xiao: Responds with a random image of Xiao Pai.

Seeded Randomizers:

  • butt: Determines a user's butt quality.
  • coolness: Determines a user's coolness.
  • dick: Determines your dick size. (NSFW)
  • friendship: Determines how good friends two users are.
  • guess-looks: Guesses what a user looks like.
  • iq: Determines a user's IQ.
  • psycho-pass: Determines your Crime Coefficient.
  • ship: Ships two users together.
  • smash-or-pass: Determines if a user is worthy of a smash or a pass.

Single Response:

  • dark-light: Determines whether you use dark or light theme.
  • eat-pant: Eat pant.
  • eggs-get-laid: Sends the ultimate roast.
  • fly: Sends a fake fly that looks surprisngly real.
  • give-flower: Gives Xiao Pai a flower.
  • hi: Hello.
  • idiot: Responds with the Wikipedia page of an idiot.
  • isnt-joke: Isn't joke...
  • its-joke: It's joke!
  • just-do-it: Sends a link to the "Just Do It!" motivational speech.
  • lenny: Responds with the lenny face.
  • spam: Responds with a picture of Spam.
  • tableflip: Flips a table... With animation!
  • wynaut: Why not? Wynaut?
  • yoff: Posts a picture that truly defines modern art.

Automatic Response:

  • can-you-not: Can YOU not?
  • kazuma-kazuma: Hai, Kazuma desu.
  • no-u: no u
  • suicide-hotline: Responds with the phone number for the Suicide Hotline.
  • unflip: Unflips a flipped table.

Events:

  • anime-airing: Responds with a list of the anime that air today.
  • apod: Responds with today's Astronomy Picture of the Day.
  • calendar: Responds with today's holidays.
  • days-until: Responds with how many days there are until a certain date.
  • doomsday-clock: Responds with the current time of the Doomsday Clock.
  • friday-the-13th: Determines if today is Friday the 13th.
  • google-doodle: Responds with a Google Doodle, either the latest one or a random one from the past.
  • horoscope: Responds with today's horoscope for a specific Zodiac sign.
  • humble-bundle: Responds with the current Humble Bundle.
  • is-tuesday: Determines if today is Tuesday.
  • iss: Responds with where the Internation Space Station currently is.
  • neko-atsume-password: Responds with today's Neko Atsume password.
  • people-in-space: Responds with the people currently in space.
  • time: Responds with the current time in a particular location.
  • today-in-history: Responds with an event that occurred today in history.
  • anime: Searches AniList for your query, getting anime results.
  • book: Searches Google Books for a book.
  • bulbapedia: Searches Bulbapedia for your query.
  • character: Searches AniList for your query, getting character results.
  • company: Responds with the name and logo of a company.
  • country: Responds with information on a country.
  • danbooru: Responds with an image from Danbooru, with optional query. (NSFW)
  • define: Defines a word.
  • derpibooru: Responds with an image from Derpibooru.
  • deviantart: Responds with an image from a DeviantArt section, with optional query.
  • flickr: Searches Flickr for your query... Maybe. (NSFW)
  • frinkiac: Input a line from the Simpsons to get the episode/season.
  • giphy: Searches Giphy for your query.
  • github: Responds with information on a GitHub repository.
  • google-autofill: Responds with a list of the Google Autofill results for a particular query.
  • google: Searches Google for your query.
  • gravatar: Responds with the Gravatar for an email.
  • http-cat: Responds with a cat for an HTTP status code.
  • http-dog: Responds with a dog for an HTTP status code.
  • http-duck: Responds with a duck for an HTTP status code.
  • imgur: Searches Imgur for your query.
  • itunes: Searches iTunes for your query.
  • jisho: Defines a word, but with Japanese.
  • kickstarter: Searches Kickstarter for your query.
  • know-your-meme: Searches Know Your Meme for your query.
  • league-of-legends: Responds with information on a League of Legends champion.
  • lyrics: Responds with lyrics to a song.
  • mal-badges: Responds with a MyAnimeList user's mal-badges badge.
  • manga: Searches AniList for your query, getting manga results.
  • map: Responds with a map of a specific location.
  • mayo-clinic: Searches Mayo Clinic for your query.
  • mdn: Searches MDN for your query.
  • movie: Searches TMDB for your query, getting movie results.
  • nasa: Searches NASA's image archive for your query.
  • neopet: Responds with the image of a specific Neopet.
  • neopets-item: Responds with information on a specific Neopets item.
  • npm: Responds with information on an NPM package.
  • osu: Responds with information on an osu! user.
  • paladins: Responds with information on a Paladins player.
  • periodic-table: Finds an element on the periodic table.
  • pokedex: Searches the Pokédex for a Pokémon.
  • recipe: Searches for recipes based on your query.
  • reddit: Responds with information on a Reddit user.
  • right-stuf: Searches Right Stuf Anime for your query.
  • rotten-tomatoes: Searches Rotten Tomatoes for your query.
  • rule: Responds with a rule of the internet.
  • safebooru: Responds with an image from Safebooru, with optional query.
  • stack-overflow: Searches Stack Overflow for your query.
  • steam: Searches Steam for your query.
  • stocks: Responds with the current stocks for a company.
  • tenor: Searches Tenor for your query.
  • tumblr: Responds with information on a Tumblr blog.
  • tv-show: Searches TMDB for your query, getting TV show results.
  • twitter: Responds with information on a Twitter user.
  • urban: Defines a word, but with Urban Dictionary. (NSFW)
  • usps-tracking: Gets tracking information for a package shipped via USPS.
  • vocadb: Searches VocaDB for your query.
  • wattpad: Searches Wattpad for your query.
  • weather: Responds with weather information for a specific location.
  • wikia: Searches a specific Wikia wiki for your query.
  • wikihow: Searches Wikihow for your query.
  • wikipedia: Searches Wikipedia for your query.
  • xkcd: Responds with an XKCD comic, either today's, a random one, or a specific one.
  • youtube: Searches YouTube for your query.
  • yu-gi-oh: Responds with info on a Yu-Gi-Oh! card.

Analyzers:

  • age: Responds with how old someone born in a certain year is.
  • birthstone: Responds with the Birthstone for a month.
  • character-count: Responds with the character count of text.
  • chinese-zodiac: Responds with the Chinese Zodiac Sign for the given year.
  • face: Determines the race, gender, and age of a face.
  • gender: Determines the gender of a name.
  • has-transparency: Determines if an image has transparency in it.
  • read-qr-code: Reads a QR Code.
  • scrabble-score: Responds with the scrabble score of a word.
  • severe-toxicity: Determines the toxicity of text, but less sensitive to milder language.
  • toxicity: Determines the toxicity of text.
  • what-anime: Determines what anime a screenshot is from.
  • zodiac-sign: Responds with the Zodiac Sign for the given month/day.

Single-Player Games:

  • akinator: Think about a real or fictional character, I will try to guess who it is.
  • anagramica: Try to find all the anagrams for a given set of letters.
  • blackjack: Play a game of blackjack.
  • box-choosing: Do you believe that there are choices in life? Taken from Higurashi Chapter 4.
  • bubble-wrap: Pop some bubble wrap.
  • captcha: Try to guess what the captcha says.
  • chance: Attempt to win with a 1 in 1000 (or your choice) chance of winning.
  • doors: Open the right door, and you win the money! Make the wrong choice, and you get the fire!
  • fishy: Go fishing.
  • google-feud: Attempt to determine the top suggestions for a Google search.
  • hangman: Prevent a man from being hanged by guessing a word as fast as you can.
  • horse-race: Bet on the fastest horse in a 6-horse race.
  • hunger-games: Simulate a Hunger Games match with up to 24 tributes.
  • jeopardy: Answer a Jeopardy question.
  • lottery: Attempt to win the lottery with 6 numbers.
  • mad-libs: Choose words that fill in the blanks to create a crazy story!
  • math-quiz: See how fast you can answer a math problem in a given time limit.
  • memory: Test your memory.
  • quiz: Answer a quiz question.
  • reaction-time: Test your reaction time.
  • rock-paper-scissors: Play Rock-Paper-Scissors.
  • roulette: Play a game of roulette.
  • slots: Play a game of slots.
  • sorting-hat: Take a quiz to determine your Hogwarts house.
  • typing-test: See how fast you can type a sentence in a given time limit.
  • waldo: Try to find Waldo with spoiler tags!
  • whos-that-pokemon: Guess who that Pokémon is.

Multi-Player Games:

  • balloon-pop: Don't let yourself be the last one to pump the balloon before it pops!
  • battle: Engage in a turn-based battle against another user or the AI.
  • connect-four: Play a game of Connect Four with another user.
  • dots-and-boxes: Play a game of Dots and Boxes with another user.
  • emoji-emoji-revolution: Can you type arrow emoji faster than anyone else has ever typed them before?
  • guesspionage: Tests your knowledge of humans as you guess how people responded to poll questions.
  • gunfight: Engage in a western gunfight against another user. High noon.
  • lie-swatter: Players are given a fact and must quickly decide if it's True or a Lie.
  • pick-a-number: Two players pick a number between 1 and 10. Whoever's closer wins.
  • poker: Play poker with up to 5 other users.
  • quiz-duel: Answer a series of quiz questions against an opponent.
  • russian-roulette: Who will pull the trigger and die first?
  • tic-tac-toe: Play a game of tic-tac-toe with another user.
  • word-chain: Try to come up with words that start with the last letter of your opponent's word.
  • word-spud: Hot potato, but with words.

Image Manipulation:

  • ace-attorney: Sends a text box from Ace Attorney with the quote and character of your choice.
  • achievement: Sends a Minecraft achievement with the text of your choice.
  • adorable: Creates an adorable avatar based on the text you provide.
  • apple-engraving: Engraves the text of your choice onto an Apple product.
  • approved: Draws an "approved" stamp over an image or a user's avatar.
  • axis-cult-sign-up: Sends an Axis Cult Sign-Up sheet for you. Join today!
  • brazzers: Draws an image with the Brazzers logo in the corner. (NSFW)
  • certificate: Sends a certificate of excellence with the name and reason of your choice.
  • chinese-restaurant: Sends a Chinese restaurant sign with the text of your choice.
  • circle: Draws an image or a user's avatar as a circle.
  • color: Sends an image of the color you choose.
  • contrast: Draws an image or a user's avatar but with contrast.
  • create-qr-code: Converts text to a QR Code.
  • dexter: Draws an image or a user's avatar over the screen of Dexter from Pokémon.
  • distort: Draws an image or a user's avatar but distorted.
  • fire: Draws a fiery border over an image or a user's avatar.
  • fish-eye: Draws an image or a user's avatar but with a fish-eye lens.
  • frame: Draws a frame around an image or a user's avatar.
  • ghost: Draws an image or a user's avatar but with a ghost-like transparency.
  • glass-shatter: Draws an image or a user's avatar with a glass shatter in front of it.
  • glitch: Draws an image or a user's avatar but glitched.
  • greyscale: Draws an image or a user's avatar in greyscale.
  • highway-sign: Sends a highway sign sign with the text of your choice.
  • hollywood-star: Sends a Hollywood Walk of Fame star with the name of your choice.
  • ifunny: Draws an image with the iFunny logo.
  • invert: Draws an image or a user's avatar but inverted.
  • jeopardy-question: Sends a Jeopardy Question with the text of your choice.
  • minecraft-skin: Sends the Minecraft skin for a user.
  • mirror: Draws an image or a user's avatar but mirrored on the X/Y axis (or both).
  • needs-more-jpeg: Draws an image or a user's avatar as a low quality JPEG.
  • newspaper: Creates a fake newspaper with the headline and body of your choice.
  • pixelize: Draws an image or a user's avatar pixelized.
  • pokemon-fusion: Fuses two Generation I Pokémon together.
  • police-tape: Draws police tape over an image or a user's avatar.
  • rainbow: Draws a rainbow over an image or a user's avatar.
  • rejected: Draws a "rejected" stamp over an image or a user's avatar.
  • robohash: Creates a robot based on the text you provide.
  • sepia: Draws an image or a user's avatar in sepia.
  • shields-io-badge: Creates a badge from shields.io.
  • silhouette: Draws a silhouette of an image or a user's avatar.
  • simp: Draws a "simp" stamp over an image or a user's avatar.
  • snapcode: Responds with the Snapcode of a Snapchat user.
  • spongebob-time-card: Sends a Spongebob Time Card with the text of your choice.
  • square: Draws an image or a user's avatar as a square.
  • squish: Draws an image or a user's avatar but squished across the X or Y axis.
  • tint: Draws an image or a user's avatar but tinted a specific color.
  • tweet: Sends a Twitter tweet with the user and text of your choice.
  • zero-dialogue: Sends a text box from Megaman Zero with the quote of your choice.

Avatar Manipulation:

  • avatar-fusion: Draws a a user's avatar over a user's avatar.
  • bob-ross: Draws a user's avatar over Bob Ross' canvas.
  • chocolate-milk: Draws a user's avatar holding chocolate milk.
  • hat: Draws a hat over a user's avatar.
  • he-lives-in-you: Draws a user's avatar over Simba from The Lion King's reflection.
  • hearts: Draws hearts around a user's avatar.
  • i-have-the-power: Draws a user's avatar over He-Man's face.
  • look-what-karen-have: Draws a user's avatar over Karen's piece of paper.
  • rip: Draws a user's avatar over a gravestone.
  • sip: Draws a user's avatar sipping tea.
  • status-button: Creates a Discord status button from c99.nl.
  • steam-card: Draws a user's avatar on a Steam Trading Card.
  • steam-now-playing-classic: Draws a user's avatar over a Steam "now playing" notification (old skin).
  • steam-now-playing: Draws a user's avatar over a Steam "now playing" notification.
  • triggered: Draws a user's avatar over the "Triggered" meme.
  • wanted: Draws a user's avatar over a wanted poster.
  • yu-gi-oh-token: Draws a user's avatar over a blank Yu-Gi-Oh! Token card.

Meme Generators:

  • 3000-years: Draws an image or a user's avatar over Pokémon's "It's been 3000 years" meme.
  • alert: Sends a Presidential Alert message with the text of your choice.
  • bart-chalkboard: Sends a "Bart Chalkboard" meme with the text of your choice.
  • be-like-bill: Sends a "Be Like Bill" meme with the name of your choice.
  • beautiful: Draws a user's avatar over Gravity Falls' "Oh, this? This is beautiful." meme.
  • catch: Catch users, revealing who is something.
  • challenger: Draws an image or a user's avatar over Smash Bros.'s "Challenger Approaching" screen.
  • chi-idea: Sends a "Daddy, I've got an idea!" Takagi-san meme with the text of your choice.
  • cursed-sponge: Sends a cursed sponge duplicated however many times you want.
  • dear-liberals: Sends a "Dear Liberals" meme with words of your choice.
  • demotivational: Draws an image or a user's avatar and the text you specify as a demotivational poster.
  • dislike: Sends an "Everyone Disliked That" meme with the image of your choice.
  • distracted-boyfriend: Draws three user's avatars over the "Distracted Boyfriend" meme.
  • drakeposting: Draws two user's avatars over the "Drakeposting" meme.
  • food-broke: Draws a user's avatar over the "Food Broke" meme.
  • genie-rules: Sends a "There are 4 rules" meme with the text of your choice.
  • girl-worth-fighting-for: Draws an image or a user's avatar as the object of Ling's affection.
  • gru-plan: Sends a Gru's Plan meme with steps of your choice.
  • illegal: Makes President Trump make your text illegal.
  • kyon-gun: Draws an image or a user's avatar behind Kyon shooting a gun.
  • like: Sends an "Everyone Liked That" meme with the image of your choice.
  • lisa-presentation: Sends a "Lisa Presentation" meme with the presentation of your choice.
  • look-at-this-photograph: Draws an image or a user's avatar over Nickelback's photograph.
  • meme-gen-classic: Sends a meme with the text and background of your choice.
  • meme-gen-modern: Sends a meme with the text and image of your choice.
  • new-password: Sends a "Weak Password/Strong Password" meme with the passwords of your choice.
  • nike-ad: Sends a "Believe in Something" Nike Ad meme with the text of your choice.
  • plankton-plan: Sends a Plankton's Plan meme with steps of your choice.
  • scroll-of-truth: Sends a "Scroll of Truth" meme with the text of your choice.
  • skyrim-skill: Sends a "Skyrim Skill" meme with the skill and image of your choice.
  • sora-selfie: Draws an image or a user's avatar behind Sora taking a selfie.
  • sos: Sends a "Esther Verkest's Help Sign" comic with the text of your choice.
  • spongebob-burn: Sends a "Spongebob Throwing Something into a Fire" meme with words of your choice.
  • thug-life: Draws "Thug Life" over an image or a user's avatar.
  • to-be-continued: Draws an image with the "To Be Continued..." arrow.
  • two-buttons: Sends a "Two Buttons" meme with the buttons of your choice.
  • ultimate-tattoo: Draws an image or a user's avatar as "The Ultimate Tattoo".
  • vietnam-flashbacks: Edits Vietnam flashbacks behind an image or a user's avatar.
  • worthless: Draws an image or a user's avatar over Gravity Falls' "This is worthless." meme.

Text Manipulation:

  • base64: Converts text to/from Base64.
  • binary: Converts text to binary.
  • braille: Converts text to braille.
  • brony-speak: Converts text to brony speak.
  • clap: Sends 👏 text 👏 like 👏 this.
  • cow-say: Makes a cow say your text.
  • cursive: Converts text to cursive.
  • dvorak: Converts text to Dvorak encoding.
  • embed: Sends text in an embed.
  • emojify: Converts text to emoji form.
  • fancy: Converts text to fancy letters.
  • hex: Converts text to hex.
  • latlmes: Creates a Latlmes fake link that redirects to a rickroll.
  • lmgtfy: Creates a LMGTFY link with the query you provide.
  • lolcat: Converts text to lolcat.
  • lowercase: Converts text to lowercase.
  • md5: Creates a hash of text with the MD5 algorithm.
  • mocking: SenDs TexT lIkE ThiS.
  • morse: Converts text to morse code.
  • nobody-name: Converts a name into the Organization XIII style.
  • owo: OwO.
  • pig-latin: Converts text to pig latin.
  • pirate: Converts text to pirate.
  • repeat: Repeat text over and over and over and over (etc).
  • reverse: Reverses text.
  • say: Make me say what you want, master.
  • sha-1: Creates a hash of text with the SHA-1 algorithm.
  • sha-256: Creates a hash of text with the SHA-256 algorithm.
  • ship-name: Creates a ship name from two names.
  • shuffle: Shuffles text.
  • snake-speak: Convertsssss text to sssssnake ssssspeak.
  • spoiler-letter: Sends text with each and every character as an individual spoiler.
  • superscript: Converts text to tiny text.
  • tebahpla: Reverses the alphabet of text.
  • temmie: Converts text to Temmie speak.
  • translate: Translates text to a specific language.
  • unspoiler: Removes all spoilers from a message.
  • uppercase: Converts text to uppercase.
  • upside-down: Flips text upside-down.
  • url-decode: Decodes URL characters to regular characters.
  • url-encode: Encodes text to URL-friendly characters.
  • webhook: Posts a message to the webhook defined in the bot owner's process.env. (Owner-Only)
  • yoda: Converts text to Yoda speak.
  • zalgo: Converts text to zalgo.

Number Manipulation:

  • currency: Converts currency from one currency to another.
  • final-grade: Determines the grade you need to make on your final to get your desired course grade.
  • grade: Determines your grade on an assignment on an 100-point scale.
  • gravity: Determines weight on another planet.
  • math: Evaluates a math expression.
  • prime: Determines if a number is a prime number.
  • roman: Converts a number to roman numerals.
  • scientific-notation: Converts a number to scientific notation.
  • tax: Determines the total cost of something plus tax.
  • units: Converts units to/from other units.

Voice-Based:

  • airhorn: Plays an airhorn sound in a voice channel.
  • dec-talk: The world's best Text-to-Speech.
  • join: Joins your voice channel.
  • leave: Leaves the current voice channel.
  • soundboard: Plays a sound in a voice channel.

Phone:

  • admin-phone: Starts an admin phone call with a server. (Owner-Only)
  • hang-up: Hangs up the current phone call.
  • phone-book: Looks up phone-enabled servers.
  • phone: Starts a phone call with a random server.

Other:

  • cleverbot: Talk to Cleverbot. (Owner-Only)
  • portal-send: Send a message to a portal channel.
  • prune: Deletes up to 99 messages from the current channel.
  • rename-all: Renames every member of the server. (Owner-Only)
  • strawpoll: Generates a Strawpoll with the options you provide.

Roleplay:

  • blush: Blushes at a user.
  • bro-hoof: Gives a user a bro hoof.
  • celebrate: Celebrates.
  • eat: Feeds a user.
  • explode: Explodes a user.
  • fist-bump: Fist-bumps a user.
  • high-five: High Fives a user.
  • hold-hands: Holds hands with a user.
  • hug: Hugs a user.
  • inhale: Inhales a user.
  • kill: Kills a user.
  • kiss: Kisses a user.
  • pat: Pats a user.
  • poke: Pokes a user.
  • punch: Punches a user.
  • slap: Slaps a user.
  • sleep: Puts a user to sleep.
  • wake-up: Wakes up a user.
  • wave: Waves at a user.
  • wink: Winks at a user.

README Generators:

  • generate-commands: Generates the commands list for Xiao's README. (Owner-Only)
  • generate-credit: Generates the credit list for Xiao's README. (Owner-Only)
  • generate-process-env: Generates a backup list of Xiao's process.env. (Owner-Only)

Other Features

Some Xiao features aren't technically commands, but are part of Xiao nonetheless.

  • Leave messages are automatically sent to any channel that recieves welcome messages. These can be turned off with an option.
  • In Xiao's home server, Xiao posts a random meme from Reddit every hour using a webhook.
  • Some commands will automatically run when a certain phrase is said in any message, regardless of if the command itself was called or not. These are:
    • Saying "can you not" or "can u not" runs can-you-not.
    • Saying "Kazuma, Kazuma!" runs kazuma-kazuma.
    • Saying "no u" runs no-u.
    • Saying "kms", "kill myself", or using a custom emote named "kms" runs suicide-hotline.
    • Saying "(╯°□°)╯︵ ┻━┻" runs unflip.
    • Saying "r/subredditnamehere" runs subreddit. Obviously, replace "subbreditnamehere" with the name of the subreddit.
    • Starting a message with "clevs" or "cleverbot" runs cleverbot using the text after either word as the text.

Licensing

The bot is licensed under the GPL 3.0 license. See the file LICENSE for more information. If you plan to use any part of this source code in your own bot, I would be grateful if you would include some form of credit somewhere.

Credit

Xiao has a lot of commands, and many of those commands use data or APIs from outside sources. This list is a list of every single site, user, and API used to make Xiao possible, and the commands they're used in. Thank you to everyone here.

Note: This does not indicate support for the source. I might like them, I might detest them.

S
Description
Xiao is a Discord bot coded in JavaScript with discord.js. With over 500 commands, she is one of the most feature-rich bots out there. Formerly XiaoBot.
Readme 411 MiB
Languages
JavaScript 99.9%