Most of you know by now (all of you at least have heard something) that we're switching over to Discord on March 31st. This is when CC cycles it's systems and is the most optimal time.
Due to this, those of you that have already joined the Discord know that I've been developing the Official CC Bot, he goes by Fishsticks. Some of you know about the tutorials I've posted on YouTube concerning him and Discord, but I've decided to make this here thread to cover any and all questions and concerns about Discord and the happy little bot that goes with it.
The switch to Discord is certain. Nothing here is meant in any way to strike up another argument. The goal here is to provide insight and knowledge on a program that some of our members know nothing about. I will be writing it from a perspective that you understand how to computer. The commands from Fishsticks require intellect. Using Discord is not hard, just clicking and maybe some typing. This guide is meant to simplify this process and answer questions you may have.
- Discord: A VOIP (Voice over IP) program. Works very similar to TeamSpeak 3 but with new layouts and permissions systems. "Channels" are instantiated differently and controlled differently. Discord runs in the background unless otherwise told not to, on default settings, it DOES NOT close when you click the "X" button in the top right (or left for you macOS people)
- Server: (Also called a guild); The primary piece needed to do anything with Discord. A server is a joinable network that functions just like joining the TeamSpeak server except you remain attached to it until you leave it intentionally. Servers can be switched between very easily by clicking on them on the far left vertical bar. Each server has it's own circular logo or initials noted in the icon.
- Channel: A section in a Discord server designated for chat. There are two types of channels in Discord; a text channel, denoted by the "#" sign to the left of the channel name; and a voice channel, denoted by the speaker icon to the left of the name. Channels have permissions that can be set to allow certain roles to have control over certain aspects. Text channels can be tagged by using "#<channelname>" to target a channel. Clicking the tag will send the user to the tagged channel.
- Category: Unlike TS, Discord features categories where channels can be grouped into more specific sections. These have a name and allow channels to be collapsed for easier viewing. Categories can have their own permissions assigned to them and channels can be "synced" to the category.
- Member: A user in a Discord server. Members can be assigned roles that grant specific server-wide permissions. Members can be tagged as a target for a message by using "@<member>".
- Role: A permissions category in Discord. Similar to a permissions group in TeamSpeak. Permissions are setup to be allowed or disallowed in a group and have their own color assigned to them. Members are then assigned a role in order to permit that user the permissions allowed (or disallowed) so that they can have access to various functions. Roles are also "taggable" (if allowed in the role's settings) meaning that in text chat, you can use @<role> to tag everyone assigned with that role to see a message.
Downloading and Installing
- Visit the official Discord site at discordapp.com and simply click the left center button. It will auto-detect your OS and if not, there is another download button at the top left for custom selections.
- Install Discord like any other program. It will likely automatically open.
- If you don't have an account, you will need to sign up for one. The username you choose is not permanent but will be a backhandle. If people click you name it will show up in the handle so don't make it naughty. Nicknames are changeable so your handle will be permanent but your show name is not.
- Once you're logged in and have Discord up and running, you'll need to get yourself a CC Discord invite link. Before joining, make sure that you've verified your Discord associated email address, you cant do anything without it for security reasons. The invite link can be found at the top of this post in the same bar as Quick Links and the FAQ.
- Apon joining, if you're a Trusted from TS or any other associated member or higher, make your presence known to a staff member in order to get your proper roles assigned.
- Carry on, or follow the rest of this guide.
Alright, so I'm going to try and make this as un-confusing as I can.
When you first join the CC Discord (or any other server for that matter), you land in the channel that the invite was generated from or the channel that the settings have designated. In this case, when you join, you'll land in the Hangout text channel. The CC Discord is setup in a fashion very similar to the TS server, meaning permissions and channel setup will be as close as possible.
Discord is different from TS in the way channels work. You can still text chat without even being connected to a voice channel, this is not to say being muted, I'm saying not connected to be able to talk at all. The landing channel is a text only channel, meaning if you say something vocally, no one will hear you....
Using Text Chat
Chatting in text channels is very easy and comes with some extra commands as well. Simply drop the message into the box in the bottom middle and hit enter to send. (Shift+enter will create a new line, more formatting tips below). Using "/" will bring up possible extra chat features. "/tableflip" will place the tableflip text emote into the chat.
Connecting to Voice
Voice channels are different from text channels in that you can connect to a voice channel and talk to others in the same channel while at the same time being able to switch around to different text channels to chat as well.
Voice channels are denoted by speaker icons to the left of their name. To connect, simply click on the channel name. Your name will show up beneath the channel. When you transmit sound, Discord will show a green ring around your icon. To switch between voice channels, simply click on the voice channel to switch to. Disconnecting is also simple; click the icon above your name that looks like a phone with an "X". This menu is above your name and profile picture on the lower left part of the window.
Changing a User's Volume
When you wish to change someone's volume you can r-click their name to bring up a context menu of options. These options will be discussed more in-depth later. One of them will be slider called User Volume. Simply move this bar to the left to turn them down or to the right to turn them up. This option is available to every member and can be used anywhere, connected to voice or not.
Mentioning (Tagging) People, Roles, and Channels
Mentioning is what Discord calls "Tagging" someone. Doing this will highlight the message for them and send them a notification (these make sound and can be muted, noted on later).
To mention someone, simply use the "@" symbol and begin typing their name. The same goes for mentioning a role. If you have the power to, or if he role is setup so that people can mention it, then you can tag it.
Tagging channels is also possible as well, but only for text channels. In this case, simply use the "#" followed by the channel name.
Both of these functions will present a menu when you start typing so you can use a combination of the arrow keys and enter to make this process more streamlined. Keep typing the name of the user, role, or channel to refine the menu.
Sending Links/Pictures and Uploading Files
First and foremost, you must have the necessary permissions to send links/upload images. Second, you also need to be in a channel that also permits the sending of such content. Channels in the CC Discord are also setup with consideration to targeted content. For example, keep memes in the meme channel.
Assuming that you have these permissions and are in the right place, then all thats necessary is to copy the link from wherever you're coming from and paste it into the chat box and hit enter. Discord will auto embed the link preview (if possible). If it's a YouTube video, then the targeted video will appear in the chat and people can view the video straight from Discord. Images will also do the same thing.
Uploading files is similar but also have drag and drop functionality. Without Discord Nitro (paid features), you can only send files that are 8MB and below. If you fit these requirements, then you can simply drag the file into the chat and Discord will present you with the option to make a comment with it, this is simply the message that will appear with the file once uploaded to chat.
The file will upload (with comments, if any) and members that have access to that chat will be able to view your upload and also be able to download it.
Formatting Messages and Chat Shortcuts
Formatting tools are a very effective way to both organize message and emphasize what you're trying to get across so that the message/content is better understood.
Underlining: __<message>__ . (Yes, that is two underscores (shift+hyphen))
Monospacing: `<message>` (also works with ``<message>``)
Shift+Enter creates a new line in message
Using the up arrow key will begin editing the last message posted to the channel.
Emojis start with ":", type that symbol and a list of emojis will appear, typing out the name will present a menu that you can use the arrow keys with. The emoji menu is also accessible via the emoji button on the far right of the chat box.
Muting Notifications and Subduing Channels
If you get to the point like myself where you have a full left side list of servers and you've got a lot of channels to comb through, you'll likely be getting a lot of notifications. Some of these channels you'll either 1) not care about, or 2) simply want to subdue all the messages from. This is simple.
R-click the text channel you wish to mute and tick the option to mute the channel. This will stop Discord from notifying you of incoming messages and mentions. If you do get mentioned, then a little red number will appear next to the server icon/channel that it originated from.
These muted channels can also be hidden, that way you don't even have to look at those so hated channels...
Muting servers works the same way. R-click the server and tick the mute option. This is also where you can hide those muted channels. In the same manner, you can edit your notification settings for the entire server. Clicking that option will bring up a dialog that will allow you to mute the server (this is highly not recommended. Matter of fact its almost dumb), change it's settings so that you can; GET ALL THE MESSAGES!, Only get the mentions, or simply receive nothing.
Suppressing @everyone and @here will stop mentions that note @everyone which is the entire server, and @here which is anyone that is included in a channel (typically used for announcements). Mobile push notifications will allow the notifications to be sent to your phone, should you have the app installed.
Notification overrides will change the notification settings for specific channels. This works the same way that r-clicking and muting does, but with a little more customizability.
These options for muting also apply to channel categories, that way if you mute the category, you mute all the channels included in the category.
Viewing and Pinning Messages
Pinned messages, are typically those that are important. Like reminders. Keep in mind that you must also have the permissions to pin messages to a channel.
If one happens to pique your fancy, then hover over the message and at the far right of the message there's a set of 3 circles in a vertical line, click that and a context menu will open. These are your message options. If you have the power to, clicking pin will open a dialog asking to verify your decision and if confirmed add it to a list of pins tied to the channel.
You can access these pins by clicking the thumb-pin at the top right of a text channel. This is also where you can delete the pinned messages.
Using the Search Bar
At the top right of the window (right of pinned messages), is a search bar. This powerful function allows you to do several things.
- Search a channel's messages
- Search a specific user's messages
- Specific types of messages
Viewing Profiles and Sending DMs
These functions are available via the member context menu. Viewing someone's profile may denote extra information such as external profiles like Steam, League of Legends, Twitch, and more. To view it, simply r-click a member, and click Profile.
In the same manner, you can send a Discord Message (DM) (Basically a private message (PM)) by clicking Message in that same menu.
Muting and Blocking Members
This one does have it's uses. While sticking on the topic of the member context menu, you can tick the option to mute the user, meaning that while in voice, you wont be able to hear anything they say (but they can hear you).
Blocking (accessible via the menu) someone will negate everything that user does in your view. They cannot be heard by you in voice chat and the messages they send in text chat will be hidden (unless you enable viewing).
Adding Friends and Inviting them to Servers
While in the member context menu, you can click add friend to send that person a friend request. If accepted, you can see what servers you are mutually attached to, and via the friends menu, send them a call, or voice chat faster.
In the same sense, you can remove a friend by using that same menu.
You can also invite people to a server you are attached to and can generate invites from by r-clicking the member, and hovering over Invite to Server and clicking the server from the dropdown that appears. This will send them an invite to a server in a DM.
Now onward to my pride and joy of the CC Discord, Fishsticks. Fishsticks is an automaton. He doesn't know you. Mentioning him will do nothing. He reads chat like a madman though. If he sees something he likes in chat, he'll respond accordingly. Now, let's review the general basics of Fishsticks, then we'll get into commands and how he works.
At the time of writing this, and as you can see, Fishsticks is running on V1.6.5, a wonderful version. Here's the big features about Fishsticks:
- He's online 24/7: He's hosted off of the Planetary Dyanamics Network (my server network) based out of a dedicated machine in Canada. If he goes down, one of two things has happened: I've stopped paying for the server, or he's broken.
- Vast command set, some commands you may not have known existed, and more are being added almost weekly.
- Self-Diagnostics: Fishsticks will log events into his own Discord channel, but will also keep a set of variables live in his own system. These can be viewed at anytime by using !status.
- Echo System: Delayed Announcing. Division Leaders, Event Coordinators, other Staff, can execute a command that will wait a specific amount fo time prior to being launched as a server-wide announcement.
- Engineering Mode: (More on this below) Fishsticks can engage in engineering mode, this will lock up certain commands so that he doesn't break while his code is being worked on.
- Temporary Channel Creation: One of the most requested abilities; Fishsticks can create custom voice channels. These work just like in TeamSpeak, channels have their own name and you can specify a max user limit.
- Report System: Got a troll troubling you? Use a report command to get staff involved.
- Modular Functionality: He's got modules. This means that Fishsticks is decentralized in his core code. Commands are run off of separate files that are called on when a command is executed in chat. This prevents runtime errors and keeps the bot running.
Fishsticks will only answer to commands that are tailored to his perfection. This being said, I'll try and explain how you need to talk to Fishsticks in order to get along with him.
First thing when stating a command is that they start with a prefix (well, most of them, passive commands will be identified below). Fishsticks' prefix is the exclamation mark (!), and that is immediately followed by a command ID (no spaces). For example: !help is a proper command. And likely one that should be used most often.
As of V188.8.131.52, Fishsticks now has an internal documentation. This can be accessed via the !info command (see !help) and will describe any command and it's parameters. Not all of the commands have been added quite yet but they'll get there.
Fishsticks commands come in all different types. Some of them are one liners like !help, but there are others like !tempch that are going to get people into an uproar. Before we dig into that, let's look at how I'm going to describe commands. That way when YOU use them, you don't manage to break Fishsticks by being dumb.
As we said, all commands start with !. Then followed by a command, tempch, but commands may sometimes require parameters. These parameters are denoted by required parameters and some that are optional.
Required parameters appear in brackets: 
Optional parameters appear in angled brackets: <>
If we go back to !help and we look at the commands in there, !tempch is followed by 2 parameters. a <maxUsers> and a [channelName], but maxUsers is a conditional statement. This is exclusive to tempch right now.
In order to properly execute tempch, we first have to look at why there is a conditional. "Set maxUsers to 0 if using more than one word for channelName." Alright, seems easy enough. This means that if you are making channel that has more than one word, eg; "PUBG Night Channel" or "Fortnite is Terrible" then we have to set maxUsers to 0. I'll explain why in a bit.
If it's just one word, and we dont need a maximum user limit, we can safely ignore the maxUsers parameter. Therefore, !tempch PUBG will create a channel that doesn't have a maximum user set and is named "PUBG"
To set a maximum user count that can join the channel, say we want a 4 user limit for PUBG, then we can say: !tempch 4 PUBG and that will create a channel called PUBG that will have a maximum user count of 4, including you.
This is just simple syntax and will be used on other commands as well.
Fishsticks does have some structure to him, the easiest is checking the permissions before executing a command. when you run !help you see a section for Normal Commands, CC Member Commands, and Administrative Commands. Commands that are not set to Normal Commands will check for some sort of permissions level before executing.
This means that if you run a CC Member command, you need to be a CC/ACC Member before the command will run, or else Fishsticks will say that you don't have the necessary permissions. Same goes for Administrative commands like !echo.
As of V184.108.40.206, Fishsticks has been integrated with what I call, passive commands. These are commands that don't require a prefix. Part of what some people might consider to be "responsive bot design" aka, chatting with an AI. All that's required is that you know what passive commands are accepted and what is not. I'll add a list below where I'll be adding the command listing.
All that you need to do is type an accepted statement into the chat, such as hello. Fishsticks will respond accordingly. Beware though, Fishsticks also looks for smack talk and will get surly with you if you do.
This is a setup that I've put onto Fishsticks the likes that has never been seen before on any of my other bots, not even LCARS47 (Planetary Dynamics Bot).
Engineering Mode is a system that staff members can toggle on and off on Fishsticks. What it does is allow development and testing of the bot while not destroying time based or ID cached objects. This means that it stops use of certain commands that are stored on the bot in the event that he's being worked on.
For example, if I start working on Fishsticks so I can add a new feature to him, I'll turn on Engineering Mode. This stops commands like !tempch and !echo from being used so that if I restart the bot, the command will not be lost. It's stopping a problem from happening before it can happen by not allowing you to allow the problem.
When engineering mode is turned on, Fishsticks' activity will change so that you know if you can or cannot make a channel/so forth.
Normally, Fishsticks will look like this: (The version number may be different)
In engineering mode, he looks like this:
Engineering Mode sessions can last upwards of a couple hours, so if you're out for making a channel or using Echo, then make sure you check for ENGM before doing anything, as not even staff can override ENGM. (For now at least).
Administrative Discord Functions
Now for the final section. This is where I will provide a reference for staff members or other members that have elevated permissions to see how to do certain things.
Here's a fun one. Server Muting and Deafening work liken they say, but this is only for voice chat. You can mute someone from talking and by doing that you set it so they cant talk anywhere. Deafening works the same way, but instead of not being able to talk, the simply can't hear. Odd, but...yea I got nothing..it's pretty odd.
R-click to bring up the member context menu and these options will appear as red checkboxes under Change Nickname.
This can be viewed as both a normal behavior and a punishment behavior, whatever reason you have for using it, here's how.
Bring up your member menu, hover over Roles near the bottom half and a dropdown will appear. Depending on what roles and permissions you have, only specific roles will appear in this list. This means that either you can assign or revoke only the roles you are permitted; for example, you cannot assign yourself a role that would allot you more permissions than allowed.
Ticking or unticking the boxes in this dropdown menu will assign or revoke roles for that member.
We know that trolls exist. (Football's too. ) This is one way to deal with them.
Open your member menu and just underneath Server Mute/Deafen, there's the red Kick option. If you kick a user, note that the only way to get back in is not like TeamSpeak where you simply reconnect. In this case, the user has to re-acquire an invite link and join back with it.
This one, use it with caution.
Open the member menu and select ban user. A nice little dialog will open with Thor smashing his hammer down and you'll need to provide a time frame for the ban. (Reason might be included in this, not sure.)
In order to unban someone, you have to go through some dialogs in the server setting system. Those that need to know that information won't find it here.
Thanks for reading all this mess if you actually got down here. I'm impressed.
If I ever find the time, I'll return and cover server settings and discuss which ones do what and how they should be implemented. I hope that this guide serve it's purpose. Below will be the YouTube tutorials I've made and I should also think that if anyone has any questions, comments, concerns, they'll post about it below and I'll take the time to add it should it be necessary. Thank you and hope this reference is useful.
Fishsticks' Complete Command Listing and Reference
Standard Command Reference (Command ID's and parameters)
Sorted alphabetically ascending
- ark: Toggles the issuer's assignment of the divisional role for Ark: Survival Evolved.
- channels: Displays a list of all the static channels and a nifty description of each.
- divisions: Displays a list of official CC divisions and their leaders.
- echo [time] [message]: Delayed announcing. Staff use only. Deploys the specified message to the announcements channel using @here after the specified time.
- engm: Staff and developer use only. Arms or disarms Fishsticks' internal development toggle. Allows or disallows certain commands from being executed.
- help: Displays this list, except in Discord.
- info [commandID]: Fishsticks' internal documentation system. The commandID is the command you are looking up. Remember that an ID is the command without the prefix and parameters.
- ips: Displays a list of official CC server IP addresses.
- links: Displays a list of hyperlinks that visit useful CC websites.
- overwatch: Toggles the issuer's assignment of the divisional role for Overwatch.
- pubg: Toggles the issuer's assignment of the divisionl role for PLAYERUNKNOWN'S BATTLEGROUNDS.
- report (incomplete): Report a service or user to staff/tech support for insight.
- rocketleague: Toggles the issuer's assignment for the divisional role for Rocket League.
- roles: Displays a list of all the CC roles and their functions.
- rules: Displays a list of all the CC rules.
- status: Displays Fishsticks's complete online session variables. Including information on the session, engineering mode, active directory modules, and more.
- tempch <maxUsers> [channelName]: Temporary Voice Channel creation command. Must be connected to the channel spawner channel and have the necessary permissions to run the command. maxUsers is the maximum number of people allowed in the channel (0 for no limit or multiword names) and channelName is the assigned name of the channel.
- version: Displays the "about" for Fishsticks.
- ni hao
- And entire array of other stuff that you can see the responses for when you badmouth Fishsticks.
This bot is glorious. He can do things that Discord itself doesn't have features for. If you have questions and or concerns, please relay them to me via Steam Message, Discord DM, or a forum message here. Before submitting any requests, please review the list of code to be added:
Ordered by Priority
- Repair report command, V1.8 framework left it out for some reason.
- Channel Commander, adds a blip to your name after use. Targeted for CC Meetings.
- Vouch system, allows users to run a command and grant Trusted roles to non-trusted newcomers.
- Music Bot, accompanied by parameters that allows the bot to play a song or queue of songs in a voice channel.
- Passive commands expansion (we gonna chat with Fishsticks)
- Echo command parameter addition (Divisional Role implementation)
- Twitch Streamer ad screening (Do you have "the Nod"?)
- Report command patch
- Perhaps some more passive commands?
CC Discord/Fishsticks overview guide (No where near as in-deptch as this guide.
CC Fishsticks 5m Tutorial | Temporary Channels (Pretty useful)