Discord
Overview
Our Discord is the communication hub for TNW. All of our staff have basic permissions and access to some new commands, but Mods and Admins have greater powers and responsibilities than the positions below them.
Bots
Not unlike plugins, we use a variety of bots to add features and functionality to the Discord guild. Each one will be individually addressed, but not all functions and features will be detailed. Generally, we should try to keep the number of bots to a minimum, but if you or another player has a great idea for a bot, ask the rest of the team!
- Tupperbox
- Chip
- Tickets
- Sapphire
- PluralKit
- Dreamvisitor
Tupperbox
Tupperbox lets you have many different profiles ("Tuppers") which you can choose between easily with every message you send. The best way to manage Tupperbox (for both users and administrators) is through the dashboard.
Chip
Chip is a music bot that can play from various music streaming platforms. Here are some important commands to remember:
Command | Description |
---|---|
/clear [queue|filters] |
🛡️ Clear the queue or all applied filters. |
/duplicates |
🛡️ Removes duplicate tracks from the queue. |
/forceskip [track #] |
🛡️ Forcefully skip without starting a vote. |
/loop [disable|current|all] |
🛡️ Loop the current track, queue, or nothing. |
/move [track #] [destination #] |
🛡️ Move a track to a specific location in the queue. |
/np |
Show the currently playing track and its progress. |
/pause |
🛡️ Pause the player. |
/play [input] |
Play a track from a supported platform. |
/previous |
🛡️ Go back to the previously playing track. |
/queue [list|export] |
Show or export the current queue. |
/remove [track #] [track #] |
🛡️ Remove one or multiple tracks from the queue. |
/resume |
🛡️ Resume the player. |
/search [input] |
Search for a track and pick the right option. |
/seek [min:sec] |
🛡️ Seek to a specific point in the track. |
/shuffle |
🛡️ Shuffle the current queue. |
/skip |
Start a vote to skip to the next track. 50% of listeners must agree. |
/stop |
🛡️ Clears the queue and makes Chip leave the voice channel. |
/upload [file|queue] |
Upload a file or import a queue. |
Tickets
Tickets is simple, customizable and powerful Discord ticket system complete with a web UI.
When a member opens a ticket, it creates a private channel in the tickets category that only the member creating the ticket can view. When a ticket is completed, it is best practice to send a close request with the /closerequest [close_delay] [reason]
command. You should include a reason that generally describes the ticket, as it is the only way to identify closed tickets in the web UI. It's also a good idea to include a close delay of 48 hours or more to automatically close the ticket if there is no response.
Sapphire
Sapphire is a customizable multi-purpose bot. We use it for moderation, static messages, and welcome messages.
We don't use Sapphire's warn system, but we do use their reporting. Users may report a message and attach a reason to it. There are three buttons when a report comes in: Accept (approve the report and select an action to take), Ignore (dismiss the report and add a reason for doing so, which will be will be made known to the reporter), and User info (access more detailed information about the reported user).
Here are some other useful commands:
Command | Description |
---|---|
/channelinfo [channel] |
Gets information about all channels / a specific channel. |
/guildinfo [guild] |
Gets information about a guild. |
/lock [channel] [reason] [view_channel] [use_threads] [silent] |
Lock a text or voice channel. When locking a voice channel, all connected users will be kicked from it. Add [view_channel] or [use_threads] (or both) at the end to revoke view or thread permissions, too. Add [silent] to silently lock the channels without an info message. |
/lockall [reason] [view_channel] [use_threads] [silent] |
Locks all channels set in the dashboard. Add [view_channel] or [use_threads] (or both) at the end to revoke view or thread permissions, too. Add [silent] to silently lock the channels without an info message. |
/massban <users> [attachments...] |
Bans multiple users at once - reason can be set after execution. |
/masskick <users> [attachments...] |
Kicks multiple users at once - reason can be set after execution. |
/purge <count_time_message> [user] |
Deletes either - the last <count> messages, or - the last messages <time> ago, or - all messages until message - all messages between <message1> and <message2> Optionally only delete messages from [user] . |
/sendmessage <content> [channel] |
Sends a message info a specific channel. For longer messages or messages you wish to update, you should instead create a message template. |
/setslowmode <slowmode> [channel] |
Sets the slowmode for a channel. |
/unlock [channel] [reason] [silent] |
Unlock a text or voice channel. |
/userinfo [user] |
Gets information about a user. |
Templates
Sapphire can store messages. These are called message templates. Once you have created a message template in the web dashboard, you can send it in a channel of your choice, edit an existing Sapphire message, schedule the message, send it based on member messages, or send it as a sticky message that stays at the bottom of a channel. Many resource channels like the rules and FAQ use message templates so that they can be edited.
PluralKit
PluralKit is a bot designed for plural communities on Discord. It allows you to register systems, maintain system information, set up message proxying, log switches, and more.
Command | Description |
---|---|
pk;system [system] |
Shows information about a system. |
pk;system new [name] |
Creates a new system registered to your account. |
pk;system [system] rename [new name] |
Changes the name of your system. |
pk;system [system] servername [servername] |
Changes the name of your system in the current server. |
pk;system [system] description [description] |
Changes the description of your system. |
pk;system [system] avatar [avatar url|@mention|upload] |
Changes the avatar of your system. |
pk;system [system] serveravatar [avatar url|@mention|upload] |
Changes the avatar of your system in the current server. |
pk;system [system] banner [image url|upload] |
Changes your system's banner image. |
pk;system [system] color [color] |
Changes your system's color. |
pk;system [system] privacy |
Displays your system's current privacy settings. |
pk;system [system] privacy <subject> <public|private> |
Changes your systems privacy settings. |
pk;system [system] tag [tag] |
Changes the system tag of your system. |
pk;system [system] servertag [tag|-enable|-disable] |
Changes your system's tag in the current server, or disables it for the current server. |
pk;system [system] pronouns [pronouns] |
Changes the pronouns of your system. |
pk;system proxy [server id] [on|off] |
Toggles message proxying for a specific server. |
pk;system [system] delete |
Deletes your system. |
pk;system [system] fronter |
Shows the current fronter of a system. |
pk;system [system] fronthistory |
Shows the last 10 fronters of a system. |
pk;system [system] frontpercent [timeframe] |
Shows the aggregated front history of a system within a given time frame. |
pk;system [system] list |
Shows a paginated list of a system's members. |
pk;system [system] list -full |
Shows a paginated list of a system's members, with increased detail. |
pk;find <search term> |
Searches members by name. |
pk;system [system] find <search term> |
(same as above, but for a specific system) |
pk;system [system] random [-group] |
Shows the info card of a randomly selected member [or group] in a system. |
pk;system [system] id |
Prints a system's id. |
Dreamvisitor
Dreamvisitor, created by Bog specifically for the server, has a variety of features. It serves as an all-in-one utility plugin and Discord bot. Below are some important commands. You can view them all on the Dreamvisitor wiki.
Command | Description |
---|---|
/activity <type> <activity> |
🛡️ 📗 Set the bot activity. This does not save through restarts! |
/alts <subcommand> |
🛡️ 📒 Manage the alt tracker. |
/broadcast <message> |
🛡️ 📗 Broadcast a message to the Minecraft server. |
/economy <subcommand> |
🛡️ 📒 Manage the Discord economy. |
/infractions <user> |
🛡️ 📗 Get the infractions of a user. |
/link <user> <username> |
🛡️ 📗 Link a Discord account to a Minecraft account. |
/panic |
🛡️ 📕 Kick all players from the server and set the player limit to 0. |
/resourcepackupdate |
🛡️ 📒 Update the resource pack to prompt clients to download the pack. |
/schedulerestart |
🛡️ 📗 Schedule a server restart when no players are online. |
/setgamechat <channel> |
🛡️ 📗 Set the channel that game chat occurs in. |
/setwhitelist <channel> |
🛡️ 📗 Set the channel that whitelists players. |
/toggleweb |
🛡️ 📒 Toggle the web whitelist system on or off. |
/unwhitelist <username> [ban?] |
🛡️ 📗 Remove a user from the whitelist. |
/user <user> |
🛡️ 📗 Get the details of a user. |
/warn <member> <value> <silent?> [reason] |
🛡️ 📒 Warn a member. |
Auto Whitelist
The whitelist functionality is built to handle whitelisting players completely automatically. There are a few things you should know about how exactly it works and what takes place when a player is whitelisted.
When a user on Discord sends a username in the whitelist channel, Dreamvisitor will first check if the username is legal. Minecraft usernames are alphanumeric (including underscores). If the message is not alphanumeric, Dreamvisitor will take no action. This also occurs if the provided username is not able to be found by the Mojang API.
If the username is valid, Dreamvisitor will first fetch the UUID of the username and add it to accountLink.txt
, which tracks which Minecraft UUIDs are connected to which Discord Snowflake IDs. A new entry will be recorded every time unless the UUID has already been registered. If a Discord ID or UUID is relinked, the previous link will be removed. One Discord ID connects to one UUID.
Dreamvisitor will then check whether or not the account is already whitelisted. If they are not, they are added to the whitelist. Either way, the user will be directed to check the FAQ for the IP.
Alt Tracker
Dreamvisitor can record Discord alternate accounts. Alts are stored as Alt Families. Each has one parent or "main" account and any number of child or "alt" accounts, stored in alts.yml
using Discord Snowflake IDs. You can link a child account to a parent account using the Discord command /alts link <parent> <child>
. Note that if the child is already linked to a different parent, you must first unset it. If the parent is a child of another parent, you'll have to unset it first. When you link a child account to a parent account, the infractions of the child are transferred to the parent. This operation cannot be undone.
You can get the alts of an account with the Discord command /alts get <user>
. Whether the user you specified is a parent or child account, the alt family will be retrieved. Note that although Dreamvisitor stores all child accounts added, only users in the same guild will be listed. If a child account leaves, it will still be stored internally, but not listed. You can also remove a child account from the embed.
Infraction Tracker
Dreamvisitor can track infractions of Discord members.
Infractions have a value from 0 to 3. Infractions are recorded using the /warn <member> <value> <silent?> [reason]
Discord command. The input value plus the value of all previous infractions cannot exceed the ban point (three). If silent
is True, the infraction will be recorded, but the member not notified. The reason will default to "No reason provided" if a reason is not provided.
If the user reaches the ban point after this infraction, Dreamvisitor will ask if you also want to ban the user. If the user has not been temp-banned before, Dreamvisitor will suggest a temp-ban of two weeks. Otherwise, you'll have the option to ban the user from only the Minecraft server or from both. Note that if you choose both, the user will be banned immediately and no warning will be sent. Alternatively, you can also choose to keep the note about the ban without the auto-ban, or you can choose to have Dreamvisitor not mention a ban in the warning at all.
If the infraction is not silent, Dreamvisitor will create a channel in the category defined by infractions-category-id
in the configuration. The user will be added to the channel and the warning message will be sent. The user has the option to either mark it as dismissed (at which point the user will be removed, but the channel not deleted) or they can request help from a staff member, in which case Dreamvisitor will send a message that a staff member will assist. Dreamvisitor will send a reminder every 24 hours if there is no response to the warning. Once a case has been dismissed or resolved, ensure the user has no view access and move the channel to the Player Issues Archive, or, if there is no important content, simply delete the channel.
The /infractions
Discord command lists a user's infractions. It is also possible to expire an infraction or delete an infraction from this message. These actions cannot be undone. Infractions automatically expire after 90 days from their creation.
Channels
Here is a quick overview of some important channels as an admin:
Channel Name | Description |
---|---|
#about-staff | Contains information about staff roles and staff introductions. Please do send or update a message if you new to the team or are promoted! |
#announcements | Announcements relating to major server — Minecraft or Discord — or general changes. |
#bug-report | Bugs are posted by the players here. Report them to the appropriate staff member if the issue is specific to one. |
#faq | Frequently asked questions. From time to time, this may need to be updated. |
#log | System channel, logs actions. Visible to trial admins. |
#in-game-log | The Minecraft server console is shown here. Only Administrators can execute commands. |
#polls | Polls — for fun or for research. Feel free to use this if you want to poll the players. |
#questions | Where players can head to ask about questions about the server in specific. Helpers should, for the most part, be able to answer questions here. |
#suggestions | Admins are the ones to confirm, deny, and resolve suggestions. Read them and respond to them promptly if you have an idea/response or can resolve it yourself. Don't be afraid to ask other staff for input, including Helpers and Moderators! |
#tickets | Encourage players to make tickets if they have an issue. |
#woftnw-socials | A channel dedicated to hosting links to other services under the WOFTNW umbrella. |
Stages and Events
You can use Discord's event system to make it more convenient for members to find information and participate in an event. To create an event:
- Click on the Events button at the top of the channel list.
- In the pop-up menu, click Create Event.
- Choose a location for your event.
- Define the topic, date, and time. You can also add a description and cover image.
- Review your event and click create.
If your event is in a stage channel, you should know how a stage channel works. The stage channel plays background music while there are no speakers. When you attempt to join the stage, you are presented with three options:
- Start the Stage - Pick a topic to start the conversation. This will begin an event.
- Create Event - Schedule a Stage for a future date. This will take you through the same process as above.
- Continue without starting - This will let you join the stage without starting an event.
If an event is scheduled, you will have the option to start that event.
A stage channel has two parts: the speakers and the audience. The speakers can be heard by everyone. The audience is unable to speak and can only listen to the speakers. As a Stage Moderator, you can freely switch between the stage and the audience. Stage Moderators are indicated by a badge that appears while a speaker.
Users who are not Stage Moderators cannot join the stage unless invited by a Stage Moderator. Users can indicate they desire to join the speakers, but they must be approved by a Stage Moderator. In either case, the user then must accept the invitation to finally join the speakers.
Stages support many features found in voice channels. Stages have built-in chats where all users can send messages. Speaker invitations also appear here for Stage Moderators. Screen sharing is supported by Stages and both speakers and the audience will always have this stream open. However, there can only be one stream at a time.
When your event is over, you can end the event instead of disconnecting to end the Discord event and disconnect all users from the stage by opening the dropdown within the disconnect button and clicking End Event.