Stock Bot


FAQ

General


Bot

How does the bot work?
What language is the bot written in?
Is the bot code open source?
Can I change the bot's avatar?
Is it really free?
Why do you offer it for free?
Are you monitoring messages in my chat room?
Are you monitoring messages sent to bot by direct message?
Is any message data from my chat room being saved?
How do I customize the bot?
Can I send a donation?
Can I help develop the bot?

Terms of Service

What are the bot's terms of service?
Do I need to agree to the terms of service?
Do I need to agree to terms of service for each server I am in?
How do I agree to bot's terms of service?
What if I did not get a direct message from bot with instructions?
What if the terms of service change?
How will I know if and when the terms of service change?
What if I have a question regarding the terms of service?

Commands

Do I need to agree to TOS before a command is processed?
How do I type a command?
Where can I view a list of commands?
Can you add a command that does ...?
How can I enter a symbol traded on an exchange outside of United States?
Why do I have to enter some command parameters like s=GOOG?
Why not make simpler command names?
Why does the bot respond with a blank message?

Aliases

What are command aliases?
Can I add/remove an alias?

Data

Is the data real time?
Where does the bot get the data?
How to get bot to stop/start using data?

Support

How do I get support for the bot?
Can a support person join my server?
What happens when members send the bot a direct message?
What happens when members mention the bot?
Can you write a custom bot for me?
What is SB Monitor?
How can I determine if a member named StockBot Support is official or an impersonator?
How can I determine if a bot named StockBot is official or an impersonator?
Are members or bots allowed to use the same or similar member name as StockBot?

Users

User Interface

How do I access the user interface for the bot?

Watchlists

What are watchlists and how do they work?
How do I create my own watchlist?
How can I setup some watchlist defaults?
How do I edit my own watchlist?
How do I delete my own watchlist?
How do I view other members watchlists?
How do I view my own watchlist?

Administrators

Adding To Server

How do I add bot to my server?
Can I add bot to multiple servers?
Can I add bot to any server?
Can I add bot to a server that charges money?
How can I have the bot ignore certain channels?
Can I change permissions before or after adding bot?
How do I properly configure the bot's permissions?

Administrative Interface

How to customize bot for a server?
How to navigate the administrative interface?
How to extend my session?
How to save my settings?
How to log out of administrative interface?
How to access the error log?
How to restore defaults to administrative interface?
How to get my server featured in !servers command output?
How to get the bot to ignore certain channels?
How to restrict access to administrative interface?
How to setup word detection?

Commands

Can I add/remove a command prefix?
Can the bot delete members posts that are bot commands?
Can I enable/disable commands?
Can I add/remove command aliases?

Members

Can I enable, disable or customize a member message?
Can I change which channel member messages go to?
Can I have channel member messages auto delete after period?
Can I auto assign roles to members on join?
Can I log member messages?
Can I detect certain words in member messages?

Market Alerts

What are market alerts?
How can I add, pause, delete a market alert?
Why was a market alert paused?
Can market alerts be auto deleted?
Can you add a market alert that does ...?

Custom Alerts

What are custom alerts?
How can I add, pause, delete a custom alert?
Why was a custom alert paused?
Can custom alerts be auto deleted?
Can I add a custom alerts that does ...?

Advanced Aliases

What are advanced aliases?
What is a default advanced aliases?
What is a standard advanced aliase?
What is a chained advanced alias?
What is a RSS advanced alias?
What is a custom output advanced alias?
What is another bot's command advanced alias?
What is a Google Sheet advanced alias?
What is a Image advanced alias?

Common Errors

How come the error I see is not listed?
What does 500 Internal Server Error mean?
What does 502 Bad Gateway mean?
What does DiscordAPIError: Missing Permissions mean?
What does DiscordAPIError: Unknown Message mean?
What does DiscordAPIError: Invalid Form Body Must be 2000 or fewer in length mean?
What does Channel Not Defined mean?

Removing

How do I remove the bot from my server?
What happens to any customizations when it is removed?
Bot was accidently removed, how do I add it back?
Can I pause the bot?

General

Bot

How does the bot work?

The bot is composed of commands and alerts.

For commands, the bot monitors messages in a server and direct message to it and when it sees a message it identifies as a command, it responds with the requested data. It identifies a command by the command prefix and a recognizable word. For example !quote GOOG where ! is the command prefix and quote is the command. That particular command would retrieve a quote of Google's stock. For a list of commands, click here.

Alerts are messages the bot can send out automatically to a server if the server administrator configures it to do so. Members of a server with moderator type permissions can enable/disable alerts by visiting the administrative page for the bot. There are two kinds of alerts, market alerts and custom alerts.

Market alerts are messages that are sent out on a set schedule for common market events. For example, when an exchange opens and closes or when trading of a stock is halted or resumed.

Custom alerts are messages that are sent out on a specific date or recuring schedule set by the server administrator and may include the content of a command, RSS feed or custom message.

Back To Top

What language is the bot written in?

The bot is written in Javascript using the discord.js library.

Back To Top

Is the bot code open source?

Not at this time.

Back To Top

Can I change the bot 's avatar?

Unfortunately that is not possible for hosted bots such as this. You would need to create and host your own bot in order to change the avatar.

Back To Top

Is it really free?

Yes, there is no charge to install or use the bot.

Back To Top

Why do you offer it for free?

The bot was written as a programming exercise and as a way to promote another free product named PortfolioSheet which is a Google spreadsheet to help one manage their investments.

Back To Top

Are you monitoring messages in my chat room?

No individual is monitoring messages seen by the bot that are posted in any Discord chat server. The bot itself however has to monitor messages in order to identify any that may be commands so it can respond to them.

Sometimes the author of the bot visits Discord servers using the bot due to a mention of the bot or otherwise and may post replies relating to the bot or other subject but this is never due to the author or anyone else monitoring what messages the bot sees on its own as those are unmonitored.

Back To Top

Are you monitoring messages sent to bot by direct message?

No individual is monitoring messages sent to the bot by direct message that are a recognied command. The bot itself however has to monitor messages sent to it by direct message in order to identify any that may be commands so it can respond to them.

Messages that are not recognized commands are forwarded to a support representative for review since they are often questions regarding the bot. Questions sent to the bot by direct message that are forwarded to a support representative can only be responded to if support representative and the message author are members of the same server.

Back To Top

Is any message data from my chat room being saved?

Message data may be temporarily logged for troubleshooting purposes or to provide service features such as to compile the most popular symbols used and seen by the bot for the bot's !popular command. Data used in aggregate is not sold or otherwise shared with any third parties.

As per Discord' s API terms of service, any personally identifiable information needed to be logged is encrypted and only kept as long as is needed for service to function. For more details, please review our terms of service and privacy policy.

Back To Top

How do I customize the bot?

The bot can be customized at the server and user level. For details on how to customize the bot at the server level click here. For details on how to customize the bot at the user level, click here.

Back To Top

Can I send a donation?

While it is appreciated that you would want to do so, we do not accept any kind of payments or other gifts. You are welcome to contribute your time and effort to help improve the bot.

Back To Top

Can I help develop the bot?

Yes, if you would like to volunteer your time and effort towards support and future development of the bot, your help would be appreciated. First, become a member of the Stock Bot Discord server if you have not already by visiting the URL below.

https://discord.gg/fVhwwRe

Then send a direct message to member Stock Bot Support specifying one or more of following areas you are willing to help with. You will be assigned a role in the server for the specified area(s) which will give you access to private channel(s).

Trainer: Provide help in Stock Bot' s Discord server or other servers relating specifically to command usage and customizations of admin and user interface for Stock Bot.

Beta Tester: Help test unreleased features and commands. Your feedback and suggestions at this stage can help determine how commands will work when released.

Moderator: Help moderate the Stock Bot server.

Back To Top
Terms of Service

What are the bot's terms of service?

The bot's terms of service are a set of terms under which usage of our bot and associated site are subject to. The terms of service can be read on the following page.

stockbot.us/tos

Back To Top
Do I need to agree to the terms of service?

Yes, in order to use the bot and site, you must agree to the terms of service. Some bot and/or site features will not function until you have agreed to the bot's terms of service.

Back To Top
Do I need to agree to terms of service for each server I am in?

No, your agreement to the terms of service applies to all servers that the bot is in. So when you agree to the terms of service in one server, that agreement covers all other servers you are currently in or may join in the future.

Back To Top
How do I agree to bot 's terms of service?

When you use certain commands in a server, the bot will try to send you a direct message containing instructions on how to agree to the terms of service. Simply follow the instructions in the direct message. Essentially the instructions ask you to review the terms and if you agree with them, type the following as a reply to the bot.

!tos bot agree

If for some reason you do not get a direct message from the bot containing instructions, please see the next FAQ for an alternative way to review and agree to the terms of service.

Back To Top
What if I did not get a direct message from bot with instructions?

There are a few reasons why the bot may not have been able to send you a direct message containing instructions regarding our terms of service. For example, if at Discord you have your User Settings > Privacy & Safety > Server Privacy Default > Allow direct messages from server members toggled off.

Whatever the reason may have been, you can alternatively do the following if you do not automatically get a direct message from the bot.

1) If you are already a member of the StockBot support Discord server, temporarily leave our Discord server.

2) Then go to User Settings > Privacy & Safety > Server Privacy Default > Allow direct messages from server members and make sure it is toggled in the on position. You can change it back after rejoining our server if desired.

3) Join the bot's support server at URL on following page.

stockbot.us/support/

4) After joining, right click the bot member name from any message from bot or in Members column on right side.

5) Select Message from the menu displayed.

6) Send the following command in your message to the bot.

!tos bot

7) Follow the instructions in the direct message you receive from bot. Essentially you need to review and agree to the terms of service by sending the following reply to the bot.

!tos bot agree

If you have any issues, please get in contact for further assistance by going to the Info > contact channel in StockBot server listed on following page.

stockbot.us/support/

Back To Top
What if the terms of service change?

If material changes are made to the terms of service, you will need to agree to the terms of service again using the same process as before.

Back To Top
How will I know if and when the terms of service change?

If and when there are material changes to the terms of service the following will occur.

1) The date of the last material change will be updated at the bottom of the following page.

stockbot.us/tos

2) An announcement may be made in our Discord server in the Announcements category and/or on our web site on the announcements page.

3) You may receive a message in the administrative or user interface notifying you of such.

4) You may be prompted to agree to the terms of service again after using a command that requires such.

Back To Top
What if I have a question regarding the terms of service?

If you have any questions about the terms of service, please click the contact link at the bottom of any page on our site to ask your question and we will be happy to get back to you with an answer.

Back To Top

Commands

Do I need to agree to TOS before a command is processed?

With the exception of a few commands, you may need to agree to the bot's terms of service (TOS) before a command may be processed. This only needs to be done one time and your agreement applies to all servers the bot is in. To do so you must type the following in a direct message to the bot.

!tos bot agree

Back To Top
How do I type a command?

A command can be typed into a text channel or a direct message to the bot. Commands start with a command prefix. The command prefix by default is an exclamation point ! but may have been changed by the server owner. Commands sent by direct message to the bot will always work with an exclamation point. After the command prefix, you would enter the command name or alias. For a list of commands, click here.

Some commands require a parameter such as one or more ticker symbols. Some commands support optional parameters such as the number of results to return.

Back To Top
Where can I view a list of commands?

For commands supported by direct message, click here. For commands supported in a particular server, type !help as the commands available may have been customized in a server.

Back To Top
Can you add a command that does ...?

If there is a command you would like to see added, you are welcome to get in contact to suggest it.

Back To Top
How can I enter a symbol traded on an exchange outside of United States?

You can type the !symbols command to see the list of support symbol formats for different exchanges. If the exchange you want is not listed, please get in contact and we will see if it can be added.

Back To Top
Why do I have to enter some command parameters like s = GOOG?

If a command only takes one parameter, say a stock symbol, then it is technically possible, although may not always be supportted, to enter a parameter such as a symbol without something like s= in front of it as the bot is only expecting one parameter so knows it must be a symbol.

For commands that have multiple parameters though, users may not enter them in the right order or may but not use all of them so the bot has no way to know which parameter is for which purpose and thus adding an identifier before each tells the bot what each parameter is intended for.

If you don't like having to add alot of parameters each time, that is what advanced aliases are for. You can turn a command with lots of parameters into a short command alias that is much easier to remember and type. Advanced aliases are currently supported at the server level so a Administrator or moderator of the server would need to login to the administative interface to create one or more of them.

Back To Top
Why not make simpler command names?

The question is often asked why some commands require one or more parameters instead of just hard coding them into a shorter command name. For example instead of typing

!c3m GOOG

for a 3 minute chart of symbol GOOG, one might need to type

!chart2 GOOG i=3m

It is a fair question and one for which there is both a reason why and a solution.

- Reason

Taking the above example, lets say the chart source allows specifying between 1-60 minutes as the interval. If a bot author were to create a command for each combination, that is 60 commands, c1m, c2m, c3m, etc. which programatically is not efficient. This does not even take into consideration other command parameters that one may want to use on the same chart like candle stick or line chart, chart period, moving averages and so on and so on. The number of possible combinations could easily reach into the 100s or 1000s of commands that would need to be created for all the possible parameter combinations for that one single command.

Thus it is more efficient from a programming standpoint to create one command like say named chart2 for a single chart source and then offer one or more optional parameters. This offers the most flexability since one command with different parameters can output 100s of different results. Is it easier for users to type, perhaps not, but there is a solution to that.

- Solution

There are a couple solutions depending on what you are trying to do. If a command does not have any or many paramaters, those with permissions, can login to the bots administrative interface and create a simple alias. So for example instead of having to type:

!chart2 GOOG
!chart2 GOOG i=3m

one could create an alias for the chart2 command of say c2 or something simple so that they would then only need to type:

!c2 GOOG
!c2 GOOG i=3m

So that shortens the command name, what about not having to type the parameters like i=3m you may ask. For that, those with access to administrative interface can create what are called advanced aliases which enable one to hard code one or more paramters. So for example one could create an advanced alias named c3m containing

chart2 <param1> i=3m

Then when one in chat types:

!c3m GOOG

the bot will know to execute

chart2 GOOG i=3m

You can even chain together up to 5 advanced aliases so for example you could make a single advanced alias that gets a chart, news, price all in one short advanced alias name. To learn more about how you can use advanced aliases, click here.

Back To Top
Why does the bot respond with a blank message?

This is most likely due to the bot's message style settings for the server you typed the command in set to embedded but your settings at Discord have embedded types of messages disabled. To fix, try one of the following.

If you wish to see embedded messages, do the following:

Step 1

1) At Discord, click the gear icon in lower left next to your member name to access your user settings.
2) Click on Text & Images in menu on left.
3) In the section named Link Preview, toggle on the option named "User Settings > Text & Images > Link Preview > Show website preview info from links pasted into chat.".
4) Click the X in upper right to exit screen and see if that has fixed the issue.
5) If the above has not fixed the issue, continue below otherwise no need to continue.

Step 2

Ask a moderator or server administrator if the highest role that you are assigned has Embed Links permission toggled on. This can be done in @everyone role or a special role but it must be in the highest role you are assigned. By default this is toggled on in everyone role but may have been changed by a server administrator and is required in order to see embedded messages.

If you do not wish to see embedded messages or the server owner has disabled the permission explained and Step 2, continue below to the next step.

Step 3

1) Type the user command.
2) Click link in direct message from bot.
3) Go to user Settings > Message Style section of menu in left column.
4) Set message style to Standard and click Save button.
5) Return to server and type a command to see if it fixed issue. If step 3 did not help, it is possible the owner of the server has not allowed you to override the server's message style setting. In this case, you will need to either request they do so or send your command to the bot in a direct message.

Note To Server Administrators

It is highly recommended you visit the administrative interface to check your message style settings and allow members to override your server's message style settings with their own preference.

1) Type the admin command in a text channel of your server.
2) Click the link sent to you by the bot by direct message.
3) In the menu on left, click Server Settings > Message Style.
4) Click Yes next to the option to allow member preference.
5) Click Save.

Back To Top

Aliases

What are command aliases?

Command aliases are alternative ways to run a command. For example, the command chart1 could be accessed by a command alias one adds of say c1.

Back To Top
Can I add / remove an alias?

If you have access to the administrative interface for a server, you can add and remove aliases from most commands.

Back To Top

Data

Is the data real time?

Depending on the source of the data it may be delayed from 0 to 30 minutes. The source of data for any one command or market alert may be rotated so the delay, if any, may not always be the same.

Back To Top
Where does the bot get the data?

Data is retrieved from over a dozen sources depending on a number of static and dynamic factors including the command, market alert, time of day, server load, availability, etc.

Back To Top
How to get bot to stop / start using data?

If you would like the bot to stop using data from your site or modify how the data from your site is displayed or attributed, simply contact us from an email address related to the source of data and we will remove your site as a source or modify how the data is displayed.

If you would like the bot to start using data from your site, simply contact us from an email address related to the source of data and we will be happy to consider adding your source of data into the bot.

Back To Top

Support

How do I get support for the bot?

If you are in need of support relating to the bot, you may obtain such by visiting the bot's own Discord server at https://discord.gg/fVhwwRe and reading the Info > Support channel for instructions.

Back To Top
Can a support person join my server?

Yes, if you would like Stock Bot support within your own server, visit the StockBot server at https://discord.gg/fVhwwRe and add a non expiring link to your Discord server as per instructions in the Servers > Info channel. A member with name "StockBot Support" will join your server.

Back To Top
What happens when members send the bot a direct message?

If the message starts with a command, the bot will reply with the command response except in the case if the command was test or an alias of it in which case the message will be ignored as intended.

If the message does not start with a command, an automated reply will be sent with general help info and the member's message will be forwarded to member Stock Bot Support for review. If the sender of the message and Stock Bot support are both members of any server, Stock Bot support will be able to reply to the message sender if requested, otherwise Discord will not allow us to reply.

This is why it is useful for member Stock Bot Support to join your server as otherwise we may be unable to reply to direct messages sent to Stock Bot from your server's members.

Back To Top
What happens when members mention the bot?

The mention is forwarded to member Stock Bot Support. If Stock Bot support is a member of the server in which the mention was made, we will be able to visit the server and reply to the mention if appropriate.

If Stock Bot support is not a member of the server in which the mention was made, we will not be able to access the server in order to post any reply.

This is why it is useful for member Stock Bot Support to join your server as otherwise we will be unable to reply to mentions of Stock Bot in your server.

Back To Top
Can you write a custom bot for me?

Unfortunately programming services to write a custom bot are not currently available. You are always welcome to get in contact though to request a new command, market alert or other bot feature.

Back To Top
What is SB Monitor?

SB Monitor is a bot that runs in the Stock Bot server that monitors if Stock Bot is online or not. If it finds Stock Bot is not online, it will notify support so they can look into it and will send a message to the Stock Bot general channel to notify users that Stock Bot is down and support has been notified.

Back To Top
How can I determine if a member named StockBot Support is official or an impersonator?

If a member named StockBot Support sends a message in any server or by direct message their member name will display one of the following when clicked on.

StockBot Support#0085
StockBot Support#8370

If their member name displays anything else, they are not an official StockBot support representative.

Back To Top
How can I determine if a bot named StockBot is official or an impersonator?

If a bot named StockBot sends a message in any server or by direct message their member name will display one of the following when clicked on.

StockBot#3314

If the member name displays anything else, it is not the official StockBot bot.

Back To Top
Are members or bots allowed to use the same or similar member name as StockBot?

The bot's terms of service do not allow other members or bots to have member names or nicknames that are the same or similar to StockBot when StockBot is a member of a server.

While we understand the majority of those who do such do so for humor and mean no harm, unfortunately there are others who try and impersonate StockBot to manipulate other members for thier own profit and/or to negatively affect StockBot's reputation. To protect a server's members from such and prevent any confusion with the official StockBot bot and/or StockBot Support representatives member names, we do not allow such.

The first time such is detected the member's message is deleted and a direct message is sent to member to remind them of the bot's terms of service and to give them the opportunity to resolve issue before posting another message. Issue can be resolved by any of the following:

1) Change member name, and nickname if set, to one not containing or similar to StockBot.

2) Leave any servers containing StockBot.

3) Remove StockBot from any servers that member wishes to continue sending messages in with a member name containing or similar to StockBot.

Failure to do one of the above will result in one or more of the following actions on subsequent messages sent by member.

1) Member's messages will continue to be deleted in servers containing StockBot.

2) Member eventually being kicked from the server the messages are being sent in.

3) Member eventually being blocked from using StockBot in all servers.

The terms of service also prohibit removal of required permissions from the StockBot role that enable the bot to detect and act on such occurances as specified above. These permissions include Manange Messages (to delete member's messages) and Kick Members (to kick member after they have ignored DM with instructions to resolve).

If a member does not resolve matter on their own as per above and the bot does not have the required permissions to deal with the issue on its own, an attempt to contact the server owner or a moderator will be made to notify them of issue. Failure to resolve issue within 24 hours of notificaiton will cause the bot to be removed from server and blocked from being readded.

Back To Top

Users

User Interface

How do I access the user interface for the bot?

If you are a member in a server that uses Stock Bot, you can customize how the bot works for you by typing !user in a direct message to Stock Bot or text channel of a server that uses Stock Bot. A direct message will be sent to you containing a link to a web page where the bot can be customized. User level customizations are new so the only customizations you can make at this time relate to the watchlist command.

Back To Top

Watchlists

What are watchlists and how do they work?

Watchlists are a collection of records created by individual members containing stocks the member would like to trade or at least keep track of. Each record must contain at least a symbol and position of long or short although there are additional optional details that can be provided.

A full watchlist record is ment to represent ones entry transaction to get into a stock and ones exit transaction to get out of the stock. Depending on the visibility of the record when created it may be visible to only the creator or anyone in a server that uses Stock Bot.

Back To Top
How do I create my own watchlist?

A member's watchlist is made up of watchlist records. A record can be added in one of two ways.

1) A member can add a record with all optional fields by visiting the user interface and selecting Watchlist in the menu on the left side of page.

2) A member can enter a record with limited optional fields by message by using the following format.

!watchlist add symbol position entryPrice exitPrice entryStopLimitPrice exitStopLimitPrice

All fields after symbol are optional. If you want to skip an optional parameter AND enter a parameter after the skipped parameter, enter a 0 for the skipped parameter.

If you skip a parameter by substituting 0, the default you have defined in user interface will be used. If no default has been defined by you, the global defaults will be used which are below.

Position: Long
Visibility: All
Show Member Name: Yes
Allow Lookup By Member Name: Yes
Entry Order Type: Limit
Exit Order Type: Limit

You can enable/disable the display of details of the record added by message in the user interface Watchlist defaults section.

Back To Top
How can I setup some watchlist defaults?

You can set some default values for added watchlist recordss by visiting the user interface.

Back To Top
How do I edit my own watchlist?

Watchlist records can be edited by visiting the user interface. You can optionally delete an existing record and readd it with the new details.

Back To Top
How do I delete my own watchlist?

Watchlist records can be deleted by visiting the user interface or by message in the following format. When deleting by message you must provide at least the symbol, the other details are only required if more than one record matches.

!watchlist delete symbol position entryPrice exitPrice
!watchlist deleteall

Back To Top
How do I view other members watchlists?

You can view other members watchlist records in three ways.

1) To show all watchlist records eligible to show for the current server ...

!watchlist

2) To show all watchlist records eligible to show for all servers using Stock Bot ...

!watchlist s=all

3) To show all watchlist records eligible to show for the member specified.

!watchlist @memberName

Back To Top
How do I view my own watchlist?

You can view your own watchlist records in one of two ways.

!watchlist @myMemberName
!mywatchlist or !mywl

Back To Top

Administrators

Adding To Server

How do I add bot to my server?

You can add the bot by following the instructions on the page below:

stockbot.us/addbot

Back To Top
Can I add bot to multiple servers?

Yes, it may be added to multiple servers.

Back To Top
Can I add bot to any server?

The server or a channel within it must be related to investing.

Back To Top
Can I add bot to a server that charges money?

Yes, so long as the bot is accessible in at least one channel of the server that does not require any payment to access.

Back To Top
How can I have the bot ignore certain channels?

You can do so in the admin interface in the Ignore Channels section. Please use this method instead of the much more complicated task of modifying and maintaining the bot's permissions in each of your channels to allow/disallow the bot from posting.

Back To Top
Can I change permissions before or after adding bot?

While you may, it is not recommended as doing so may cause some commands to not work. For more details, click here.

Back To Top
How do I properly configure the bot 's permissions?

Please see below for information on configuring permissions of the StockBot role.

Recommended Configuration

To insure access to all current and future bot features and commands, it is highly recommended when adding or configuring the bot's permisisions in the Server Settings > Roles section of Discord, the StockBot role be given all permissions, including Administrator and after adding, the StockBot role, if needed, is dragged with your mouse above any other roles that do not have the Administrator role enabled .

If you have done so, you will not have any permissions related issues and there is no need to continue reading this section. There are a number of reasons why Administrator permission is recommended including that it offers the most support for current and future commands and it overrides channel level permissions which are often misconfigured and can prevent the bot from working. Great care has been taken to not have any bot command or feature that would delete your server, channel or roles so you can add the Administrator and all other permissions without having to worry about the bot doing something to mess up your server.

If for some reason you would like to remove some permissions from the StockBot role, please make sure to read below or Stock Bot will be removed from your server without warning.

Required For Addition To Server

Stock Bot requires a minimum number of permissions at the server level in order to be added to and stay in your server. Failure to keep the following permissions in the StockBot role before and after adding it to your server will cause StockBot to be automatically removed from your server without warning.

Permission: Read Text Channels & See Voice Channels (AKA Read Messages on permission list when adding bot)
Reason: Needed to check messages sent in text channels to see if they contain a recognized command and should trigger a response to be sent to server.

Permission: Send Messages
Reason: Needed to send a message in reply to a recognized command entered by a server member. If you want to restrict StockBot replies in certain channels, use the Server Settings > Ignore Channels feature in the admin interface to do so rather than doing so by modifying the bot's permission to Send Messages.

Permission: Manage Messages
Reason: Needed for StockBot to delete messages from members trying to impersonate StockBot or a StockBot representative by having the same or similar member name which is not allowed.

Permission: Kick Members
Reason:: Needed for StockBot to kick members trying to impersonate StockBot or a StockBot representative by having the same or similar member name which is not allowed. Members are given one warning before being kicked.

Permission: Create Instant Invite
Reason: Needed so that a service representative can periodically visit any server in which the bot has been added in order to confirm compliance with the bot's terms of service. This is done by the bot creating an invite, if none are available, when needed for the exclusive use by a Stock Bot representative. The invite will not be shared or posted publically.

Required By Features & Commands

Some features and commands will not work without proper permissions. Some of these include the following.

Permission: Read Messages
Reason: Needed to determine if a message is a recognized command and should trigger response be sent to server.

Permission: Read Message History
Reason: Needed by purge command to delete messages made before bot was added to server.

Permission: Send Messages
Reason: Needed to send a message in reply to a recognized command entered by a server member. If you want to restrict StockBot messages in certain channels, use the Server > Ignore Channels feature in the admin interface to do so rather than doing so by modifying the bot's permission to send messages in each channel.

Permission: Manage Messages
Reason: Needed to delete market alerts, custom alerts and messages sent by bot on member actions (join/leave/kick/ban/unban) if enabled and set to be deleted after X minutes. Needed to delete member messages that are commands if that feature is enabled. Needed by purge command to delete messages.

Permission: Attach Files
Reason: Needed for commands that send images such as any of the chart commands.

Permission: Manage Roles
Reason: Needed by roles and points command to add and remove roles. Needed by assign roles on join and assign roles on point level features.

Permission: View Audit Log
Reason: Needed to determine if a member left on their own or was kicked so that the appropriate message can be sent if that feature is enabled.

Permission: Kick Members
Reason: Needed by kick command. Needed by word filter feature to kick members when that option is enabled.

Permission: Ban Members
Reason: Needed by softban and ban command. Needed by word filter feature to ban members when that option is enabled.

Notes On Channel Level Permissions

All channels start with the @everyone role which inherits the permissions of the @everyone role at the server level. If you edit the @everyone role at the channel level, the @everyone role permissions at the server level are no longer inherited as it will begin using the edited ones at the channel level and any other roles that do not have Administrator permissions enabled at server level will need to be added to the channel and configured in order to work in that channel.

So if you modify the @everyone role at the channel level in any channel you want Stock Bot to work in and the Stock Bot role does not have Administrator permission, you will need to add the Stock Bot role to the channel level permissions and enable as many permissions as possible. To add the Stock Bot role to a desired channels, click the gear icon to right of channel, select the Permissions section and click the plus icon to add the Stock Bot role. Then tick the green check mark next to all permissions or at the very least:

Read Messages (so bot can read whether a message is a command)
Send Messages (so bot can send responses to commands)
Manage Messages (so bot can delete its own messages if option is enabled)
Read Message History (so bot can delete messages older than when bot was added)

This is required for any channel you want Stock Bot to have very basic operation in.

Verifying Permissions

To verify minimum required permission are setup, type !permissions in one of your text channels and check your direct messages. You can also view the error log in the admin interface to see if there are any permissions related errors.

Back To Top

Administrative Interface

How to customize bot for a server?

To customize the bot for a server you created or are a moderator in follow the steps below to access the web based administrative interface page.

1) Type !admin in a text channel of the server you want to customize. If the command prefix has been changed from the default exclaimation point, use whatever the prefix was changed to before the admin command.

2) A direct message will be sent to you containing:

A) If you are the server creator or you are assigned a role with high enough permissions, a link to access the administrative interface which you need to click on.

B) If you are not the server creator and are not assigned a role with high enough permissions, a message indicating permissions the server creator requires for one to access the administrative page. If this is the case, you may want to request the server creator to assign you to a role with high enough permissions to access the administrative interface.

Back To Top
How to navigate the administrative interface?

Once you have logged into the administrative interface, you can either use the menu on left side of page to click on the section you want to customize or scroll down to that section. You can always return to the top of the page by clicking any of the Top buttons.

Back To Top
How to extend my session?

Administrative sessions automatically expire after 60 minutes of start of session or last save. To extend your session by another 60 minutes you can either click the Save Settings or Extend Session link at top of left menu.

Back To Top
How to save my settings?

To save any changes you have made click any Save button on the page or the Save Settings link at top of menu when available.

Back To Top
How to log out of administrative interface?

If you are accessing the administrative interface on a device shared with others whom you do not know, such as at a library or cafe computer, make sure to click the Logout link in top left column to prevent anyone else from being able to access the administrative interface for your server. Otherwise, your session will automatically expire after 60 minutes of inactivity.

Back To Top
How to access the error log?

When the bot encounters an error interacting with a server, it records details about the error. This error log can be viewed in the administrative interface under the Server Info > Error Log section.

Each error contains the following information when available.

Date of error
Channel
User Message
Discord Error
Description of error
Missing Permission, if any
Help link
Feature Disabled, if any
Link to delete log record

Most errors are permission related and can be resolved by restoring Administrator permission to the Stock Bot role in the Server Settings of your Discord server. For more details, please click here.

Once you have properly configured permissions for Stock Bot you can verify them by typeing the !permissions command in any text channel of your server.

Back To Top
How to restore defaults to administrative interface?

If you would like to restore the default settings to the administrative interface, go to Server Settings > Restore Defaults in the menu in left column.

If there are custom messages you want to reuse, first go to Server Settings > Open In New Window in the menu in left column which will enable you to copy and paste any custom messages back after the defaults have been restored.

Back To Top
How to get my server featured in !servers command output?

To get your server featured in the Featured section of the !servers command output, go to Server Info > Invite Code and enter a non expiring invite code for your server and select that you want the invite link to appear in servers list output.

Back To Top
How to get the bot to ignore certain channels?

Rather than configuring the bot permissions on a channel by channel basis in your server, it is much easier to simply set the bot to ignore certain channels and it will do so.

To enable, go to Server Settings > Ignore Channels section in left menu and check off the channels you want the bot to ignore.

If you want a message sent when a user tries to use a command in one of the channels you have checked, enable sending of the message and provide the message content.

Back To Top
How to restrict access to administrative interface?

By default, access to the administrative interface is allowed by the server creator and any members assigned to a role containing one of the following permissions which are typically assigned to moderators.

Administrator
Manage Server
Manage Roles
Manage Channels
Ban Members
Kick Members
Manage Messages

If you wish to restrict access further, visit the administrative interface and go to the Server Settings > Bot Permissions menu section. In that section you can uncheck any permission below your highest permission to prevent those with the unchecked permissions from accessing the administrative interface. The most secure setting would be to uncheck all but the Administrator permission which is required to remain checked.

Back To Top
How to setup word detection?

If you go to Server Settings > Word Detection you can setup two types of word detection.

Type 1: Enter a list of keywords and a message to send. If a member sends a message containing one of the keywords you enter, the message which you have defined will be sent to the channel.

Type 2: Enter a list of keywords and optionally a message to send. If a member sends a message containing one of the keywords you enter, the members message will be deleted and any message which you have defined will be sent to the channel.

This feature can be used as a swear word filter for bad (type 1) and really bad (type 2) words.

You can also enable logging of the member message that triggers one of your keyword detections. Logging can be expecially useful for type 2 keyword detections since it deletes the member's original message so if not logged there will be no record of it.

Back To Top

Commands

Can I add / remove a command prefix?

Yes, you may add or remove one or more command prefixes by accessing the admin interface. The bot comes with a default command prefix of an exclamation point !. If you would like to change it to something else or add additional command prefixes, you may do so by going to the Commands > Settings> Prefix(s) menu section.

This can be useful if you have another bot that uses the same command prefix as Stock Bot and you would like the bots to use different command prefixes.

Back To Top
Can the bot delete members posts that are bot commands?

Yes, if you would like messages that members type that are commands that Stock Bot recognizes to delete after X seconds, you may do so by going to the Commands > Settings > Delete Commands menu section.

You can also specify channels to exclude so that it does not delete member messages that are commands in certain channels. For example if you have a testing channel, it is benefitial for other members to see what command a member typed in order to get the bot to respond with the output that it did.

Back To Top
Can I enable / disable commands?

Yes, most commands can be disabled in the Commands section of the admin interface.

This can be useful if you have two bots with the same command prefix and same command name and you prefer the command output of a different bot that has the same command name.

Keep in mind if the conflicting name is a command alias and not a command name, you do not need to disable the entire command but instead simply remove the conflicting alias name from the command. See next how to for details.

Back To Top
Can I add / remove command aliases?

Yes, you can add/remove aliases for most commands in the admin interface.

A command alias is an alternative way to provide the bot a command. When used an alias simply redirects to the associated command name.

You can add and remove command aliases for most commands. It is useful way to shorten command names. For example instead of using chart1 command you could add an alias of c1 for the chart1 command and then could type !c1 GOOG instead of !chart1 GOOG.

Command aliases must not be the name of another command, another alias or an advanced alias.

Back To Top

Member Messages

Can I enable, disable or customize a member message?

Yes, in the admin interface you may enable, disable or customize the following kinds of automated member messages.

Message sent to member by DM on joining server.
Message sent to text channel on member joining server.
Message sent to member by DM on leaving server.
Message sent to text channel on member leaving server.
Message sent to text channel on member being muted.
Message sent to text channel on member being unmuted.
Message sent to text channel on member being kicked.
Message sent to text channel on member being banned.
Message sent to text channel on member being unbanned.

You can specify the content of the message to send, the channel to send it to and whether to delete it after X minutes.

In order for the bot to distinguish between a member leaving and getting kicked, the bot needs audit log permission. To insure the bot works with this and all other commands, it is recommened you simply give the bot Administrative permission as described here.

Back To Top
Can I change which channel member messages go to?

Yes, in the admin interface you may specify which channel member messages are sent to.

Back To Top
Can I have channel member messages auto delete after period?

Yes, in the admin interface you may specify after how many minutes a member message will be auto deleted.

Back To Top
Can I auto assign roles to members on join?

Yes, In the Members > Roles On Join section of the admin interface, you can specify what role(s) the bot should assign to new members.

You can also tell the bot to take one of the following actions after a specified period of time.

Change roles to something else.
Delete auto assigned roles.
Kick member.

One example use of this feature is if you wanted to give new members a free trial of a premium role for a period of time, say 7 days. Below is what you would do.

1) Create a role identical to a paid/premium role and call it Trial.

2) Set the bot to auto assign the Trial role to new members when they join.

3) Set the bot to remove the Trial role after 7 days if their roles remain unchanged.

So if the new member updates to a paid/premium role within 7 days, you will have assigned the actual premium role to the new member and removed the Trial role.

So when 7 days goes by, the bot will see that the members roles have changed from the roles originally assigned and thus will know not to make any changes.

For those members that have not upgraded, after 7 days their roles will not of changed since originally assigned and thus the bot will remove the auto assigned Trial role.

Instead of simply removing the Trial role, you could instead set it to assign specific roles after 7 days if no changes were detected which could exclude the Trial role.

Back To Top
Can I log member messages?

If you would like to log direct and channel messages sent when a member joins, leaves, gets kicked, gets banned or gets unbanned you can do so in Member > Log Member Messages section of menu.

This can be helpful if you have those kinds of member meassages set to auto delete after a set number of minutes and you are not around when it happens. This way when you return, you can see any activity you missed from the log even though the original messages have since been auto deleted by the bot.

Back To Top
Can I detect certain words in member messages?

Yes, in the admin interface you may specify two lists of words that the bot can monitor for. Type 1 list will send a message you define to the channel when it detects a member used one of the words. Type 2 list will delete a member's message when it detects it contains a word in the type 2 list and optionally send a message you have defined. The member message can optionally be logged in either case.

Back To Top

Market Alerts

What are market alerts?

Market alerts are optional alerts available to servers with a minimum number of members that can be sent to your server to notify your server members of market related events. These include the following types of events.

Opening and closing of exchanges around the world.
Trading halt activity.
SEC filings.
OTC News.
Breaking market news.

They can be enabled/disabled by going to Market Alerts section of menu. You can specify the channel they should be sent to and whether the bot should automatically delete the message sent by each alert after a period of time.

Back To Top
How can I add, pause, delete a market alert?

Members of a server with Administrator or a moderator type permissions can add, pause, edit or delete market alerts in the admin interface.

Back To Top
Why was a market alert paused?

A market alert may have been paused by another member of your server that has access to the admin interface or automatically by the bot if it did not have proper permission to send and/or delete the market alert. Always type !permissions before enabling a market alert to make sure the bot has permission to send and delete the message.

Back To Top
Can market alerts be auto deleted?

Yes, the message sent by a market alert can be set to auto delete itself in the admin interface after a set number of minutes.

Back To Top
Can you add a market alert that does ...?

You are welcome to contact us with any suggestions on adding a market alert.

Back To Top

Custom Alerts

What are custom alerts?

Custom alerts are optional alerts available to servers with a minimum number of members that can be sent to your server on a one time or recurring schedule. The alerts can be a predefined message that you define or the output of a command, alias or advanced alias.

They can be enabled/disabled by going to Custom Alerts section of menu. You can specify the channel they should be sent to and whether the bot should automatically delete each alert after a period of time.

You could use this for example to send to your server every hour, Monday - Friday, the days most popular symbols or a summary of watchlist entries.

Back To Top
How can I add, pause, delete a custom alert?

Members of a server with Administrator or a moderator type permissions can add, pause or delete custom alerts in the admin interface.

Back To Top
Why was a custom alert paused?

A custom alert may have been paused by another member of your server that has access to the admin interface or automatically by the bot if it did not have proper permission to send and/or delete the custom alert. Always type !permissions before enabling a custom alert to make sure the bot has permission to send and delete the message.

Back To Top
Can custom alerts be auto deleted?

Yes, a custom alert can be set to auto delete itself in the admin interface after a set number of minutes.

Back To Top
Can I add a custom alert that does ...?

You are welcome to add a custom alert containing any of the following:

Message you define.
Supported commands
Advanced Aliases
Another bot's command

All custom alerts are subject to review for compliance with our terms of service.and may be deleted for any reason without notice.

Back To Top

Advanced Aliases

What are advanced aliases?

Advanced aliases are alternative ways to access a command but unlike regular command aliases they can redirect not only to commands but more advanced features such as commands with parameters, multiple (chained) commands, RSS feeds, custom messages, Google Sheet data and images.

Below are the different types.

Default Advanced Aliases

Custom Advanced Aliases

- Command
-- Standard
-- Chained
- RSS
- Custom Output
- Another Bot's Command
- Google Sheet
- Image

See how to's below for more details on each type.

Back To Top

What is a default advanced alias?

Default advanced alias are a type of advanced alias that the bot automatically comes with to make entering some commands easier.

For example, there are over 70 default advanced aliases for the !futures command. An example of which is instead of having to type the following to view oil futures contracts.

!futures c=energies s=crude

members can just type the following default advanced alias

!oil

and the bot will know to execute the following command

!futures c=energies s=crude

They can be enabled/disabled in the Advanced Alias > Defaults menu section of administrative interface.

Back To Top
What is a standard advanced alias?

A standard advanced alias enables those with access to administrative interface to create an advanced alias that runs a command with one or more parameters hard coded into the command.

1) Go to Advanced Aliases > Add Custom in menu.

2) Enter an alias name, no spaces, which can be anything so long as it is not already a command name, command alias or advanced alias name.

It is recommended you use a somewhat unique name as if we develop a command in the future that has a name that matches one of your advanced alias names, the command name will take precedence over your advanced alias name and you will need to edit your advanced alias to have a new name to get it to work again.

3) Select a category which determines which category on the help page the advanced alias will appear under.

4) Enter a brief description which is used on the help page. The command run will already be displayed on help page so this should be a very brief general description.

5) Select Command as alias type.

6) Enter the command, no command prefix. Below are some examples:

Advanced Alias Name: GoogleChart
Advanced Alias Command: chart1 GOOG
Actual Usage: !GoogleChart
Command Run: !chart1 GOOG

Advanced Alias Name: GoogleNews
Advanced Alias Command: news GOOG <param2>
Usage: !GoogleNews 5
Command Run: !news GOOG r=5

Advanced Alias Name: MonthlyChart
Advanced Alias Command: chart1 <param1> p=1m
Usage: !MonthlyChart FB
Command Run: !chart1 FB p=1m

Standard advanced alias commands must be a command name not an alias and should not include a command prefix. You can use the <param1> placeholder to represent the symbol one types in after the command and the <param2> placeholder to represent the number of results desired if the command supports such.

Back To Top
What is a chained advanced alias?

A chained advanced alias is the same as a standard advanced alias except you can specify up to 5 commands separated by a | character.

1) Go to Advanced Aliases > Add Custom section of menu.

2) Enter an alias name, no spaces, which can be anything so long as it is not already a command name, command alias or advanced alias name.

It is recommended you use a somewhat unique name as if we develop a command in the future that has a name that matches one of your advanced alias names, the command name will take precedence over your advanced alias name and you will need to edit your advanced alias to have a new name to get it to work again.

3) Select a category which determines which category on the help page the advanced alias will appear under.

4) Enter a brief description which is used on the help page.

The command run will already be displayed on help page so this should be a very brief general description.

5) Select Command as alias type.

6) Enter the commands, no command prefix, separated by a | character. Below are some examples:

Advanced Alias Name: GoogleChartNews
Advanced Alias Command: chart1 GOOG|news GOOG
Actual Usage: !GoogleChartNews
Command Run: !chart1 GOOG then !news GOOG

Advanced Alias Name: MonthlyChartNews1
Advanced Alias Command: chart1 <param1> p=1m|news <param1>
Usage: !MonthlyChart1 FB
Command Run: !chart1 FB p=1m then !news FB

Advanced Alias Name: MonthlyChartNews2
Advanced Alias Command: chart1 <param1> p=1m|news <param1> <param2>
Usage: !MonthlyChart2 FB 5
Command Run: !chart1 FB p=1m then !news FB r=5

Chained advanced alias commands must be command names not aliases and should not include a command prefix. there should be no spaces before or after a | to separate multiple commands. You can use the <param1> placeholder to represent the symbol one types in after the command and <param2> placeholder to represent the number of results desired if the command supports such.

Back To Top
What is a RSS advanced alias?

A RSS advanced alias enables those with access to administrative interface to create an advanced alias to retrieve the contents of an RSS feed.

1) Go to Advanced Aliases > Add Custom section of menu.

2) Enter an alias name, no spaces, which can be anything so long as it is not already a command name, command alias or advanced alias name.

It is recommended you use a somewhat unique name as if we develop a command in the future that has a name that matches one of your advanced alias names, the command name will take precedence over your advanced alias name and you will need to edit your advanced alias to have a new name to get it to work again.

3) Select a category which determines which category on the help page the advanced alias will appear under.

4) Enter a brief description which is used on the help page.

5) Select RSS for alias type.

6) Enter the RSS URL.

7) Enter the source URL. Provide URL to the section of the site from which the feed is from, not the RSS URL itself, but rather the URL to the news or finance section of the site. If a URL from the appropriate section of the site is not available, use the site's main domain as the source URL.

8) Enter the default number of results in case none is provided in command that member uses.

9) Enter the maximum number of results.

10) Custom Elements: An element name in the RSS feed source that is not one of the following defaults (date, title, description, link, author). If more than one custom element, separate them by commas, no spaces.

11) Edit the item template as desired. You can edit the template each RSS item will use. You can use text formatting codes supported by Discord such as surrounding text with ** to make it bold. For a list of formatting options, click here. The following elements are supported by default:

<date>
<title>
<description>
<link>
<author>

If you want to use a custom element in the template, refer to them with <customElement1>, <customElement2>, etc.

Back To Top
What is a custom output advanced alias?

A custom output advanced alias enables those with access to administrative interface to specify a custom message to return when a member types the advanced alias name you specify. They do not currently support usage of commands in the custom message for example to automatically get the current price of a stock.

Custom message content is subject to review for compliance with our terms of service and may be paused or deleted at any time for any reason without warning.

1) Go to Advanced Aliases > Add Custom section of menu.

2) Enter an alias name, no spaces, which can be anything so long as it is not already a command name, command alias or advanced alias name.

It is recommended you use a somewhat unique name as if we develop a command in the future that has a name that matches one of your advanced alias names, the command name will take precedence over your advanced alias name and you will need to edit your advanced alias to have a new name to get it to work again.

3) Select a category which determines which category on the help page the advanced alias will appear under.

4) Enter a brief description which is used on the help page.

5) Select Custom Output for alias type.

6) Enter the custom message to output.

Back To Top

What is another bot's command advanced alias?

Another bot's command advanced alias enables those with access to administrative interface to specify one or more commands from another bot that this bot will send. This will only work if the other bot recognizes commands from another bot which not all do.

Back To Top

What is a Google Sheet advanced alias?

A Google Sheet advanced alias enables those with access to administrative interface to specify a range of cells within a Google sheet to retrieve data from.

Back To Top

What is a Image advanced alias?

An image advanced alias enables those with access to administrative interface to specify a URL to an image. Multiple images can be specified by separating them with the | character.

Back To Top

Common Errors

How come the error I see is not listed?

We only list the most common errors in this FAQ. Please report any error not listed and we will take a look to find out what caused it. For a full list of possible errors from Discord, you can click here.

Back To Top
What does 500 Internal Server Error mean?

This is a Discord server error that prevented the bot from connecting. Usually this is due to a temporary error with Discord's servers and will clear up on its own. You can check the status of Discord servers by clicking here.

Back To Top
What does 502 Bad Gateway mean?

This is a Discord server error that prevented the bot from connecting. Usually this is due to a temporary error with Discord's servers and will clear up on its own. You can check the status of Discord servers by clicking here.

Back To Top
What does DiscordAPIError : Missing Permissions mean?

This error message means the bot did not have permissions to execute a command or market alert. For more info on properly configuring permissions, click here.

Back To Top
What does DiscordAPIError : Unknown Message mean?

The error message normally occurs when the bot tries to auto delete a message and it was already manually deleted by someone. It can be ignored but to help reduce the occurance of such, if you have enabled auto delete of messages in the admin interface, do not use the prune command or manually delete Stock Bot messages as the bot will do it for you.

Back To Top
What does DiscordAPIError: Invalid Form Body Must be 2000 or fewer in length mean?

The error message means the bot tried to send a message more than 2000 characters which is the limit set by Discord for a single message. Normally the bot breaks messages up into sections when the message is over 2000 characters so if you see this message, please report it to support so they can correct the command that tried to send a message larger than 2000 characters..

Back To Top
What does Channel Not Defined mean?

This means a channel you specified in the admin interface for the bot to send a message or market alert to no longer exists. This can occur if you specify a channel in the admin interface, remove it on your Discord server and do not update it in admin interface.

Back To Top

Remove

How do I remove the bot from my server?

First, thanks for trying out the bot. If you would like to remove it due to an issue or missing feature, please consider taking a moment report the issue or suggest the missing feature by getting in contact.

If you are sure you want to remove it, the bot is like any other member as far as removing. This means any member of your server assigned a role that has Kick permission can kick the bot out of your server and it will leave.

Back To Top
What happens to any customizations when it is removed?

Any customizations made to the bot will be saved for 7 days after the bot is kicked from a server. So long as you add the bot back to a server within 7 days, it will use the previous settings. After 7 days, any custom settings will be permanently deleted and if you add the bot back to a server, it will start out with the all the default settings.

Back To Top
Bot was accidently removed, how do I add it back?

You can add the bot back in the same way it was added in the first place. For instructions, click here.

Back To Top
Can I pause the bot?

You could login to the admin and do the following to effectively pause the bot.

1) Set the bot to ignore all channels.

2) Pause any market alerts and custom alerts.

Back To Top































X
We use cookies to understand how you use our site and to improve your experience. By continuing to use our site, you accept our cookie policy, privacy policy and terms of service. Learn More.
Ok, got it!