Initial Setup
When FeedbackBot joins your server, it will try to create a channel called #fbb-admin
, and will prompt you to begin the setup process.
You can manually restart or rerun the setup process at any time using the /admin setup
command.
Automatic Setup
If you just want to get up and running with the default FeedbackBot settings, Automatic setup is the way to go!
Automatic setup will create the commands /bug
, /feedback
, /idea
, /request
, and /suggestion
, and create a private channel for each of those commands that is only visible to people with the Feedback Viewer
role.
Note: You can change your settings before running automatic setup, and they will be properly reflected. For example, if you change your server's keywords and then run automatic setup, slash commands and channels created will be based on your changes instead of the defaults.
Custom Setup
If you don't really understand how FeedbackBot works, or want to know what it does during the setup, you can select "Custom" setup to get a very thorough step-by-step explanation of what it is doing and why.
Step 1: Keywords
The first part of setup is assigning the keywords FeedbackBot will use to collect user feedback. These keywords will become the Slash Commands that people use to submit messages. By default, the keywords are bug
, feedback
, idea
, request
, and suggestion
, which create the commands /bug
, /feedback
, /idea
, /request
, and /suggestion
respectively.
Note: You can change these keywords at any time using the /admin keywords
commands. More info available below.
Step 2: Feedback Viewer Role
The next step in setup is to create the Feedback Viewer
role. This step isn't strictly necessary, but is a convenient way to grant trusted users access to the private feedback channels that FeedbackBot will create in the next step. If you allow FeedbackBot to create the role, users with the role will be able to see all the feedback destination channels. If you don't create the role, then the channels will only be visible to server admins by default, and you will need to manually control who can access them.
Step 3: Feedback Channels
The final step of the process is to create the channels where feedback will be copied after it is submitted. These channels correspond to one or more keywords. The way that FeedbackBot knows what channel to copy feedback to is simple, it looks for channels with the "channel prefix" (by default fbb-
), and then it checks to see if that channel name contains the keyword used to submit the feedback. This allows you to easily and intuitively combine or separate different kinds of feedback into different channels. For example, and #fbb-bugs
channel would only collect /bug
messages, but channel named #fbb-ideas-and-suggestions
would collect both /idea
and /suggestion
messages.
You can also use the special keywords other
or default
in a destination channel name to capture all feedback keywords that don't have a more specific destination channel (for example a channel named #fbb-other
).
Automatic Channels
If you choose "Automatic" during this step of the process, FeedbackBot will create one destination channel for each feedback keyword. You can rename the channels after they are created to combine different kinds of feedback into the same channel.
Custom Channels
If you choose "Custom" during this step, you will be shown a menu that will help you build destination channels to perfectly match your needs. This menu will help you to clearly understand which commands will be copied to what channels, and will create the channels for you with the press of a button.
Customizing FeedbackBot
By using the /admin
command and it's various subcommands you can customize FeedbackBot to fit your needs!
Keywords
Keywords become the Slash Commands that people use to submit feedback on your server. You can change your keywords at any time, and they will immediately become available as Slash Commands. When someone uses a keyword command, their message will be copied to the corresponding Feedback Destination Channel.
Default Settings:
- Keywords:
bug
,feedback
,idea
,request
, andsuggestion
. - Commands:
/bug
,/feedback
,/idea
,/request
, and/suggestion
.
Public & Private Keywords
- When someone uses a keyword command, FeedbackBot will reply to them with the text of their feedback and the Thanks Text . These replies are public by default, so anyone viewing that channel will be able to see the submitted feedback.
- If you would like FeedbackBot's replies to certain keywords to be visible only to the person who submitted the feedback, you can set
visibility: private
when adding keywords. - Regardless of the visibility setting, feedback will be copied to its corresponding Destination Channel, and visible to anyone with permission to view that channel.
Examples
- /admin keywords add words: complain
- Adds the feedback command
/complain
. - FeedbackBot's reply to the
/complain
command will be visible to everyone in the channel where the command was used.
- Adds the feedback command
- /admin keywords add words: report visibility: private
- Adds the feedback command
/report
. - FeedbackBot's reply to the
/report
command will only be visible to the person that used it. - The
/report
feedback will still be copied to the corresponding feedback destination channel.
- Adds the feedback command
- /admin keywords add words: comment critique review opinion
- Adds the feedback commands
/comment
,/critique
,/review
, and/opinion
. - FeedbackBot's reply to all of these comands will be visible to everyone in the channel where the command was used.
- Adds the feedback commands
Examples
- /admin keywords remove words: idea
- Removes the
/idea
feedback command.
- Removes the
- /admin keywords remove
- When no keyword is specified, FeedbackBot will provide you with convenient buttons you can use to remove feedback keywords.
Examples
- /admin keywords set words: bug feedback idea request suggestion
- Set the keywords to the default set of words (
bug
,feedback
,idea
,request
, andsuggestion
).
- Set the keywords to the default set of words (
- /admin keywords set words: report visibility: private
- Change your keywords to only include the
/report
command, which will respond privately when used.
- Change your keywords to only include the
Help Text
When a someone uses the /help
command, FeedbackBot will respond with a message explaining how to use it. You can customize FeedbackBot's response to better suit your server and the kinds of feedback you're trying to collect.
What you set as the help text will be displayed as a Discord message, so you can use markdown and special characters like \n
to make it look the way you want.
Default Setting
I collect any messages sent with these commands: {keywords} so the super cool devs can track them easier!\nExample:\n> /bug The game crashes when you lose on the first fight.
Include Keywords Commands Automatically
If you include the text {keywords}
in your help text, FeedbackBot will automatically replace that with a list of the keyword commands on your server. Using this placeholder means that you won't need to update your help text when you change your keywords.
Alternate Help Messages
You can have additional custom /help
messages for channels marked with the Alpha
or Beta
Development Stage.
Thanks Text
This is the message that FeedbackBot sends in response to feedback commands. The response can optionally include the submitting person's username and the feedback's ID number. Feedback IDs simply increment by 1 each time feedback is submitted, regardless of which keyword is used.
Placeholder Values
{user}
: is replaced with the username of the person who ran the feedback command.{number}
: is replaced with the feedback ID number.
Default Setting
- Setting:
Thanks {user}! Feedback saved as #{number}
- Example:
Thanks CoolUser! Feedback saved as #123
Development Stage
Assigning a development stages allows you to customize the Help Text and Lookup Data for specific channels in your server. Each channel can be set to either Normal
(default), Alpha
, or Beta
.
Change Admin Channel
If an admin channel exists, /admin
commands can only be run in that channel. This is a safety measure to prevent accidental exposure of FeedbackBot admin features to your general userbase.
By default, FeedbackBot will create the channel #fbb-admin
, and mark it as your admin channel. You can reassign the admin channel to any other channel using this command.
If you change the admin channel, be sure that the permissions to that channel are restricted, and that "normal" users in your server don't have access to FeedbackBot's /admin
commands. You can double check this in Discord by going to Server Settings
> Integrations
> FeedbackBot
and making sure /admin
is only enabled in the admin channel, and disabled for the @everyone
role.
Channel Prefix
FeedbackBot uses Channel names to determine the destination channels for different kinds of feedback. In order to prevent FeedbackBot from copying feedback into the wrong channels, destination channels must start with a special prefix. By default that prefix is fbb
, but you can change it to whatever you like.
For example, when someone uses the command /bug
, FeedbackBot will look for a channel name that starts with your channel prefix (default "fbb") and contains "bug" in its name (ex: #fbb-bug-idea-suggestion
)
Note
When you use this command, any channels whose name started with the old prefix will be updated to start with the new prefix.
Example
- If your prefix was
#fbb
, and you had the channels#fbb-admin
,#fbb-bug
, and#fbb-default
, they would be renamed to#bot-admin
,#bot-bug
, and#bot-default
respectively.
Miscellaneous
Example
Command:
Response:
This is text with my custom emoji <my_emoji:1234567890>
Data Lookup
In addition to the feedback submission functionality, FeedbackBot allows you to populate it with descriptions for the various elements/items/characters/etc of your game or product. After the upload, users will be able to look up items using the category keyword that you specify, and FeedbackBot will even do fuzzy-matched autocompletion to help them find the right thing.
This feature allows users to discuss your content accurately and without the need for external wikis. Throughout this section I will refer to all data as "things", but they could represent anything (items, characters, countries, etc).
Setup
Before you can upload data, you must run the /admin lookup setup
command to generate an auth token.
The auth token acts as your password for data uploads, so keep it secret! Do not ever include it with your game's files or post it publicly. If it is leaked somehow, you can generate a new one at any time by rerunning the /admin lookup setup
command and selecting "Reset Upload Token".
Data Preparation
Because FeedbackBot is product agnostic, the data you upload must be in a specific format. Currently only a JSON-based format is available.
Your JSON must be an array of objects with values for the following keys:
"bot_keyword"
This should be a category, and will become the command that people use to look up the thing."name"
The name of the thing, used to look it up."bot_text"
The Discord formatted message text that the bot will reply with when this thing is looked up.
Example
If you were making a game and had the following things:
Weapons
Name | Damage | Flavor Text |
---|---|---|
Wooden Sword | 6 | A simple wooden sword. |
Iron Sword | 10 | A basic iron sword. |
Iron Axe | 14 | A basic iron axe. |
Magic Axe | 24 | A magical axe. |
Items
Name | Healing |
---|---|
Potion | 10 |
Mega Potion | 40 |
Then the JSON data you upload would look something like this:
[
{"bot_keyword": "weapon", "name": "Wooden Sword", "bot_text": "`Attack:` **6**\nA simple wooden sword."},
{"bot_keyword": "weapon", "name": "Iron Sword", "bot_text": "`Attack:` **10**\nA basic iron sword."},
{"bot_keyword": "weapon", "name": "Iron Axe", "bot_text": "`Attack:` **14**\nA basic iron axe."},
{"bot_keyword": "weapon", "name": "Magic Axe", "bot_text": "`Attack:` **24**\nA magical axe."},
{"bot_keyword": "item", "name": "Potion", "bot_text": "Heals **10** HP."},
{"bot_keyword": "item", "name": "Mega Potion", "bot_text": "Heals **40** HP."}
]
- NOTE: Your JSON can include other fields, but lookup based on those custom fields is currently unsupported. [It hasn't been ported to the FeedbackBot was rewrite, let me know if it's something you want/need!]
Formatting bot_text
Discord bots must use disambiguated versions of emoji when using them in messages. To find the disambiguated version of your emoji, you can use the /admin echo
command, which will repeat what you say, but without the discord formatting.
Example
Command:
Response:
This is text with my custom emoji <my_emoji:1234567890>
You can then put the full disambiguated version in your bot text.
Uploading Data
Now that you have the data, you'll need to send it to FeedbackBot. There are a few different options for how to do that.
Uploading via Discord
Uploading through Discord is a manual process, but is the most straight forward if your data does not change often. Simply use the /admin lookup upload
command and attach your data JSON file.
Uploading via HTTP
If your data changes frequently, it can be convenient to integrate the data update into your game or your build process. You can upload lookup data directly to FeedbackBot by submitting an HTTP PUT
request along with your JSON data to https://www.discordfeedbackbot.com/upload/
. Your request must include your auth token in the header, like so:
Authorization: Bearer <YOUR_TOKEN>
Content-Type: application/json
If you're making software that is distributed to other people, be sure you DO NOT INCLUDE your Auth Token in files that are available to the public.
Specifying Development Stage
To upload data for the Alpha or Beta development stages, simply add the development_stage
query parameter to the upload url when uploading:
- Alpha:
https://www.discordfeedbackbot.com/upload/?development_stage=alpha
- Beta:
https://www.discordfeedbackbot.com/upload/?development_stage=beta
Example HTTP Upload Script
I've created an example Python upload script. The script will prompt you for the Auth Token and JSON file to upload, or you can modify the script and prepopulate those fields. You can use this script as a guide for implementing your own uploader, or incorporate it into your build tools for convenient automatic game data updates.
Confirming the Upload
FeedbackBot requires you to manually approve uploads before they are made public. This is to prevent accidental uploads from leaking "spoiler" type information, and to prevent abuse if your upload credentials are exposed.
After you upload data to FeedbackBot, you must run /admin lookup manage_uploads
, you will then be prompted to approve, view, or delete the changes.
Once the changes are approved, the lookup commands will be available to everyone on your server. If you used the example JSON above, the commands /weapon
and /item
would be added, and could be used like: /weapon wooden sword
, or /item Mega Potion
.
New Upload Alerts
FeedbackBot can post a message whenever new lookup data is uploaded. Use the /admin lookup set_upload_notification_channel
command to designate a channel (or webhook) where new upload notifications should be posted. If you specify a channel, you will need to grant FeedbackBot the "Manage Webhooks" permission so it can create a webhook (it will prompt you to do so).
FAQ & Troubleshooting
If you need help with FeedbackBot, please join the FeedbackBot Development Discord, I'll be happy to help or answer any questions you have.
How do I limit the use of FeedbackBot's commands?
In Discord, go to Server Settings
> Integrations
> FeedbackBot
. This menu gives you full control over who can use FeedbackBot, the channels it can be used in, and allows you to modify those settings for each command individually.
More information is available here: https://discord.com/blog/slash-commands-permissions-discord-apps-bots
Warning: The /admin
command should always be limited to approved users or channels. As an added precaution, if your server has a #fbb-admin
channel, admin commands will only work in that channel, even if your server settings allow /admin
commands to be used anywhere. This is to prevent issues like accidentally making the /admin
commands public, or the time Discord broke their permissions system and made all commands public.
There are no slash commands
If you don't see any available slash commands for FeedbackBot, it means that it was not granted the proper permissions when it was added to your server. In particular the "Application Commands" scope must be granted for FeedbackBot slash commands to be available. Please grant FeedbackBot permissions using this link.
- If for some reason it is still not working, another bot might be overriding it's permissions, if that's the case, try inviting it with this link, which will give it Administrator permissions.
What about privacy?
FeedbackBot does not store any messages, ever. The FeedbackBot database only stores the number of feedback messages, not their content. FeedbackBot will not advertise to you. It doesn't track users or send DMs unless directly messaged. The only data it stores is a configuration for your Discord server, and game data if you upload it.
Can I make feedback private?
You can make FeedbackBot's replies to specific keywords visible only to the person that submitted them using them (see the Keywords section for more info). When that feedback is copied to it's destination channel, it will still tell you which user submitted the feedback, so people with the Feedback Viewer
role and server Administrators will still know who submitted the feedback. There is no way to have "truly anonymous" feedback.
How do I change FeedbackBot's name?
In your server on Discord, you can right click FeedbackBot and select "Change Nickname".
Emoji aren't working in my bot responses
Discord bots must use disambiguated versions of emoji when putting them in messages. To find the disambiguated version of your emoji, you can use the /admin echo
command, which will repeat what you say, but without the discord formatting.
Can FeedbackBot export to Google Sheets/JIRA/Trello/etc?
Currently no, and there are no plans to add such support. This request has come up a few times, and I'm hesitant to work on it for a few reasons:
More dependencies, more problems.
For every new service that FeedbackBot could export data to, there's a whole variety of ways that each of them could break. APIs change frequently, and the more external services that FeedbackBot interacts with, the more susceptible it is to being broken by a 3rd party change. In addition to that, integrations with 3rd party services will significantly increase the number of dependencies that FeedbackBot uses. Currently FeedbackBot uses a relatively small 21 dependencies, but adding just Google Sheets support would involve an additional 42 dependencies, a 200% increase. More dependencies means more chance for breaks/changes/incompatibilities as permanent part of maintaining FeedbackBot.
Per-project customization.
Another confounding factor is that each new supported service opens the door up to even more complexity. If I added Google Sheets export, it's reasonable to then ask to be able to customize the format of that export. Some people might want a specific set of columns in a specific order, others might want different columns in a different order. Same with other issue tracking tools like JIRA, people might want a specific list of components, or labels, or subprojects. There's just too many dimensions of customization available for FeedbackBot's support of 3rd party services to be up to the requirements of the users, or my personal standards.
FeedbackBot has a defined, limited scope.
Something I personally find really valuable as the developer of FeedbackBot is that the project's scope is well defined: "It is a bot that helps people filter down to just the feedback from their Discord servers, so feedback is easy to keep track of". Integration with 3rd party services increases that scope to a potentially infinite amount of work, since the issue tracking software market isn't static and new tools are being made all the time.
The "sanctity of the issue tracker".
This one is a bit more philosophical, but here goes: From my experience working in the software industry, I actually think it's a bad idea for user feedback to go directly into the same place you track your real development tasks. A lot of user feedback is low quality in isolation, duplicates other feedback, and some of it would be actively harmful to your projects if implemented verbatim. The idea that feedback would go directly into your issue tracker and mix with your "real" tasks seems like a recipe for disaster in my opinion, as even the most thorough processes (triage, etc) break down occasionally. It's for this reason that I find the step of having to manually look at the feedback in Discord before it makes it to your official todo list is actually beneficial for most people.
Can I use FeedbackBot at my company?
Yes! (with some small caveats)
- If your project makes a comfortable profit and you find FeedbackBot valuable, I would appreciate your support on Patreon. If you believe it saves even 1 hour of work per month that's worth at least a couple bucks, right?
- If your company has annual revenue of $50 million or more, you will need to purchase an Enterprise License for long-term FeedbackBot use. Contact me via Discord to discuss payment options.
- If your company does active harm to people or the planet, or engages in illegal activity, I would ask that you please do not use FeedbackBot, and also please find another line of work.
What is FeedbackBot built with
FeedbackBot is build with NodeJS in Typescript, using DiscordJS, MongoDB, and runs on Heroku.
This website and the lookup data upload functionality are built with all of the above, plus 11ty, Netlify Functions, and run on Netlify
This is great! How can I support it?
Thanks so much! If you like FeedbackBot, please join the FeedbackBot Development Discord and let me know how it has helped you with your project.
If you want to support FeedbackBot with money in addition to positivity, you can donate at the links below: