diff --git a/Procfile b/Procfile new file mode 100644 index 00000000000..b39853e6391 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +worker: python3 discordbot/discordbot.py diff --git a/discordbot/README.md b/discordbot/README.md index ef5c427fa90..77003adf891 100644 --- a/discordbot/README.md +++ b/discordbot/README.md @@ -52,6 +52,20 @@ https://discord.com/oauth2/authorize?client_id=CLIENTID&scope=bot, where **CLIEN **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](gamestonk_terminal/config_discordbot.py) file. diff --git a/discordbot/requirements.txt b/discordbot/requirements.txt new file mode 100644 index 00000000000..729ca3825ce --- /dev/null +++ b/discordbot/requirements.txt @@ -0,0 +1,236 @@ +aiohttp==3.7.4.post0; python_version >= "3.6" and python_full_version >= "3.5.3" +alabaster==0.7.12; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +alpha-vantage==2.3.1 +ansiwrap==0.8.4; python_version >= "3.6" +anyio==3.3.4; python_full_version >= "3.6.2" and python_version >= "3.6" +appdirs==1.4.4; python_full_version >= "3.6.2" and python_version >= "3.6" +appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin" +argcomplete==1.12.3; python_version < "3.8.0" and python_version >= "3.7" +argon2-cffi==21.1.0; python_version >= "3.6" +async-timeout==3.0.1; python_full_version >= "3.5.3" and python_version >= "3.6" +attrs==21.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +babel==2.9.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") +backcall==0.2.0; python_version >= "3.7" +backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") +beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.5" +black==21.7b0; python_full_version >= "3.6.2" +bleach==4.1.0; python_version >= "3.7" +bs4==0.0.1 +bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.6" +chardet==4.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +charset-normalizer==2.0.1; python_full_version >= "3.5.0" +click==8.0.3; python_full_version >= "3.6.2" and python_version >= "3.6" +colorama==0.4.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +convertdate==2.3.2; python_version >= "3.6" +coverage==5.5; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0" and python_version < "4") +cryptography==35.0.0; python_version >= "3.6" +cssselect==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +cvxpy==1.1.17; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" +cycler==0.11.0; python_version >= "3.7" +cython==0.29.24; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and python_version >= "3.6" and sys_platform == "darwin" +dateparser==1.1.0; python_version >= "3.5" +datetime==4.3; python_version >= "3.5" +debugpy==1.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" +decorator==5.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" +defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" +degiro-connector==2.0.3; python_full_version >= "3.6.2" +deprecation==2.1.0 +detecta==0.0.5; python_version >= "3.6" +discord-components==2.1.2; python_version >= "3.6" +discord.py==1.7.3; python_full_version >= "3.5.3" and python_version >= "3.6" +discord==1.7.3 +docutils==0.16; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +ecos==2.0.7.post1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" +entrypoints==0.3; python_version >= "3.7" +et-xmlfile==1.1.0; python_version >= "3.6" +fear-greed-index==0.1.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" +ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +financedatabase==1.0.0 +finviz==1.4.2 +finvizfinance==0.9.10; python_version >= "3.5" +fred==3.1 +fredapi==0.4.3 +frozendict==2.0.7; python_version >= "3.6" +fundamentalanalysis==0.2.12 +future==0.18.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +gitdb==4.0.9; python_version >= "3.7" +gitpython==3.1.24; python_version >= "3.7" +grpcio==1.41.1; python_full_version >= "3.6.2" +hijri-converter==2.2.2; python_version >= "3.6" +holidays==0.11.3.1; python_version >= "3.6" +idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.6" +imagesize==1.2.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +importlib-metadata==4.8.1; python_version == "3.7" +inflection==0.5.1; python_version >= "3.5" +ipykernel==6.5.0; python_version >= "3.7" +ipython-genutils==0.2.0; python_version >= "3.6" +ipython==7.29.0; python_version >= "3.7" +ipywidgets==7.6.5 +iso8601==0.1.16 +jedi==0.18.0; python_version >= "3.7" +jinja2==3.0.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7" +joblib==1.1.0; python_version >= "3.7" +json5==0.9.6; python_version >= "3.6" +jsonschema==3.2.0 +jupyter-client==6.1.12; python_version >= "3.5" +jupyter-console==6.4.0; python_version >= "3.6" +jupyter-core==4.9.1; python_full_version >= "3.6.1" and python_version >= "3.7" +jupyter-server==1.11.1; python_version >= "3.6" +jupyter==1.0.0 +jupyterlab-pygments==0.1.2; python_version >= "3.7" +jupyterlab-server==2.8.2; python_version >= "3.6" +jupyterlab-widgets==1.0.2; python_version >= "3.6" +jupyterlab==3.2.1; python_version >= "3.6" +kiwisolver==1.3.2; python_version >= "3.7" +korean-lunar-calendar==0.2.1; python_version >= "3.6" +lxml==4.6.4; python_full_version >= "3.6.8" and python_version >= "3.5" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") +m2r2==0.2.8; python_full_version >= "3.6.8" and python_full_version < "4.0.0" +markupsafe==2.0.1; python_version >= "3.6" +matplotlib-inline==0.1.3; python_version >= "3.7" +matplotlib==3.4.3; python_version >= "3.7" +mistune==0.8.4; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7" +more-itertools==8.10.0; python_version >= "3.5" +mplfinance==0.12.7a17 +multidict==5.2.0; python_version >= "3.6" +multitasking==0.0.9 +mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.6" +mypy==0.901; python_version >= "3.5" +nbclassic==0.3.4; python_version >= "3.6" +nbclient==0.5.4; python_full_version >= "3.6.1" and python_version >= "3.7" +nbconvert==6.2.0; python_version >= "3.7" +nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.7" +nest-asyncio==1.5.1; python_full_version >= "3.6.1" and python_version >= "3.6" +notebook==6.4.5; python_version >= "3.6" +numpy==1.19.5; python_version >= "3.6" +oandapyv20==0.6.3 +oauthlib==3.1.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +onetimepass==1.0.1; python_full_version >= "3.6.2" +openpyxl==3.0.7; python_version >= "3.6" +orjson==3.6.4; python_version >= "3.7" and python_full_version >= "3.6.2" +osqp==0.6.2.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" +packaging==21.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7" +pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +pandas-ta==0.2.45b +pandas==1.1.5; python_full_version >= "3.6.1" +pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" +papermill==2.3.3; python_version >= "3.6" +parso==0.8.2; python_version >= "3.7" +pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.6" +patsy==0.5.2; python_version >= "3.6" +pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7" +pickleshare==0.7.5; python_version >= "3.7" +pillow==8.4.0; python_version >= "3.6" +plotly==4.14.3 +pmdarima==1.8.3; python_version >= "3.6" +praw==7.4.0; python_version >= "3.6" and python_version < "4.0" +prawcore==2.3.0; python_version >= "3.6" and python_version < "4.0" +prettytable==2.4.0; python_version >= "3.6" +prometheus-client==0.12.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +prompt-toolkit==3.0.21; python_full_version >= "3.6.2" +protobuf==3.19.1; python_version >= "3.5" and python_full_version >= "3.6.2" +psaw==0.0.12; python_version >= "3" +ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.7" and sys_platform != "win32" +py==1.10.0; python_version >= "3.6" and python_full_version < "3.0.0" and implementation_name == "pypy" or implementation_name == "pypy" and python_version >= "3.6" and python_full_version >= "3.4.0" +pyally==1.1.2 +pycoingecko==1.4.1 +pycparser==2.20; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +pyex==0.5.0 +pygments==2.10.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7" +pyimgur==0.6.0 +pymeeus==0.5.11; python_version >= "3.6" +pyobjc-core==7.3; python_version >= "3.6" and sys_platform == "darwin" +pyobjc-framework-cocoa==7.3; python_version >= "3.6" and sys_platform == "darwin" +pyotp==2.6.0; python_version >= "3" +pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7" +pyportfolioopt==1.5.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" +pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +pyrsistent==0.14.11 +python-binance==1.0.15 +python-coinmarketcap==0.2 +python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.6" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") +python-dotenv==0.19.1; python_version >= "3.5" +pytrends==4.7.3 +pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +pytz==2021.3; python_full_version >= "3.6.8" and python_version >= "3.6" and python_full_version < "4.0.0" +pyupgrade==2.18.2; python_full_version >= "3.6.1" +pywin32==301; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.6" +pywinpty==1.1.5; os_name == "nt" and python_version >= "3.6" +pyyaml==6.0; python_version >= "3.6" +pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.6" +qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" +qtconsole==5.1.1; python_version >= "3.6" +qtpy==1.11.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +quandl==3.6.2; python_version >= "3.5" +rapidfuzz==1.8.2; python_version >= "2.7" +regex==2020.11.13 +reportlab==3.6.2; python_version >= "3.6" and python_version < "4" +requests-oauthlib==1.3.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +requests-unixsocket==0.2.0; python_version >= "3.6" +requests==2.26.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +retrying==1.3.3 +robin-stocks==2.1.0; python_version >= "3" +scikit-learn==1.0.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" +scipy==1.5.4; python_version >= "3.6" +screeninfo==0.6.7 +scs==2.1.4; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" +seaborn==0.11.2; python_version >= "3.6" +selenium==3.141.0 +send2trash==1.8.0; python_version >= "3.6" +sentiment-investor==2.0.0 +sentipy==0.2.0; python_version >= "3.6" and python_version < "4.0" +six==1.15.0; python_full_version >= "3.6.2" and python_version >= "3.5" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") +smmap==5.0.0; python_version >= "3.7" +sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.6" +snowballstemmer==2.1.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +socketio-client-nexus==0.7.6 +soupsieve==2.3; python_version >= "3.6" and python_full_version > "3.0.0" +sphinx-rtd-theme==0.5.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" +sphinx==4.1.1; python_version >= "3.6" +sphinxcontrib-applehelp==1.0.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sphinxcontrib-devhelp==1.0.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sphinxcontrib-htmlhelp==2.0.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sphinxcontrib-jsmath==1.0.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sphinxcontrib-qthelp==1.0.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sphinxcontrib-serializinghtml==1.1.5; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" +sseclient==0.0.27 +statsmodels==0.12.2; python_version >= "3.6" +tabulate==0.8.9 +temporal-cache==0.1.4 +tenacity==8.0.1; python_version >= "3.6" +termcolor==1.1.0 +terminado==0.12.1; python_version >= "3.6" +testpath==0.5.0; python_version >= "3.7" +textwrap3==0.9.2; python_version >= "3.6" +thepassiveinvestor==1.0.10 +threadpoolctl==3.0.0; python_version >= "3.7" +timeseries-cv==0.1.4; python_version >= "3.6" and python_version < "4.0" +tokenize-rt==4.2.1; python_full_version >= "3.6.1" +toml==0.10.2; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5" +tomli==1.2.2; python_full_version >= "3.6.2" and python_version >= "3.6" +tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.7" +tqdm==4.62.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +tradingview-ta==3.2.9; python_version >= "3.6" +traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7" +typed-ast==1.4.3; python_version < "3.8" and python_version >= "3.6" and python_full_version >= "3.6.2" +typing-extensions==3.7.4.3; python_version < "3.8" and python_version >= "3.7" and python_full_version >= "3.6.2" +tzdata==2021.5; platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") +tzlocal==4.1; python_version >= "3.6" +ujson==4.2.0; python_version >= "3.6" +update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0" +urllib3==1.26.7; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6" +user-agent==0.1.9 +vadersentiment==3.3.2 +valinvest==0.0.2; python_version >= "3.6" +vcrpy==4.1.1; python_version >= "3.5" +wcwidth==0.2.5; python_version >= "3.6" and python_full_version >= "3.6.2" +webencodings==0.5.1; python_version >= "3.7" +websocket-client==1.2.1; python_version >= "3.6" and python_version < "4.0" +websockets==9.1; python_full_version >= "3.6.1" +widgetsnbextension==3.5.2 +wrapt==1.12.1; python_version >= "3.5" and python_full_version >= "3.6.2" +yarl==1.7.2; python_version >= "3.6" +yfinance==0.1.64 +zipp==3.6.0; python_version < "3.8" and python_version >= "3.6" +zope.interface==5.4.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5" diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 00000000000..2153d1e1552 --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +python-3.9.7