/xiao

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

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

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 500 commands, she is one of the most feature-rich bots out there. Formerly "XiaoBot".

Table of Contents

Copyright

  • ©2017-2021 dragonfire535#8081
  • Xiao Pai/Rune Factory 4: ©2012 Marvelous Inc.
  • Avatar Art: ©2018 airful

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.
    • It also allows the say command to delete your message, but the command will still work without it.
  • 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.
    • It is also required to allow Xiao to react to messages alongside "Add Reactions".
  • Mention @everyone, @here, and All Roles allows Xiao to use the where-is-everybody command.
  • 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 required for the commands to work.
    • "Read Message History" is also required to allow Xiao to react.
  • Connect allows Xiao to connect to voice channels. This is needed for commands that play audio.
  • Speak allows Xiao to speak in voice channels. This is needed for commands that play audio.
  • Use Voice Activity is not needed, but is included as an extra precaution for voice commands.

Fun Information

  • 500+ commands
  • 31,000+ lines of JavaScript
  • 63,000+ lines of JSON data
  • 3 years of development

Installing

Before You Begin

  1. Make sure you have installed Node.js (you will need at least v15.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. Install ImageMagick.
  5. Follow these instructions to install Redis. Remember to set up a password!
  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.

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 apt install liblqr-1-0-dev liblqr-1-0 to install liblqr (needed for ImageMagick).
  7. Follow these instructions to install ImageMagick.
  8. Follow these instructions to set up Redis. Remember to set up a password!
  9. Run npm i --production in the folder you cloned the bot.
  10. Run npm i -g pm2 to install PM2.
  11. 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.

Discord-related Info

  • XIAO_TOKEN can be obtained at the Discord Developer Portal.
  • OWNERS is a comma-seperated list of Discord User IDs.
  • GIRLFRIEND_USER_ID is a Discord User ID for your lover. It rigs commands like coolness and cuteness. Totally optional, loners (like me) can leave it out.
  • 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.
  • JOIN_LEAVE_CHANNEL_ID is the ID of the Discord channel to send a message to whenever a new server adds or removes the bot. Not required.

Redis Info

This is information for connecting to Redis.

  • REDIS_HOST is the host for your Redis connection. Probably 127.0.0.1.
  • REDIS_PASS is the password for your Redis connection.

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.
  • LOADING is used in commands that need to load for a long time before giving a response, such as vocodes and dec-talk.
  • MEGA_EVOLVE is used in pokedex.

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.

Related Bots

  • 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:no-random> Makes the channel only able to be called directly in the phone command, rather than be picked at random.
  • <xiao:phone:block:INSERTIDHERE> Blocks a channel or server from contacting the channel via phone.
  • <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.
  • <xiao:portal:hide-name> Hides the channel and server name from the portal-send command when your channel is picked.

Commands

Total: 576

Utility:

  • changelog: Responds with the bot's latest 10 commits.
  • cloc: Responds with the bot's code line count.
  • 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.
  • join: Joins your voice channel.
  • leave: Leaves the current voice channel.
  • options: Responds with a list of server options.
  • ping: Checks the bot's ping to the Discord server.
  • prefix: Responds with the bot's command prefix.
  • report: Reports something to the bot owner(s).
  • uses: Responds with a command's usage stats.

Utility (Owner):

  • eval: Executes JavaScript code. (Owner-Only)
  • command-leaderboard-export: Exports a command leaderboard JSON file. (Owner-Only)
  • command-leaderboard-import: Imports a command leaderboard JSON file. (Owner-Only)
  • dependency-update: Checks for dependency updates. (Owner-Only)
  • exec: Executes a command-line application. (Owner-Only)
  • 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-fun-information: Generates the "Fun Information" for Xiao's README. (Owner-Only)
  • generate-process-env: Generates a backup list of Xiao's process.env. (Owner-Only)
  • ip: Responds with the IP address the bot's server is running on. (Owner-Only)
  • reload: Reloads a command. (Owner-Only)
  • report-respond: Responds to a submitted report. (Owner-Only)
  • set-uses: Changes command usage stats. (Owner-Only)
  • shutdown: Shuts down the bot. (Owner-Only)
  • webhook: Posts a message to the webhook defined in the bot owner's process.env. (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.
  • acrostic: Creates an acrostic from any word or name.
  • advice: Responds with a random bit of advice.
  • axis-cult: Responds with a teaching of the Axis Cult.
  • boredom: Responds with a random activity to try when you're bored.
  • bunny-fact: Responds with a random bunny fact.
  • 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.
  • never-have-i-ever: Responds with a random "Never Have I Ever..." statement.
  • news: Responds with a random news article.
  • 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.
  • word: Responds with a random word.
  • xiao-fact: Responds with a random fact about Xiao.
  • yo-mama: Responds with a random "Yo Mama" joke.

Random Image:

  • ai-artwork: Responds with randomly generated artwork.
  • ai-cat: Responds with a randomly generated cat.
  • ai-fursona: Responds with a randomly generated fursona.
  • ai-horse: Responds with a randomly generated horse.
  • ai-person: Responds with a randomly generated person.
  • ai-vase: Responds with a randomly generated vase.
  • ai-waifu: Responds with a randomly generated waifu.
  • awwnime: Responds with cute random anime art.
  • bird: Responds with a random image of a bird.
  • bunny: Responds with a random image of a bunny.
  • 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.
  • food: Responds with a randomly generated food.
  • fox: Responds with a random fox image.
  • hentai: Responds with a random hentai image. (NSFW)
  • interesting: Responds with a random interesting image.
  • 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.
  • shrek: Responds with a random image of Shrek, the sexiest man alive.
  • xiao: Responds with a random image of Xiao Pai.

Seeded Randomizers:

  • butt: Determines a user's butt quality.
  • coolness: Determines a user's coolness.
  • cuteness: Determines a user's cuteness.
  • 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.
  • thicc: Determines how thicc you are.
  • worth: Determines how much a user is worth.

Single Response:

  • can-you-not: Can YOU not?
  • cave: Sends a Minecraft cave that blends in with the chat.
  • 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.
  • rickroll: Sends a link to the "Never Gonna Give You Up" music video.
  • spam: Responds with a picture of Spam.
  • tableflip: Flips a table... With animation!
  • where-is-everybody: Where is everybody?
  • wynaut: Why not? Wynaut?
  • yoff: Posts a picture that truly defines modern art.

Automatic Response:

  • no-u: no u
  • 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 the calendar for a specific month and year.
  • covid-19: Responds with stats for COVID-19.
  • days-since: Responds with how many days there have been since a certain date.
  • 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.
  • holidays: Responds with today's holidays.
  • 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.
  • us-election: Responds with the odds of each canidate winning the presidential election, according to 538.
  • year-progress: Responds with the progress of the current year.

Search:

  • anilist: Responds with user information for an Anilist user.
  • anime-character: Searches AniList for your query, getting character results.
  • anime-staff: Searches AniList for your query, getting staff results.
  • anime: Searches AniList for your query, getting anime results.
  • book: Searches Google Books for a book.
  • bulbapedia: Searches Bulbapedia for your query.
  • 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.
  • poem: Searches for poems by a specific author.
  • pokedex-image: Responds with the image of a Pokémon.
  • pokedex-location: Responds with the location data for a Pokémon.
  • pokedex-moveset: Responds with the moveset for a Pokémon.
  • pokedex: Searches the Pokédex for a Pokémon.
  • pornhub: Searches Pornhub for your query. (NSFW)
  • 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.
  • stock-photo: Searches for stock photos based on 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.
  • 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.
  • image-size: Determines the size of an image.
  • ocr: Performs Optical Character Recognition on an image.
  • parse-time: Analyzes the time duration you provide and gives the result.
  • read-qr-code: Reads a QR Code.
  • safe-url: Determines if a URL is safe or not.
  • 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.
  • antidepressant-or-tolkien: See if you can guess if a word is an Antidepressant or Tolkien character.
  • 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.
  • hearing-test: Test your hearing.
  • horse-info: Responds with detailed information on a horse.
  • horse-race: Bet on the fastest horse in a 6-horse race.
  • hunger-games: Simulate a Hunger Games match with up to 24 tributes.
  • ib-hardcore-edition: Responds with the download link for Ib: Hardcore Edition.
  • 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.
  • the-game: If you think about the game, you lose.
  • true-or-false: Answer a true or false question.
  • 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-cry: Guess who that Pokémon is, based on their cry.
  • whos-that-pokemon: Guess who that Pokémon is, based on their silhouette.
  • will-you-press-the-button: Responds with a random "Will You Press The Button?" dilemma.
  • would-you-rather: Responds with a random "Would you rather ...?" question.

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.
  • bingo: Play bingo with up to 99 other users.
  • connect-four: Play a game of Connect Four with another user or the AI.
  • 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.
  • imposter: Who is the imposter among us?
  • island: Who will be the final two left on the island after a series of vote-kicks?
  • 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 other opponents.
  • russian-roulette: Who will pull the trigger and die first?
  • spam-war: See who can type more characters the fastest.
  • tic-tac-toe: Play a game of tic-tac-toe with another user or the AI.
  • typing-race: Race a user to see who can type a sentence faster.
  • 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!
  • blur: Draws an image or a user's avatar but blurred.
  • bob-ross: Draws an image or a user's avatar over Bob Ross' canvas.
  • brazzers: Draws an image with the Brazzers logo in the corner. (NSFW)
  • caution: Creates a caution sign with the text of your choice.
  • certificate: Sends a certificate of excellence with the name and reason of your choice.
  • charcoal: Draws an image or a user's avatar but with charcoal.
  • 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.
  • communist: Draws the Communist flag over an image or a user's avatar.
  • contrast: Draws an image or a user's avatar but with contrast.
  • convert-image: Converts an image or user's avatar from one format to another.
  • create-qr-code: Converts text to a QR Code.
  • danger: Creates a danger sign with the text of your choice.
  • desaturate: Draws an image or a user's avatar but desaturated.
  • dexter: Draws an image or a user's avatar over the screen of Dexter from Pokémon.
  • dicebear: Creates a DiceBear avatar based on the text you provide.
  • distort: Draws an image or a user's avatar but distorted.
  • emboss: Draws an image or a user's avatar but embossed.
  • fire-frame: 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.
  • gandhi-quote: Makes Mahatma Gandhi say the quote you want.
  • 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.
  • gun: Draws a gun over an image or a user's avatar.
  • hands: Draws creepy hands over an image or a user's avatar.
  • 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.
  • implode: Draws an image or a user's avatar but imploded.
  • invert: Draws an image or a user's avatar but inverted.
  • jeopardy-question: Sends a Jeopardy Question with the text of your choice.
  • lego-icon: Edits an image or avatar onto a character icon from LEGO Star Wars.
  • license-plate: Creates a license plate with the text of your choice.
  • liquid-rescale: Draws an image or a user's avatar but with liquid rescale from ImageMagick.
  • 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.
  • noise: Draws an image or a user's avatar but with noise.
  • oil-painting: Draws an image or a user's avatar but with oil paints.
  • pet: Pets an image or a user's avatar.
  • 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.
  • resize: Draws an image or a user's avatar resized to the size you want.
  • 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.
  • sketch: Draws an image or a user's avatar but sketched.
  • snapcode: Responds with the Snapcode of a Snapchat user.
  • speed-limit: Sends a Speed Limit sign with the limit of your choice.
  • spongebob-time-card: Sends a Spongebob Time Card with the text of your choice.
  • spotify-now-playing: Draws an image or a user's avatar on a Spotify album with the name and artist 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.
  • steam-card: Draws an image or a user's avatar on a Steam Trading Card.
  • subtitle: Adds subtitles to an image.
  • swirl: Draws an image or a user's avatar but swirled.
  • 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.
  • undertale: Sends a text box from Undertale with the quote and character of your choice.
  • wanted: Draws an image or a user's avatar over a wanted poster.
  • wild-pokemon: Draws an image or a user's avatar over a wild Pokémon appearance.
  • you-died: Sends a "You Died" screen over an image or a user's avatar.
  • yu-gi-oh-gen: Draws an image or a user's avatar on a Yu-Gi-Oh! Trading Card with the 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.
  • chocolate-milk: Draws a user's avatar holding chocolate milk.
  • fire: Burns a user's avatar.
  • 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.
  • 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-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.

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.
  • boardroom-meeting: Sends a "Boardroom Meeting" meme with the text of your choice.
  • catch: Catch users, revealing who is something.
  • challenger: Draws an image or a user's avatar over Smash Bros.'s "Challenger Approaching" screen.
  • change-my-mind: Sends a "Change My Mind" meme with the text of your choice.
  • 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.
  • deep-fry: Draws an image or a user's avatar but deep-fried.
  • 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: Sends a "Drakeposting" meme with the text of your choice.
  • edd-facts-book: Sends a "Double D's Facts Book" meme with the fact of your choice.
  • enslaved: Sends a "Ah yes, enslaved" meme with the image and text of your choice.
  • food-broke: Draws a user's avatar over the "Food Broke" meme.
  • for-five-hours: Sends an "I've looked at this for 5 hours now" meme with the image of your choice.
  • 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.
  • i-fear-no-man: Sends a "I fear no man" meme with the text of your choice.
  • if-those-kids-could-read: Sends a "If those kids could read, they'd be very upset" meme with the text of your choice.
  • illegal: Makes Donald 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.
  • look-what-karen-have: Draws an image or a user's avatar over Karen's piece of paper.
  • mario-bros-views: Sends a "Mario Bros. Views" meme with the text of your choice.
  • 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.
  • metamorphosis: Sends a "My Metamorphosis Begins" meme with the image and text of your choice.
  • my-collection-grows: Sends a "My collection grows richer" Nekopara meme with the text 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.
  • panik-kalm-panik: Sends a "Panik, Kalm, Panik" meme with the text of your choice.
  • phoebe-teaching-joey: Sends a "Phoebe Teaching Joey" meme with text of your choice.
  • pills: Sends a "Hard to Swallow Pills" meme with the text of your choice.
  • plankton-plan: Sends a Plankton's Plan meme with steps of your choice.
  • pogchamp: Sends a pogchamp duplicated however many times you want.
  • 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.
  • sonic-says: Sends a "Sonic Says" meme with the quote 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.
  • spiderman-pointing: Sends a "Spiderman Pointing at Spiderman" meme with the text of your choice.
  • spongebob-burn: Sends a "Spongebob Throwing Something into a Fire" meme with words of your choice.
  • that-sign-wont-stop-me: Sends a "That Sign Won't Stop Me, I Can't read!" meme with the presentation of your choice.
  • this-guy: Draws an image or a user's avatar over the "Get a load of this guy" meme.
  • 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.
  • tuxedo-pooh: Sends a "Tuxedo Winnie the Pooh" meme with the text of your choice.
  • 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.
  • worse-than-hitler: Draws a user's avatar over Family Guy's "Worse Than Hitler" meme.
  • 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.
  • leet: Converts text to l33t speak.
  • 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.
  • shorten-url: Shortens a URL using bit.ly.
  • 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.
  • txt: Generates a TXT file from the text you provide.
  • 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.
  • 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 celestial object.
  • 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.

Play Audio:

  • airhorn: Plays an airhorn sound in a voice channel.
  • dec-talk: The world's best Text-to-Speech.
  • pokemon-cry: Plays a Pokémon's cry.
  • soundboard: Plays a sound in a voice channel.
  • vocodes: Speak text like a variety of famous figures.

Reminders:

  • delete-reminder: Deletes your reminder.
  • remind: Sets a reminder.

Phone:

  • admin-phone: Starts an admin phone call with a server. (Owner-Only)
  • hang-up: Hangs up the current phone call.
  • phone-block: Gives instructions for blocking a channel or server.
  • phone-book: Looks up phone-enabled servers.
  • phone-info: Gives information on the current phone call.
  • phone: Starts a phone call with a random server.

Coding Tools:

  • beautify: Beautifies code with js-beautify.
  • lint-rule: Responds with information on an ESLint rule.
  • lint: Lints code using ESLint.

Other:

  • cleverbot: Talk to Cleverbot. (Owner-Only)
  • dating: Find the person of your dreams with this dating system!
  • 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)
  • screenshot: Takes a screenshot of any webpage.
  • smilebasic: Responds with a ZIP file for a SmileBASIC project.
  • strawpoll: Generates a Strawpoll with the options you provide.

Roleplay:

  • bite: Bites a user.
  • 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.
  • smile: Smiles at a user.
  • wake-up: Wakes up a user.
  • wave: Waves at a user.
  • wink: Winks at a user.

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 "no u" runs no-u.
    • Saying "(╯°□°)╯︵ ┻━┻" runs unflip.

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.