Hey gang,
I'm starting work on a custom Discord bot for the guild that will add some extra fun and flavor to the experience. If you'd like to make any additional feature suggestions or recommend tweaks, please add your thoughts here!
Preface
Knightly is the Aureus Knights' Discord bot. Currently it just hops online when it needs to do small errands for the Officers, like letting us know when a new recruit joins us in FFXIV. I've been thinking about how we could expand it and so some neat stuff just for the guild. Some of this would make the existing bots redundant, and they'd be dropped in favor of this.
Much of this, including levels, coin, inventory and so on, could be integrated into the new website. Users could link their Discord account to their AKS website account. They could then earn XP for making forum posts, for example, or display their virtual inventory on their forum profile. Lots if interesting stuff we could do there.
Knightly commands are listed in this font and always begin with !exclamation marks. Optional command arguments are surrounded by [square brackets]. Required arguments are surrounded by {curly brackets}.
---
Profiles
Show you or the specified user's level, current and remaining XP, equipped items, stats (compiled based on what items are equipped), rarest badges, etc.
!profile [@User]
Set arbitrary profile information
!profile set title Open Sourcerer
!profile set twitter evansims
!profile set lodestone http://blahblah
Clear a set profile value.
!profile clear title
---
Levels (#bots only)
There are infinite levels, the XP cap just multiplies exponentially.
- Users earn 10 XP for every minute they remain online.
- Users earn 25 XP for every minute they're active in a text channel.
- Users earn 50 XP for every minute they're in a voice channel with at least one other person (aside from AFK.)
- Users earn bonus XP for completing quests, raiding, taking part in polls, etc.
Level ups are announced in #bot, with a @mention of the user.
Check the leaderboard
!leaderboard
---
Coins (#bots only)
Users earn coins for doing various activities, including completing quests, selling items and unlocking badges. Coins are meant to be a resource sink to encourage people to be active on the server and a natural gatekeeper to certain bot functions, like skipping music or changing nickname colors.
Check the leaderboard
!wallets
Check your balance
!wallet
Send someone coins
!wallet give @user 100
Officers: Award coins to a user
!wallet award @user {amount}
---
Reputation (#bots only)
Users can award reputation points to one another as a way of thanking, congratulating or otherwise celebrating someone. Users can award 1 reputation point every 12 hours. A user's reputation count is displayed in their !profile.
Give a reputation point.
!rep @user
---
Badges (#bots only)
Unlock badges by reaching milestones, like X number of posts, Y hours spent in voice chat, etc. Rare badges can also be unlocked by doing quests.
See your unlocked badges.
!badges
Officers: Award an badge to a user (skipping conditions)
!badges give @user {badge_id}
---
Questing (#bots only)
Every day a fresh selection of "quests" become available. They're basically just random number generator mini-games, with stories we can write up based around guild history and members. e.g., "A fire breathing Dragonmonk appears. As you strike it down, it's body withers and deforms. From it's writhing corpse, six more apparitions appear, identical to the beast in all but name. They tell you they aren't the Dragonmonk, but you know better." We could invite members to write up new ones every so often as a contest.
These quests offer a varying degree of XP and coin relative to their 'difficulty'. They may also drop an item. Quest difficulty is determined by the odds against the player successfully rolling a winning number. Certain quests may unlock humorous badges, especially the more difficult ones.
Think of these like t!dailies, but there are several and you aren't guaranteed to get the reward.
List available quests
!quests
Undertake a quest
!quest {quest number}
---
Raiding (#bots only)
Every day a new raid boss is randomly chosen. As more players join the raid, the odds of successfully beating the boss (winning the roll) increase. The raid automatically concludes at the end of each day with the results being broadcast in #bots, and the appropriate XP, coin and loot being distributed to the raiders when successful.
Users equipped attributes may have minor affects the outcome of the battle, depending on the boss.
Learn about today's raid
!raid
Join the raid
!raid join
---
Items (#bots only)
Items are collected in your inventory. They can be purchased from the Market, traded with other players, awarded as a prize or looted during quests. Every item is uniquely instanced, and branded with the name of the person who discovered it, which will remain with it no matter how many times its traded.
Every instance of an item receives a randomly assigned quality (poor, common, uncommon, rare, epic, legendary or ancient), and between 0 and 10 'attributes' based on that quality. Attributes are pointless and just silly things like "+32% Drama" for added humour. The coin value of an item is determined by it's combined quality and attributes.
Players can equip certain types of items, which will contribute to their profile stats. This allows players to customize their profiles in amusing ways, based on the attributes they choose to equip.
Players can also use certain items for one off abilities, like changing the color of their name on Discord. Items are always single use and deleted upon use, but players can loot or buy another one.
For simplicity sake, a player can only be holding one of each unique item in their inventory.
List your inventory. Equipped items show up at the top of the list.
!inventory
Paginate through inventory, if you have many items.
!inventory {page number}
Learn more about a specific item in your inventory (stats, who discovered it, etc)
!item info {item name}
Give another user an item from your inventory
!item give {item name} @user
'Use' an item, if it has an ability
!item use {item name}
'Equip' an item, if it's equippable. (Your stats are affected by the item's.)
!item equip {item name}
'Unequip' an item, if equipped
!item unequip {item name}
Vendor an item for a variable amount of coin, based on stat rolls.
!item vendor {item name}
Re-roll the stats on an item. (Costs coin.)
!item reroll {item name}
---
Item: Spectrum Potion (#bots only)
Users can customize the color of their nickname on the Discord server with these. Requires a 'Spectrum Potion' in your inventory. This item can be purchased from the Market, may be a random reward from a Quest, be traded with other players, or be awarded by an Officer.
Technical: This will work by dynamically creating user roles with custom color codes. These would have the same permissions as the baseline @everyone. Adding a color will create the user role `color_hexcode` (where hexcode is the hexidecimal color code provided) and apply it to the user. Color roles are removed from the server when there are no more members left in the role.
!item use "Spectrum Potion" #hexcode
---
Market (#bots only)
Buy and sell items from other players, and randomly generated items that are inserted into the economy.
For simplicity sake, an item can not be taken off the Market once it is placed. It must either sell, or it's value must decline to the point of 'vendoring' it automatically.
See whats been put up for sale most recently.
!market
Page through market results.
!market {page number}
Buy an item from the market.
Will fail if you already have an identical item in your inventory. If there are multiple instances of the item, you will automatically buy the cheapest listed copy.
!market buy {item name}
Put an item from your inventory on the market.
Items go up at the asking price and gradually decline in price over time until they sell, up to the base value of the item (as if it were !item trash'd.) Players are awarded the final price when the item is purchased. Alternatively, if an item that goes unsold for X days it will be effectively !item trash'd, with that coin awarded to the seller.
!market sell {item name} {asking price}
Officers: Restock the market with randomly generated items.
!market restock
---
"Housing", i.e. Private Channels
A user can rent a housing (private channel) using coin, and invite others there. A user can only own one "house" at a time. Only the owner can use the in-channel commands.
Houses cost a variable number of coin each week, depending on the number of users added. This rent is automatically deducted from the owner's wallet. If the owner is unable to pay the rent, the users are evicted (the role is deleted) and the house is removed (the channel is deleted.)
This is all done using dynamically created channels and user roles. When someone is added to a house, they're given the special role needed to see it.
Buy a house (#bots)
!house rent
Name the house (in channel)
!house name {House Name}
Set the house description (in channel)
!house description {House Description}
Add someone to the house (in channel)
!house add @User
Remove someone from the house (in channel)
!house remove @User
Demolish the house (in channel)
!house demolish
---
Polling
We could run various polls through discord, including the weekly FC buffs if we wanted.
The nice thing about these polls is they are persistent and reusable. You setup the options and can end and start the same poll over and over again as much as you like.
Polls are channel specific. So a poll named `buffs` in #ffixv would be different from an identically named poll in #bdo, for example.
Creating a poll
Polls are uniquely named so we can run several concurrently if necessary. Let's use the weekly FC buffs as an example poll, and name it 'fcbuffs'.
!poll add {poll name} {description}
For example:
!poll add fcbuffs "What buffs should we apply for the next Sunday Fun Day?"
Adding options
!poll {poll name} add {option}
For example:
!poll fcbuffs add The Heat of Battle (+10% Battle XP)
!poll fcbuffs add Earth and Water (+10% Gathering XP)
!poll fcbuffs add Helping Hand (+10% Crafting XP)
!poll fcbuffs add Man's Best Friend (+15% Chocobo XP)
!poll fcbuffs add Mark Up (+10% PVP Marks)
!poll fcbuffs add Seal Sweetener (+10% Company Seals)
!poll fcbuffs add Jackpot (+10% MGP Payout)
!poll fcbuffs add Brave New World (+5% DoM/DoW Attributes for those below 49)
!poll fcbuffs add Live Off the Land (+10 Gathering)
!poll fcbuffs add What You See (+10 Perception)
!poll fcbuffs add Eat from the Hand (+10 Craftsmanship)
!poll fcbuffs add In Control (+10 Control)
!poll fcbuffs add That Which Binds Us (Increased Spiritbond Speed)
!poll fcbuffs add Meat and Mead (+10 Minutes to Food Duration)
!poll fcbuffs add Proper Care (Reduces Gear Wear by 20%)
!poll fcbuffs add Back On Your Feet (Reduces Weakness Duration by 15%)
!poll fcbuffs add Reduced Rates (Reduces Teleporation Fee by 30%)
Listing options (each option is given a number, for easier interaction)
!poll {poll name}
Removing options
!poll {poll name} remove {option number}
Voting in a poll (can only do once; awards coin and xp)
!poll {poll name} vote {option number}
Starting (or restarting) a poll
!poll {poll name} start
Ending a poll and calculating results
!poll {poll name} end
Remove a poll.
!poll remove {poll name}
---
Paging Officers
This will dynamically create a new role and a private channel with permissions limited to that role. It will apply the role to the member invoking the command, and the Officer user groups will automatically be granted access. Knightly will also be there to monitor commands.
A log of the conversation will automatically be saved.
Start a private channel with the Officers
!officers
Close the private channel where invoked.
!resolved
---
Auto Responders
These are useful for making commonly repeated information readily available.
Add or update an auto responder: (costs coin)
!response set {command} {response text}
Remove an auto responder:
!response remove {command}
Invoke an auto responder:
!{command}
---
Music playback (#bots only)
Knightly could replace Mee6 for music playback. It would be locked to a specific voice channel and allow anyone to queue up music.
Adding media to the queue costs coin relative to it's length, to avoid trolling with things like 10 hour long remixes. "Which sucks, because I love doing that. - Okaria" Media below a certain length threshold (probably 4 minutes) will be free.
Queuing music (searching by title) (costs coin)
!music add {youtube search text}
!music add {soundcloud search text}
Queuing music (directly via url) (costs coin)
!music add {youtube url}
!music add {soundcloud url}
Skipping music: (costs coin)
!music skip
Shuffle music queue: (costs coin)
!music shuffle
Pause music:
!music stop
!music pause
Resume playing music:
!music play
!music resume
Show playlist/queue: (next 5 upcoming)
!music
---
Twitch notifications (#twitch only)
For managing notifications about guild members twitch streams going online/offline.
Add a twitch channel
!twitch add {twitchusername}
Add a twitch channel and identify a user as the streamer (grants bonus XP for minutes streamed)
!twitch add {twitchusername} @User
Remove a twitch channel
!twitch remove {twitchusername}
---
Searches and Embedding Media
Some members are missing the random giphy searches of Slack, and those on mobile are entirely without a built-in option for inserting GIFs.
Search for a YouTube video and embed first result
!youtube {search term}
Search Giphy and embed a random GIF from the results
!giphy {search term}
Bookmarks