Files
OpenBB/discordbot
teh_coderer 445ec3256c Discordbot/expiry reactions (#1114)
* added load extension for options menu

* options menu: oi, iv, unusual options

* Update opt_menu.py

* Update unu.py

if no num requested set default to 10

* Update opt_menu.py

+ !oi ticker expiry request added without inputting date format. accepts 0-9 up to 10 weeks
+ added option volume plot (works same as oi)

* Create vol.py

* Create reaction_helper.py

* Cleaned up, added historical options

Cleaned up
+ added historical options data
+ added expiry reaction helper function

* Create hist.py

* cleanup

* added min/max strike price

* cleanup

* cleanup, added min/max strike price

* Update opt_menu.py

* added yfinance if no tradier token

* Update vol.py

* Update opt_menu.py

* Create oi_tradier.py

* Update oi.py

* Update opt_menu.py

* Update oi.py

* Update opt_menu.py

* Update oi.py

* Update iv.py

* Update unu.py

* Update oi_tradier.py

* Update hist.py

* Update opt_menu.py

* Update reaction_helper.py

* Create options_menu.py

* Update run_discordbot.py

* Update vol.py

* Rename discordbot/options_menu.py to discordbot/stocks/options/options_menu.py

* Delete opt_menu.py

* Update oi.py

+ min strike/max strike

* Delete oi_tradier.py

* Update options_menu.py

* Update hist.py

* Update vol.py

* Update oi.py

* Update options_menu.py

* Update options_menu.py

* Update options_menu.py

* Linting/Pre-Commit Fixes

* linting

* Linting

* linting

* pylint fixes

* Update iv.py

* Update options_menu.py

* Update reaction_helper.py

* Improved Code

- removed 148 lines same function

* Update run_discordbot.py

* Update reaction_helper.py

* Updated Options Menu

+ reaction expiry lookup
+ added unu, iv, oi, vol ,hist

* mypy fix

* msg delete delay

* Update options_menu.py

* fix

seems bot doesn't like when last emoji is empty.
added an X when strike c/p empty

* Update opt_cmd.py

* Update options_menu.py

* better handling

* Update options_menu.py

* Update opt_cmd.py

* fix stocks.opt indention

* hist.py token/error handling

* Update hist.py

* Update options_menu.py

* Update hist.py
2022-01-01 17:26:42 +00:00
..
2021-12-23 21:30:50 +00:00
2021-12-23 21:30:50 +00:00
2021-12-23 21:30:50 +00:00

Discord Bot - WORK IN PROGRESS

Install Requirements

This tutorial assumes that you have successfully installed Gamestonk Terminal.

Next, go into the discordbot folder with cd discordbot and install the following packages:

pip install discord
pip install discord_components
pip install pyimgur
pip install python-dotenv

Registering Applications

DISCORD

  1. Login into your discord account in https://discord.com/developers/applications
  2. On the "Applications" tab, select "New Application" and name it something like "GST Bot". This will create a new application.
  3. For creating a bot, we need to go into the "GST Bot" application previously created, and on the "Bot" tab select "Add Bot".
  4. Allow privileged gateway intents by enabling MESSAGE CONTENT INTENT under the bot tab.
  5. Next we need to obtain the "Client ID". For that we choose the "OAuth2" tab and copy our "Client ID" under "Client".
  6. At this stage the bot is created and we are ready to invite it to one of our servers. To do so we need to access: https://discord.com/oauth2/authorize?client_id=CLIENTID&scope=bot, where CLIENTID is replaced by the value copied above.
  7. If everything went well, you should see a window popup where the Bot that was just created asks to which of your own servers do you want to add it to.

NOTE: If you haven't managed the bot permissions on the Bot tab previously you can do it via this link generator https://discordapi.com/permissions.html

IMGUR

  1. Login into your https://imgur.com account. Create one if you don't have it.
  2. Access https://api.imgur.com/oauth2/addclient to create your application.
  3. Select "OAuth 2 authorization without a callback URL" when creating such.
  4. You will receive a client ID and client secret once you submit the form.

NOTE: Registering is free for all open source projects and if your discord bot uses fewer than 1250 uploads per day.

HEROKU

  1. Replace the general requirements.txt with the one in the discordbot folder.
  2. Create a Heroku account at: https://signup.heroku.com/.
  3. Click 'Create a new app'.
  4. Go to the 'Settings' page, and then find Config Vars.
  5. Add GT_DISCORD_BOT_TOKEN and GT_IMGUR_CLIENT_ID with their associated values.
  6. Go to the repository:https://github.com/GamestonkTerminal/GamestonkTerminal and fork it if you have not already done so.
  7. On the 'Deploy' page select Github as the deployment method.
  8. Select 'enable automatic deploys' if you would like for the server to update every time you update your fork.
  9. Go to the 'Resources' tab and turn on the worker by pressing the pencil to edit and then pressing the toggle button.

NOTE: If you only want the bot to run in the cloud you are done, if you would like it to run on your local machine read below.

Discord Configs

In order to config the discord bot you will need to edit the config_discordbot.py file.

  1. Edit the path to the terminal by changing the variable GST_PATH. E.g.

    GST_PATH = os.path.join("~", "Documents", "GamestonkTerminal")
    sys.path.append(GST_PATH)
    
  2. Update DISCORD_BOT_TOKEN using discord bot CLIENT ID obtained previously in discord.

  3. Update IMGUR_CLIENT_ID using imgur application CLIENT ID obtained previously in imgur.

Advanced

Other parameters that can be configured are:

  • DEBUG: Shows a debug message on the terminal console of what's happening on the discord bot from the server side.
  • COMMAND_PREFIX: Command prefix to be used when calling the bot from the discord server.
  • DATE_FORMAT: Selects date format to be used as parameter on the discord bot.
  • COLOR: Changes color of the bot messages replies on the discord server.
  • MENU_TIMEOUT: Timeout in seconds to allow user to select options when a menu command is invoked from the discord bot.
  • AUTHOR_NAME: Name of the discord bot in the server.
  • AUTHOR_ICON_URL: Icon displayed on the discord bot replies on the server.

Run Locally

Just run the discord bot from this folder with:

python discordbot/run_discordbot.py

Now, you should be ready to invoke the discord bot from server using something like:

!stocks.dps TSLA
Screenshot 2021-10-18 at 00 21 30

Contributing

See more in CONTRIBUTING.md.

Bugs

If when trying to run the discord bot you receive the following error

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

The solution is to browse to Applications/Python 3.x and double-click Install Certificates.command.

If an error occurs, use DEBUG=True on the config_discordbot.py file.

Then, report what is the issue with the console output attached either by: