mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-04 16:32:10 +00:00
Bot logging fix (#1105)
* Write bot logs to stdout instead of a file Heroku's logging uses the stdout and has problems with files * Send "you snooze you lose" only if debug flag is enabled * Replace print statements with logger entries in the economy menu * Add logging to bot menu command calls * Silence bandit warnings about the REPLACE_ME token * Organize imports and update logging in economy menu * Organize imports and update logging in dps menu * Organize imports and update logging in dd menu * Organize imports and update logging in gov menu * Organize imports and update logging in options menu * Organize imports and update logging in screener menu * Organize imports and update logging in ta menu * Revert automatic import sorting * Add logging to the options reaction helper
This commit is contained in:
committed by
GitHub
parent
f2df70de4f
commit
f40ba0d256
@@ -22,7 +22,7 @@ COMMAND_PREFIX = "!"
|
||||
DATE_FORMAT = "%Y-%m-%d"
|
||||
COLOR = discord.Color.from_rgb(0, 206, 154)
|
||||
MENU_TIMEOUT = 30
|
||||
DEBUG = True
|
||||
DEBUG = False
|
||||
|
||||
GST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||||
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def currencies_command(ctx):
|
||||
"""Currencies overview [Wall St. Journal]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.currencies")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.global_currencies()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,25 +1,24 @@
|
||||
import asyncio
|
||||
|
||||
import discord
|
||||
import discord_components
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
from discordbot.economy.feargreed import feargreed_command
|
||||
from discordbot.economy.overview import overview_command
|
||||
from discordbot.economy.indices import indices_command
|
||||
from discordbot.economy.futures import futures_command
|
||||
from discordbot.economy.usbonds import usbonds_command
|
||||
from discordbot.economy.glbonds import glbonds_command
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.economy.currencies import currencies_command
|
||||
from discordbot.economy.energy import energy_command
|
||||
from discordbot.economy.metals import metals_command
|
||||
from discordbot.economy.feargreed import feargreed_command
|
||||
from discordbot.economy.futures import futures_command
|
||||
from discordbot.economy.glbonds import glbonds_command
|
||||
from discordbot.economy.grains import grains_command
|
||||
from discordbot.economy.indices import indices_command
|
||||
from discordbot.economy.meats import meats_command
|
||||
from discordbot.economy.softs import softs_command
|
||||
from discordbot.economy.valuation import valuation_command
|
||||
from discordbot.economy.metals import metals_command
|
||||
from discordbot.economy.overview import overview_command
|
||||
from discordbot.economy.performance import performance_command
|
||||
from discordbot.economy.softs import softs_command
|
||||
from discordbot.economy.usbonds import usbonds_command
|
||||
from discordbot.economy.valuation import valuation_command
|
||||
|
||||
|
||||
class EconomyCommands(discord.ext.commands.Cog):
|
||||
@@ -33,9 +32,9 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
"""CNN Fear and Greed Index [CNN]
|
||||
|
||||
Parameters
|
||||
-----------
|
||||
----------
|
||||
indicator: str
|
||||
Possible indicatores are: jbd, mv, pco, mm, sps, spb, shd. Which stand for
|
||||
Possible indicators are: jbd, mv, pco, mm, sps, spb, shd. Which stand for
|
||||
Junk Bond Demand, Market Volatility, Put and Call Options, Market Momentum,
|
||||
Stock Price Strength, Stock Price Breadth, Safe Heaven Demand.
|
||||
"""
|
||||
@@ -44,56 +43,67 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
@discord.ext.commands.command(name="economy.overview")
|
||||
async def overview(self, ctx: discord.ext.commands.Context):
|
||||
"""Market data overview [Wall St. Journal]"""
|
||||
logger.info("economy.overview")
|
||||
await overview_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.indices")
|
||||
async def indices(self, ctx: discord.ext.commands.Context):
|
||||
"""US indices overview [Wall St. Journal]"""
|
||||
logger.info("economy.indices")
|
||||
await indices_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.futures")
|
||||
async def futures(self, ctx: discord.ext.commands.Context):
|
||||
"""Futures and commodities overview [Wall St. Journal]"""
|
||||
logger.info("economy.futures")
|
||||
await futures_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.usbonds")
|
||||
async def usbonds(self, ctx: discord.ext.commands.Context):
|
||||
"""US bonds overview [Wall St. Journal]"""
|
||||
logger.info("economy.usbonds")
|
||||
await usbonds_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.glbonds")
|
||||
async def glbonds(self, ctx: discord.ext.commands.Context):
|
||||
"""Global bonds overview [Wall St. Journal]"""
|
||||
logger.info("economy.glbonds")
|
||||
await glbonds_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.energy")
|
||||
async def energy(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays energy futures data [Finviz]"""
|
||||
logger.info("economy.energy")
|
||||
await energy_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.metals")
|
||||
async def metals(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays metals futures data [Finviz]"""
|
||||
logger.info("economy.metals")
|
||||
await metals_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.meats")
|
||||
async def meats(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays meats futures data [Finviz]"""
|
||||
logger.info("economy.meats")
|
||||
await meats_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.grains")
|
||||
async def grains(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays grains futures data [Finviz]"""
|
||||
logger.info("economy.grains")
|
||||
await grains_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.softs")
|
||||
async def softs(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays softs futures data [Finviz]"""
|
||||
logger.info("economy.softs")
|
||||
await softs_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.currencies")
|
||||
async def currencies(self, ctx: discord.ext.commands.Context):
|
||||
"""Currencies overview [Wall St. Journal]"""
|
||||
logger.info("economy.currencies")
|
||||
await currencies_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="economy.valuation")
|
||||
@@ -107,6 +117,7 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
consumer_cyclical, consumer_defensive, energy, financial, healthcare, industrials,
|
||||
real_estate, technology, utilities, country, capitalization.
|
||||
"""
|
||||
logger.info("economy.valuation")
|
||||
await valuation_command(ctx, economy_group)
|
||||
|
||||
@discord.ext.commands.command(name="economy.performance")
|
||||
@@ -120,6 +131,7 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
consumer_cyclical, consumer_defensive, energy, financial, healthcare, industrials,
|
||||
real_estate, technology, utilities, country, capitalization.
|
||||
"""
|
||||
logger.info("economy.performance")
|
||||
await performance_command(ctx, economy_group)
|
||||
|
||||
@discord.ext.commands.command(name="economy")
|
||||
@@ -133,9 +145,7 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the economy context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print("!economy")
|
||||
logger.info("!economy")
|
||||
|
||||
cols_temp = []
|
||||
cols = []
|
||||
@@ -258,56 +268,46 @@ class EconomyCommands(discord.ext.commands.Cog):
|
||||
async def on_reaction_add(reaction, user):
|
||||
if user == ctx.message.author and str(reaction.emoji) in emoji_list:
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("!economy. Reaction selected: 0")
|
||||
if current == 0:
|
||||
await overview_command(ctx)
|
||||
elif current == 1:
|
||||
await metals_command(ctx)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("!economy. Reaction selected: 1")
|
||||
if current == 0:
|
||||
await futures_command(ctx)
|
||||
elif current == 1:
|
||||
await meats_command(ctx)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("!economy. Reaction selected: 2")
|
||||
if current == 0:
|
||||
await usbonds_command(ctx)
|
||||
elif current == 1:
|
||||
await grains_command(ctx)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("!economy. Reaction selected: 3")
|
||||
if current == 0:
|
||||
await glbonds_command(ctx)
|
||||
elif current == 1:
|
||||
await softs_command(ctx)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("!economy. Reaction selected: 4")
|
||||
await indices_command(ctx)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("!economy. Reaction selected: 5")
|
||||
await currencies_command(ctx)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("!economy. Reaction selected: 6")
|
||||
await feargreed_command(ctx)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("!economy. Reaction selected: 7")
|
||||
await valuation_command(ctx)
|
||||
elif reaction.emoji == "8️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 8")
|
||||
logger.info("!economy. Reaction selected: 8")
|
||||
await performance_command(ctx)
|
||||
elif reaction.emoji == "9️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 9")
|
||||
logger.info("!economy. Reaction selected: 9")
|
||||
await energy_command(ctx)
|
||||
for emoji in emoji_list:
|
||||
await main_message.remove_reaction(emoji, ctx.bot.user)
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def energy_command(ctx):
|
||||
"""Displays energy futures data [Finviz]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.energy")
|
||||
|
||||
# Retrieve data
|
||||
d_futures = finviz_model.get_futures()
|
||||
|
||||
@@ -22,7 +20,7 @@ async def energy_command(ctx):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
if df.empty:
|
||||
|
||||
@@ -1,27 +1,25 @@
|
||||
import os
|
||||
import datetime
|
||||
import matplotlib.pyplot as plt
|
||||
import discord
|
||||
import os
|
||||
|
||||
import discord
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
from gamestonk_terminal.economy import cnn_model, cnn_view
|
||||
|
||||
from gamestonk_terminal.economy import cnn_view, cnn_model
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def feargreed_command(ctx, indicator=""):
|
||||
"""CNN Fear and Greed Index [CNN]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!economy.feargreed {indicator}")
|
||||
|
||||
# Check for argument
|
||||
possible_indicators = ("", "jbd", "mv", "pco", "mm", "sps", "spb", "shd")
|
||||
|
||||
if indicator not in possible_indicators:
|
||||
raise Exception(
|
||||
f"Select a valid indicator from {', '.join(possible_indicators)}"
|
||||
f"Select a valid indicator from {', '.join(possible_indicators)}" # nosec
|
||||
)
|
||||
|
||||
# Retrieve data
|
||||
@@ -68,12 +66,12 @@ async def feargreed_command(ctx, indicator=""):
|
||||
embed.set_image(url=uploaded_image.link)
|
||||
|
||||
else:
|
||||
if cfg.DEBUG:
|
||||
print("Error with uploading the the image to Imgur.")
|
||||
logger.error("Error when uploading the the image to Imgur.")
|
||||
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
except Exception as e:
|
||||
logger.error("ERROR Economy: [CNN] Feargreed. %s", e)
|
||||
embed = discord.Embed(
|
||||
title="ERROR Economy: [CNN] Feargreed",
|
||||
colour=cfg.COLOR,
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def futures_command(ctx):
|
||||
"""Futures and commodities overview [Wall St. Journal]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.futures")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.top_commodities()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def glbonds_command(ctx):
|
||||
"""Global bonds overview [Wall St. Journal]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.glbonds")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.global_bonds()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def grains_command(ctx):
|
||||
"""Displays grains futures data [Finviz]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.grains")
|
||||
|
||||
# Retrieve data
|
||||
d_futures = finviz_model.get_futures()
|
||||
|
||||
@@ -22,7 +20,7 @@ async def grains_command(ctx):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
if df.empty:
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def indices_command(ctx):
|
||||
"""US indices overview [Wall St. Journal]"""
|
||||
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.indices")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.us_indices()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def meats_command(ctx):
|
||||
"""Displays meats futures data [Finviz]"""
|
||||
@@ -11,7 +13,7 @@ async def meats_command(ctx):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.meats")
|
||||
logger.debug("!economy.meats")
|
||||
|
||||
# Retrieve data
|
||||
d_futures = finviz_model.get_futures()
|
||||
@@ -22,7 +24,7 @@ async def meats_command(ctx):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
if df.empty:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def metals_command(ctx):
|
||||
"""Displays metals futures data [Finviz]"""
|
||||
@@ -11,7 +13,7 @@ async def metals_command(ctx):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.metals")
|
||||
logger.debug("!economy.metals")
|
||||
|
||||
# Retrieve data
|
||||
d_futures = finviz_model.get_futures()
|
||||
@@ -22,7 +24,7 @@ async def metals_command(ctx):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
if df.empty:
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def overview_command(ctx):
|
||||
"""Market data overview [Wall St. Journal]"""
|
||||
@@ -10,14 +12,14 @@ async def overview_command(ctx):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.overview")
|
||||
logger.debug("!economy.overview")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.market_overview()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def performance_command(ctx, economy_group="sector"):
|
||||
"""Performance of sectors, industry, country [Finviz]"""
|
||||
@@ -29,19 +31,20 @@ async def performance_command(ctx, economy_group="sector"):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!economy.performance {economy_group}")
|
||||
logger.debug("!economy.performance %s", economy_group)
|
||||
|
||||
# Select default group
|
||||
if not economy_group:
|
||||
if cfg.DEBUG:
|
||||
print("Use default economy_group: 'sector'")
|
||||
logger.debug("Use default economy_group: 'sector'")
|
||||
economy_group = "sector"
|
||||
|
||||
# Check for argument
|
||||
possible_groups = list(d_economy_group.keys())
|
||||
|
||||
if economy_group not in possible_groups:
|
||||
raise Exception(f"Select a valid group from {', '.join(possible_groups)}")
|
||||
possible_group_list = ", ".join(possible_groups)
|
||||
raise Exception(f"Select a valid group from {possible_group_list}") # nosec
|
||||
|
||||
group = d_economy_group[economy_group]
|
||||
|
||||
@@ -50,7 +53,7 @@ async def performance_command(ctx, economy_group="sector"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_group.to_string())
|
||||
logger.debug(df_group.to_string())
|
||||
|
||||
# Output data
|
||||
future_column_name = df_group["Name"]
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def softs_command(ctx):
|
||||
"""Displays softs futures data [Finviz]"""
|
||||
@@ -11,7 +13,7 @@ async def softs_command(ctx):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.softs")
|
||||
logger.debug("!economy.softs")
|
||||
|
||||
# Retrieve data
|
||||
d_futures = finviz_model.get_futures()
|
||||
@@ -22,7 +24,7 @@ async def softs_command(ctx):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
if df.empty:
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.economy import wsj_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def usbonds_command(ctx):
|
||||
"""US bonds overview [Wall St. Journal]"""
|
||||
@@ -10,14 +12,14 @@ async def usbonds_command(ctx):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print("\n!economy.usbonds")
|
||||
logger.debug("!economy.usbonds")
|
||||
|
||||
# Retrieve data
|
||||
df_data = wsj_model.us_bonds()
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_data.to_string())
|
||||
logger.debug(df_data.to_string())
|
||||
|
||||
# Output data
|
||||
if df_data.empty:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.economy import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def valuation_command(ctx, economy_group="sector"):
|
||||
"""Valuation of sectors, industry, country [Finviz]"""
|
||||
@@ -29,19 +31,21 @@ async def valuation_command(ctx, economy_group="sector"):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!economy.valuation {economy_group}")
|
||||
logger.debug("!economy.valuation %s", economy_group)
|
||||
|
||||
# Select default group
|
||||
if economy_group == "":
|
||||
if cfg.DEBUG:
|
||||
print("Use default economy_group: 'sector'")
|
||||
logger.debug("Use default economy_group: 'sector'")
|
||||
economy_group = "sector"
|
||||
|
||||
# Check for argument
|
||||
possible_groups = list(d_economy_group.keys())
|
||||
|
||||
if economy_group not in possible_groups:
|
||||
raise Exception(f"Select a valid group from {', '.join(possible_groups)}")
|
||||
raise Exception(
|
||||
f"Select a valid group from {', '.join(possible_groups)}" # nosec
|
||||
)
|
||||
|
||||
group = d_economy_group[economy_group]
|
||||
|
||||
@@ -50,7 +54,7 @@ async def valuation_command(ctx, economy_group="sector"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_group.to_string())
|
||||
logger.debug(df_group.to_string())
|
||||
|
||||
# Output data
|
||||
future_column_name = df_group["Name"]
|
||||
|
||||
@@ -3,12 +3,13 @@ import discord
|
||||
|
||||
from gamestonk_terminal.config_terminal import TRADIER_TOKEN
|
||||
from gamestonk_terminal.stocks.options import tradier_model, yfinance_model
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
|
||||
|
||||
async def expiry_dates_reaction(ctx, ticker, expiry, func_cmd, call_arg: tuple = None):
|
||||
if TRADIER_TOKEN == "REPLACE_ME":
|
||||
if TRADIER_TOKEN == "REPLACE_ME": # nosec
|
||||
dates = yfinance_model.option_expirations(ticker)
|
||||
else:
|
||||
dates = tradier_model.option_expirations(ticker)
|
||||
@@ -100,13 +101,12 @@ async def expiry_dates_reaction(ctx, ticker, expiry, func_cmd, call_arg: tuple =
|
||||
)
|
||||
for N in range(0, 10):
|
||||
if reaction.emoji == emoji_list[N]:
|
||||
if cfg.DEBUG:
|
||||
print(f"Reaction selected: {N}")
|
||||
expiry = dates[N]
|
||||
if call_arg is None:
|
||||
await func_cmd(ctx, ticker, expiry)
|
||||
else:
|
||||
await func_cmd(ctx, ticker, expiry, *call_arg)
|
||||
logger.info("Reaction selected: %d", N)
|
||||
expiry = dates[N]
|
||||
if call_arg is None:
|
||||
await func_cmd(ctx, ticker, expiry)
|
||||
else:
|
||||
await func_cmd(ctx, ticker, expiry, *call_arg)
|
||||
|
||||
for emoji in emoji_list:
|
||||
await msg.remove_reaction(emoji, ctx.bot.user)
|
||||
@@ -114,13 +114,14 @@ async def expiry_dates_reaction(ctx, ticker, expiry, func_cmd, call_arg: tuple =
|
||||
except asyncio.TimeoutError:
|
||||
for emoji in emoji_list:
|
||||
await msg.remove_reaction(emoji, ctx.bot.user)
|
||||
embed = discord.Embed(
|
||||
description="Error timeout - you snooze you lose! 😋",
|
||||
colour=cfg.COLOR,
|
||||
title="TIMEOUT " + ticker.upper() + " Options: Expiry Date",
|
||||
)
|
||||
embed.set_author(
|
||||
name=cfg.AUTHOR_NAME,
|
||||
icon_url=cfg.AUTHOR_ICON_URL,
|
||||
)
|
||||
await ctx.send(embed=embed, delete_after=10.0)
|
||||
if cfg.DEBUG:
|
||||
embed = discord.Embed(
|
||||
description="Error timeout - you snooze you lose! 😋",
|
||||
colour=cfg.COLOR,
|
||||
title="TIMEOUT " + ticker.upper() + " Options: Expiry Date",
|
||||
)
|
||||
embed.set_author(
|
||||
name=cfg.AUTHOR_NAME,
|
||||
icon_url=cfg.AUTHOR_ICON_URL,
|
||||
)
|
||||
await ctx.send(embed=embed, delete_after=10.0)
|
||||
|
||||
@@ -2,7 +2,6 @@ import difflib
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
import discord
|
||||
import discord_components
|
||||
@@ -13,13 +12,7 @@ import config_discordbot as cfg
|
||||
# Logging
|
||||
logger = logging.getLogger("discord")
|
||||
logging.basicConfig(level=logging.INFO) # DEBUG/INFO/WARNING/ERROR/CRITICAL
|
||||
handler = logging.FileHandler(
|
||||
filename=os.path.join(
|
||||
os.path.dirname(__file__), "..", "logs", f"{datetime.now()}_bot.log"
|
||||
),
|
||||
encoding="utf-8",
|
||||
mode="w",
|
||||
)
|
||||
handler = logging.StreamHandler(sys.stdout)
|
||||
handler.setFormatter(
|
||||
logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")
|
||||
)
|
||||
@@ -61,15 +54,15 @@ gst_bot = discord.ext.commands.Bot(
|
||||
discord_components.DiscordComponents(gst_bot)
|
||||
|
||||
if cfg.IMGUR_CLIENT_ID == "REPLACE_ME" or cfg.DISCORD_BOT_TOKEN == "REPLACE_ME":
|
||||
print(
|
||||
"Update IMGUR_CLIENT_ID or DISCORD_BOT_TOKEN or both in "
|
||||
+ f"{ os.path.join('discordbot', 'config_discordbot') } \n"
|
||||
logger.info(
|
||||
"Update IMGUR_CLIENT_ID or DISCORD_BOT_TOKEN or both in %s \n",
|
||||
os.path.join("discordbot", "config_discordbot"),
|
||||
)
|
||||
sys.exit()
|
||||
|
||||
|
||||
async def on_ready():
|
||||
print("GST Discord Bot Ready to Gamestonk!")
|
||||
logger.info("GST Discord Bot Ready to Gamestonk!")
|
||||
|
||||
|
||||
gst_imgur = pyimgur.Imgur(cfg.IMGUR_CLIENT_ID)
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import os
|
||||
import matplotlib.dates as mdates
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import yfinance as yf
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discord
|
||||
import matplotlib.dates as mdates
|
||||
import yfinance as yf
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import finra_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def dpotc_command(ctx, ticker=""):
|
||||
"""Dark pools (ATS) vs OTC data [FINRA]"""
|
||||
@@ -16,7 +18,7 @@ async def dpotc_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.dpotc {ticker}")
|
||||
logger.debug("!stocks.dps.dpotc %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -33,8 +35,8 @@ async def dpotc_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(ats.to_string())
|
||||
print(otc.to_string())
|
||||
logger.debug(ats.to_string())
|
||||
logger.debug(otc.to_string())
|
||||
|
||||
# Output data
|
||||
title = f"Stocks: [FINRA] Dark Pools (ATS) vs OTC {ticker}"
|
||||
|
||||
@@ -3,8 +3,7 @@ import discord
|
||||
import yfinance as yf
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.stocks.dark_pool_shorts.shorted import shorted_command
|
||||
from discordbot.stocks.dark_pool_shorts.ftd import ftd_command
|
||||
from discordbot.stocks.dark_pool_shorts.dpotc import dpotc_command
|
||||
@@ -37,6 +36,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of the most shorted stocks to retrieve
|
||||
"""
|
||||
logger.info("stocks.dps.shorted")
|
||||
await shorted_command(ctx, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -51,6 +51,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of top stocks to print
|
||||
"""
|
||||
logger.info("stocks.dps.hsi")
|
||||
await hsi_command(ctx, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -70,6 +71,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of top tickers to show
|
||||
"""
|
||||
logger.info("stocks.dps.pos")
|
||||
await pos_command(ctx, sort, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -87,6 +89,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of top tickers to show
|
||||
"""
|
||||
logger.info("stocks.dps.sidtc")
|
||||
await sidtc_command(ctx, sort, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -105,6 +108,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
end: datetime
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
logger.info("stocks.dps.ftd")
|
||||
await ftd_command(ctx, ticker, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -119,6 +123,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
Stock ticker
|
||||
"""
|
||||
logger.info("stocks.dps.dpotc")
|
||||
await dpotc_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -133,6 +138,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
Stock ticker
|
||||
"""
|
||||
logger.info("stocks.dps.spos")
|
||||
await spos_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -147,6 +153,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
Stock ticker
|
||||
"""
|
||||
logger.info("stocks.dps.psi")
|
||||
await psi_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -164,9 +171,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the dps context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps {ticker}")
|
||||
logger.info("!stocks.dps %s", ticker)
|
||||
|
||||
if ticker:
|
||||
stock = yf.download(ticker, progress=False)
|
||||
@@ -227,36 +232,28 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog):
|
||||
"reaction_add", timeout=cfg.MENU_TIMEOUT, check=check
|
||||
)
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("!stocks.dps. Reaction selected: 0")
|
||||
await shorted_command(ctx)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("!stocks.dps. Reaction selected: 1")
|
||||
await hsi_command(ctx)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("!stocks.dps. Reaction selected: 2")
|
||||
await pos_command(ctx)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("!stocks.dps. Reaction selected: 3")
|
||||
await sidtc_command(ctx)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("!stocks.dps. Reaction selected: 4")
|
||||
await ftd_command(ctx, ticker)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("!stocks.dps. Reaction selected: 5")
|
||||
await dpotc_command(ctx, ticker)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("!stocks.dps. Reaction selected: 6")
|
||||
await spos_command(ctx, ticker)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("!stocks.dps. Reaction selected: 7")
|
||||
await psi_command(ctx, ticker)
|
||||
|
||||
for emoji in emoji_list:
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
import yfinance as yf
|
||||
import discordbot.config_discordbot as cfg
|
||||
import discordbot.helpers
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discord
|
||||
import yfinance as yf
|
||||
import matplotlib.dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import sec_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
async def ftd_command(ctx, ticker="", start="", end=""):
|
||||
"""Fails-to-deliver data [SEC]"""
|
||||
@@ -18,7 +20,7 @@ async def ftd_command(ctx, ticker="", start="", end=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.ftd {ticker} {start} {end}")
|
||||
logger.debug("!stocks.dps.ftd %s %s %s", ticker, start, end)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -45,7 +47,7 @@ async def ftd_command(ctx, ticker="", start="", end=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(ftds_data.to_string())
|
||||
logger.debug(ftds_data.to_string())
|
||||
|
||||
plt.figure(dpi=PLOT_DPI)
|
||||
# Output data
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import shortinterest_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def hsi_command(ctx, num="10"):
|
||||
"""Show top high short interest stocks of over 20% ratio [shortinterest.com]"""
|
||||
@@ -11,7 +13,7 @@ async def hsi_command(ctx, num="10"):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.hsi {num}")
|
||||
logger.debug("!stocks.dps.hsi %s", num)
|
||||
|
||||
# Check for argument
|
||||
if not num.lstrip("-").isnumeric():
|
||||
@@ -28,7 +30,7 @@ async def hsi_command(ctx, num="10"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
future_column_name = df["Ticker"]
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def pos_command(ctx, sort="dpp_dollar", num="10"):
|
||||
"""Dark pool short position [Stockgrid]"""
|
||||
@@ -11,7 +13,7 @@ async def pos_command(ctx, sort="dpp_dollar", num="10"):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.pos {sort} {num}")
|
||||
logger.debug("!stocks.dps.pos %s %s", sort, num)
|
||||
|
||||
# Check for argument
|
||||
possible_sorts = ("sv", "sv_pct", "nsv", "nsv_dollar", "dpp", "dpp_dollar")
|
||||
@@ -33,7 +35,7 @@ async def pos_command(ctx, sort="dpp_dollar", num="10"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
dp_date = df["Date"].values[0]
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import os
|
||||
from datetime import timedelta
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import yfinance as yf
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discord
|
||||
import yfinance as yf
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def psi_command(ctx, ticker=""):
|
||||
"""Price vs short interest volume [Stockgrid]"""
|
||||
@@ -16,7 +18,7 @@ async def psi_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.psi {ticker}")
|
||||
logger.debug("!stocks.dps.psi %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -33,7 +35,7 @@ async def psi_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
title = f"Stocks: [Stockgrid] Price vs Short Interest Volume {ticker}"
|
||||
@@ -70,7 +72,10 @@ async def psi_command(ctx, ticker=""):
|
||||
axes[0].set_ylabel("Volume (1M)")
|
||||
ax2 = axes[0].twinx()
|
||||
ax2.plot(
|
||||
df["date"].values, prices[len(prices) - len(df) :], c="k", label="Price"
|
||||
df["date"].values,
|
||||
prices[len(prices) - len(df) :], # noqa: E203
|
||||
c="k",
|
||||
label="Price",
|
||||
)
|
||||
ax2.set_ylabel("Price ($)")
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import yahoofinance_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def shorted_command(ctx, num="10"):
|
||||
"""Show most shorted stocks [Yahoo Finance]"""
|
||||
@@ -11,7 +13,7 @@ async def shorted_command(ctx, num="10"):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.shorted {num}")
|
||||
logger.debug("!stocks.dps.shorted %s", num)
|
||||
|
||||
# Check for argument
|
||||
if not num.lstrip("-").isnumeric():
|
||||
@@ -27,7 +29,7 @@ async def shorted_command(ctx, num="10"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
df.dropna(how="all", axis=1, inplace=True)
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def sidtc_command(ctx, sort="float", num="10"):
|
||||
"""Short interest and days to cover [Stockgrid]"""
|
||||
@@ -11,7 +13,7 @@ async def sidtc_command(ctx, sort="float", num="10"):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.sidtc {sort} {num}")
|
||||
logger.debug("!stocks.dps.sidtc %s %s", sort, num)
|
||||
|
||||
# Check for argument
|
||||
possible_sorts = ("float", "dtc", "si")
|
||||
@@ -33,7 +35,7 @@ async def sidtc_command(ctx, sort="float", num="10"):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
dp_date = df["Date"].values[0]
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
import os
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import yfinance as yf
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discord
|
||||
import yfinance as yf
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def spos_command(ctx, ticker=""):
|
||||
"""Net short vs position [Stockgrid]"""
|
||||
@@ -15,7 +17,7 @@ async def spos_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.dps.spos {ticker}")
|
||||
logger.debug("!stocks.dps.spos %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -32,7 +34,7 @@ async def spos_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df.to_string())
|
||||
logger.debug(df.to_string())
|
||||
|
||||
# Output data
|
||||
title = f"Stocks: [Stockgrid] Net Short vs Position {ticker}"
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import finviz_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def analyst_command(ctx, ticker=""):
|
||||
"""Displays analyst recommendations [Finviz]"""
|
||||
@@ -11,7 +13,7 @@ async def analyst_command(ctx, ticker=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.analyst {ticker}")
|
||||
logger.debug("!stocks.dd.analyst %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import ark_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def arktrades_command(ctx, ticker="", num=""):
|
||||
"""Displays trades made by ark [cathiesark.com]"""
|
||||
@@ -13,7 +14,7 @@ async def arktrades_command(ctx, ticker="", num=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.arktrades{ticker}")
|
||||
logger.debug("!stocks.dd.arktrades %s", ticker)
|
||||
|
||||
if num == "":
|
||||
pass
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import csimarket_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def customer_command(ctx, ticker=""):
|
||||
"""Displays customers of the company [CSIMarket]"""
|
||||
@@ -10,7 +12,7 @@ async def customer_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.customer {ticker}")
|
||||
logger.debug("!stocks.dd.customer %s", ticker)
|
||||
|
||||
if ticker == "":
|
||||
raise Exception("A ticker is required")
|
||||
@@ -22,7 +24,7 @@ async def customer_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(tickers)
|
||||
logger.debug(tickers)
|
||||
|
||||
# Output data
|
||||
embed = discord.Embed(
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import asyncio
|
||||
import discord
|
||||
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.stocks.due_diligence.analyst import analyst_command
|
||||
from discordbot.stocks.due_diligence.pt import pt_command
|
||||
from discordbot.stocks.due_diligence.est import est_command
|
||||
@@ -28,6 +27,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.dd.analyst")
|
||||
await analyst_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.pt", usage="[ticker] [raw] [start]")
|
||||
@@ -43,6 +43,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
start:
|
||||
Starting date in YYYY-MM-DD format
|
||||
"""
|
||||
logger.info("stocks.dd.pt")
|
||||
await pt_command(ctx, ticker, raw, start)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.est", usage="[ticker]")
|
||||
@@ -54,6 +55,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.dd.est")
|
||||
await est_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.sec", usage="[ticker]")
|
||||
@@ -65,6 +67,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.dd.sec")
|
||||
await sec_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.supplier", usage="[ticker]")
|
||||
@@ -76,6 +79,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.dd.supplier")
|
||||
await supplier_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.customer", usage="[ticker]")
|
||||
@@ -87,6 +91,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.dd.customer")
|
||||
await customer_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd.arktrades", usage="[ticker] [num]")
|
||||
@@ -100,6 +105,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
number of rows displayed
|
||||
"""
|
||||
logger.info("stocks.dd.arktrades")
|
||||
await arktrades_command(ctx, ticker, num)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.dd")
|
||||
@@ -113,9 +119,7 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the dd context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print("!stocks.dd")
|
||||
logger.info("!stocks.dd")
|
||||
|
||||
if ticker == "":
|
||||
embed = discord.Embed(
|
||||
@@ -159,32 +163,25 @@ class DueDiligenceCommands(discord.ext.commands.Cog):
|
||||
"reaction_add", timeout=cfg.MENU_TIMEOUT, check=check
|
||||
)
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("!stocks.dd. Reaction selected: 0")
|
||||
await analyst_command(ctx, ticker)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("!stocks.dd. Reaction selected: 1")
|
||||
await pt_command(ctx, ticker)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("!stocks.dd. Reaction selected: 2")
|
||||
await est_command(ctx, ticker)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("!stocks.dd. Reaction selected: 3")
|
||||
await sec_command(ctx, ticker)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("!stocks.dd. Reaction selected: 4")
|
||||
await supplier_command(ctx, ticker)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("!stocks.dd. Reaction selected: 5")
|
||||
await customer_command(ctx, ticker)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("!stocks.dd. Reaction selected: 6")
|
||||
await arktrades_command(ctx, ticker)
|
||||
|
||||
for emoji in emoji_list:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import business_insider_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
async def est_command(ctx, ticker=""):
|
||||
"""Displays earning estimates [Business Insider]"""
|
||||
@@ -12,7 +14,7 @@ async def est_command(ctx, ticker=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.est {ticker}")
|
||||
logger.debug("!stocks.dd.est %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -33,9 +35,9 @@ async def est_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_year_estimates.to_string())
|
||||
print(df_quarter_earnings.to_string())
|
||||
print(df_quarter_revenues.to_string())
|
||||
logger.debug(df_year_estimates.to_string())
|
||||
logger.debug(df_quarter_earnings.to_string())
|
||||
logger.debug(df_quarter_revenues.to_string())
|
||||
|
||||
# Output data
|
||||
cols = []
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
import discordbot.helpers
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import business_insider_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
async def pt_command(ctx, ticker="", raw="", start=""):
|
||||
"""Displays price targets [Business Insider]"""
|
||||
@@ -17,7 +18,7 @@ async def pt_command(ctx, ticker="", raw="", start=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.pt {ticker}")
|
||||
logger.debug("!stocks.dd.pt %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -82,7 +83,7 @@ async def pt_command(ctx, ticker="", raw="", start=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_pt.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [Business Insider] Price Targets " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import marketwatch_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def sec_command(ctx, ticker=""):
|
||||
"""Displays sec filings [Market Watch]"""
|
||||
@@ -10,7 +12,7 @@ async def sec_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.sec {ticker}")
|
||||
logger.debug("!stocks.dd.sec %s", ticker)
|
||||
|
||||
if ticker == "":
|
||||
raise Exception("A ticker is required")
|
||||
@@ -22,7 +24,7 @@ async def sec_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(df_financials.to_string())
|
||||
logger.debug(df_financials.to_string())
|
||||
|
||||
# Output data
|
||||
report = "```" + df_financials.to_string() + "```"
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import discord
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal.stocks.due_diligence import csimarket_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def supplier_command(ctx, ticker=""):
|
||||
"""Displays suppliers of the company [CSIMarket]"""
|
||||
@@ -10,7 +12,7 @@ async def supplier_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.dd.supplier {ticker}")
|
||||
logger.debug("!stocks.dd.supplier %s", ticker)
|
||||
|
||||
if ticker == "":
|
||||
raise Exception("A ticker is required")
|
||||
@@ -22,7 +24,7 @@ async def supplier_command(ctx, ticker=""):
|
||||
|
||||
# Debug user output
|
||||
if cfg.DEBUG:
|
||||
print(tickers)
|
||||
logger.debug(tickers)
|
||||
|
||||
# Output data
|
||||
embed = discord.Embed(
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def contracts_command(ctx, ticker="", past_transaction_days="", raw=""):
|
||||
@@ -16,7 +17,9 @@ async def contracts_command(ctx, ticker="", past_transaction_days="", raw=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.contracts {ticker} {past_transaction_days} {raw}")
|
||||
logger.debug(
|
||||
"!stocks.gov.contracts %s %s %s", ticker, past_transaction_days, raw
|
||||
)
|
||||
|
||||
if past_transaction_days == "":
|
||||
past_transaction_days = 10
|
||||
@@ -65,7 +68,7 @@ async def contracts_command(ctx, ticker="", past_transaction_days="", raw=""):
|
||||
uploaded_image = gst_imgur.upload_image("gov_contracts.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = f"Stocks: [quiverquant.com] Contracts by {ticker}"
|
||||
if raw:
|
||||
description = df_contracts.to_string()
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import asyncio
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.stocks.government.lasttrades import lasttrades_command
|
||||
from discordbot.stocks.government.topbuys import topbuys_command
|
||||
from discordbot.stocks.government.topsells import topsells_command
|
||||
@@ -75,6 +74,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
raw: boolean
|
||||
True or false
|
||||
"""
|
||||
logger.info("stocks.gov.topbuys")
|
||||
await topbuys_command(ctx, gov_type, past_transactions_months, num, raw)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -102,6 +102,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
raw: boolean
|
||||
True or false
|
||||
"""
|
||||
logger.info("stocks.gov.topsells")
|
||||
await topsells_command(ctx, gov_type, past_transactions_months, num, raw)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -120,6 +121,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of contracts
|
||||
"""
|
||||
logger.info("stocks.gov.lastcontracts")
|
||||
await lastcontracts_command(ctx, past_transactions_days, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -138,6 +140,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of contracts
|
||||
"""
|
||||
logger.info("stocks.gov.qtrcontracts")
|
||||
await qtrcontracts_command(ctx, num, analysis)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -154,6 +157,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
raw: boolean
|
||||
True or false
|
||||
"""
|
||||
logger.info("stocks.gov.toplobbying")
|
||||
await toplobbying_command(ctx, num, raw)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -181,6 +185,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
raw: boolean
|
||||
True or false
|
||||
"""
|
||||
logger.info("stocks.gov.gtrades")
|
||||
await gtrades_command(ctx, ticker, gov_type, past_transactions_months, raw)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -205,6 +210,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
raw: boolean
|
||||
True or false
|
||||
"""
|
||||
logger.info("stocks.gov.contracts")
|
||||
await contracts_command(ctx, ticker, past_transaction_days, raw)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -219,6 +225,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker, -h or help
|
||||
"""
|
||||
logger.info("stocks.gov.histcont")
|
||||
await histcont_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -235,6 +242,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
num: int
|
||||
Number of events
|
||||
"""
|
||||
logger.info("stocks.gov.lobbying")
|
||||
await lobbying_command(ctx, ticker, num)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -252,9 +260,7 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the gov context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"\n!stocks.gov {ticker}")
|
||||
logger.info("!stocks.gov %s", ticker)
|
||||
|
||||
text = (
|
||||
"0️⃣ !stocks.gov.lasttrades <GOV_TYPE> <PAST_TRANSACTION_DAYS> "
|
||||
@@ -305,44 +311,34 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
"reaction_add", timeout=cfg.MENU_TIMEOUT, check=check
|
||||
)
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("Reaction selected: 0")
|
||||
await lasttrades_command(ctx)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("Reaction selected: 1")
|
||||
await topbuys_command(ctx)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("Reaction selected: 2")
|
||||
await topsells_command(ctx)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("Reaction selected: 3")
|
||||
await lastcontracts_command(ctx)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("Reaction selected: 4")
|
||||
await qtrcontracts_command(ctx)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("Reaction selected: 5")
|
||||
await toplobbying_command(ctx, ticker)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("Reaction selected: 6")
|
||||
await gtrades_command(ctx, ticker)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("Reaction selected: 7")
|
||||
await contracts_command(ctx, ticker)
|
||||
elif reaction.emoji == "8️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 8")
|
||||
logger.info("Reaction selected: 8")
|
||||
await histcont_command(ctx, ticker)
|
||||
elif reaction.emoji == "9️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 9")
|
||||
logger.info("Reaction selected: 9")
|
||||
await lobbying_command(ctx, ticker)
|
||||
|
||||
for emoji in emoji_list:
|
||||
@@ -351,15 +347,16 @@ class GovernmentCommands(discord.ext.commands.Cog):
|
||||
except asyncio.TimeoutError:
|
||||
for emoji in emoji_list:
|
||||
await msg.remove_reaction(emoji, ctx.bot.user)
|
||||
embed = discord.Embed(
|
||||
description="Error timeout - you snooze you lose! 😋",
|
||||
colour=cfg.COLOR,
|
||||
title="TIMEOUT Stocks: Government (GOV) Menu",
|
||||
).set_author(
|
||||
name=cfg.AUTHOR_NAME,
|
||||
icon_url=cfg.AUTHOR_ICON_URL,
|
||||
)
|
||||
await ctx.send(embed=embed)
|
||||
if cfg.DEBUG:
|
||||
embed = discord.Embed(
|
||||
description="Error timeout - you snooze you lose! 😋",
|
||||
colour=cfg.COLOR,
|
||||
title="TIMEOUT Stocks: Government (GOV) Menu",
|
||||
).set_author(
|
||||
name=cfg.AUTHOR_NAME,
|
||||
icon_url=cfg.AUTHOR_ICON_URL,
|
||||
)
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
|
||||
def setup(bot: discord.ext.commands.Bot):
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
import pandas as pd
|
||||
import matplotlib.dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def gtrades_command(
|
||||
@@ -20,8 +21,12 @@ async def gtrades_command(
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.gov.gtrades {ticker} {gov_type} {past_transactions_months} {raw}"
|
||||
logger.debug(
|
||||
"!stocks.gov.gtrades %s %s %s %s",
|
||||
ticker,
|
||||
gov_type,
|
||||
past_transactions_months,
|
||||
raw,
|
||||
)
|
||||
|
||||
if past_transactions_months == "":
|
||||
@@ -67,7 +72,7 @@ async def gtrades_command(
|
||||
df_gov = df_gov[df_gov["TransactionDate"] > start_date]
|
||||
|
||||
if df_gov.empty:
|
||||
print(f"No recent {gov_type} trading data found\n")
|
||||
logger.debug("No recent %s trading data found", gov_type)
|
||||
return
|
||||
|
||||
df_gov["min"] = df_gov["Range"].apply(
|
||||
@@ -120,7 +125,7 @@ async def gtrades_command(
|
||||
uploaded_image = gst_imgur.upload_image("gov_gtrades.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [quiverquant.com] Government Trades"
|
||||
if raw:
|
||||
description = df_gov.to_string()
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def histcont_command(ctx, ticker=""):
|
||||
@@ -16,7 +17,7 @@ async def histcont_command(ctx, ticker=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.histcont {ticker}")
|
||||
logger.debug("!stocks.gov.histcont %s", ticker)
|
||||
|
||||
if ticker == "":
|
||||
raise Exception("A ticker is required")
|
||||
@@ -27,7 +28,7 @@ async def histcont_command(ctx, ticker=""):
|
||||
)
|
||||
|
||||
if df_contracts.empty:
|
||||
print("No quarterly government contracts found\n")
|
||||
logger.debug("No quarterly government contracts found")
|
||||
return
|
||||
|
||||
# Output Data
|
||||
@@ -56,7 +57,7 @@ async def histcont_command(ctx, ticker=""):
|
||||
uploaded_image = gst_imgur.upload_image("gov_histcont.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Historical Quarterly Government Contract " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -2,7 +2,9 @@ import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
@@ -11,7 +13,7 @@ async def lastcontracts_command(ctx, past_transactions_days="", num=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.lastcontracts {past_transactions_days} {num}")
|
||||
logger.debug("!stocks.gov.lastcontracts %s %s", past_transactions_days, num)
|
||||
|
||||
if past_transactions_days == "":
|
||||
past_transactions_days = 2
|
||||
@@ -30,7 +32,7 @@ async def lastcontracts_command(ctx, past_transactions_days="", num=""):
|
||||
df_contracts = quiverquant_model.get_government_trading("contracts")
|
||||
|
||||
if df_contracts.empty:
|
||||
print("No government contracts found\n")
|
||||
logger.debug("No government contracts found")
|
||||
return
|
||||
|
||||
df_contracts.sort_values("Date", ascending=False)
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import discord
|
||||
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
@@ -12,8 +14,11 @@ async def lasttrades_command(
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.gov.lasttrades {gov_type} {past_transactions_days} {representative}"
|
||||
logger.debug(
|
||||
"!stocks.gov.lasttrades %s %s %s",
|
||||
gov_type,
|
||||
past_transactions_days,
|
||||
representative,
|
||||
)
|
||||
|
||||
if past_transactions_days == "":
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import discord
|
||||
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
@@ -11,7 +13,7 @@ async def lobbying_command(ctx, ticker="", num=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.lobbying {ticker}")
|
||||
logger.debug("!stocks.gov.lobbying %s", ticker)
|
||||
|
||||
if ticker == "":
|
||||
raise Exception("A ticker is required")
|
||||
@@ -29,7 +31,7 @@ async def lobbying_command(ctx, ticker="", num=""):
|
||||
)
|
||||
|
||||
if df_lobbying.empty:
|
||||
print("No corporate lobbying found\n")
|
||||
logger.debug("No corporate lobbying found")
|
||||
return
|
||||
|
||||
# Output Data
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from tabulate import tabulate
|
||||
import numpy as np
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def qtrcontracts_command(ctx, num="", analysis=""):
|
||||
@@ -17,7 +18,7 @@ async def qtrcontracts_command(ctx, num="", analysis=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.qtrcontracts {num} {analysis}")
|
||||
logger.debug("!stocks.gov.qtrcontracts %s %s", num, analysis)
|
||||
|
||||
if num == "":
|
||||
num = 20
|
||||
@@ -96,7 +97,7 @@ async def qtrcontracts_command(ctx, num="", analysis=""):
|
||||
)
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [quiverquant.com] Government contracts"
|
||||
embed = discord.Embed(
|
||||
title=title, description=description, colour=cfg.COLOR
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def topbuys_command(
|
||||
@@ -19,8 +20,12 @@ async def topbuys_command(
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.gov.topbuys {gov_type} {past_transactions_months} {num} {raw}"
|
||||
logger.debug(
|
||||
"!stocks.gov.topbuys %s %s %s %s",
|
||||
gov_type,
|
||||
past_transactions_months,
|
||||
num,
|
||||
raw,
|
||||
)
|
||||
|
||||
if past_transactions_months == "":
|
||||
@@ -58,7 +63,7 @@ async def topbuys_command(
|
||||
df_gov = quiverquant_model.get_government_trading(gov_type)
|
||||
|
||||
if df_gov.empty:
|
||||
print(f"No {gov_type} trading data found\n")
|
||||
logger.debug("No %s trading data found", gov_type)
|
||||
return
|
||||
|
||||
df_gov = df_gov.sort_values("TransactionDate", ascending=False)
|
||||
@@ -121,7 +126,7 @@ async def topbuys_command(
|
||||
uploaded_image = gst_imgur.upload_image("gov_topbuys.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = f"Stocks: [quiverquant.com] Top purchases for {gov_type.upper()}"
|
||||
if raw:
|
||||
embed = discord.Embed(
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def toplobbying_command(ctx, num="", raw=""):
|
||||
@@ -16,7 +17,7 @@ async def toplobbying_command(ctx, num="", raw=""):
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.gov.toplobbying {num} {raw}")
|
||||
logger.debug("!stocks.gov.toplobbying %s %s", num, raw)
|
||||
|
||||
if num == "":
|
||||
num = 10
|
||||
@@ -56,7 +57,7 @@ async def toplobbying_command(ctx, num="", raw=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_toplobbying.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [quiverquant.com] Top Lobbying Firms"
|
||||
if raw:
|
||||
description = lobbying_by_ticker.head(num).to_string()
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.government import quiverquant_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def topsells_command(
|
||||
@@ -19,8 +20,12 @@ async def topsells_command(
|
||||
try:
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.gov.topsells {gov_type} {past_transactions_months} {num} {raw}"
|
||||
logger.debug(
|
||||
"!stocks.gov.topsells %s %s %s %s",
|
||||
gov_type,
|
||||
past_transactions_months,
|
||||
num,
|
||||
raw,
|
||||
)
|
||||
|
||||
if past_transactions_months == "":
|
||||
@@ -134,7 +139,7 @@ async def topsells_command(
|
||||
uploaded_image = gst_imgur.upload_image("gov_topsells.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = f"Stocks: [quiverquant.com] Top sells for {gov_type.upper()}"
|
||||
if raw:
|
||||
embed = discord.Embed(
|
||||
|
||||
@@ -3,6 +3,7 @@ import yfinance as yf
|
||||
from tabulate import tabulate
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
@@ -11,7 +12,7 @@ async def calls_command(ctx, ticker: str = "", expiration_date: str = ""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.calls {ticker.upper()} {expiration_date}")
|
||||
logger.debug("!stocks.opt.calls %s %s", ticker, expiration_date)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -3,6 +3,7 @@ import pandas as pd
|
||||
import yfinance as yf
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def expirations_command(ctx, ticker: str = ""):
|
||||
@@ -10,7 +11,7 @@ async def expirations_command(ctx, ticker: str = ""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.exp {ticker.upper()}")
|
||||
logger.debug("!stocks.opt.exp %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import os
|
||||
import asyncio
|
||||
import discord
|
||||
import os
|
||||
|
||||
import discord
|
||||
import mplfinance as mpf
|
||||
|
||||
from gamestonk_terminal.config_terminal import TRADIER_TOKEN
|
||||
from gamestonk_terminal.stocks.options import tradier_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def hist_command(
|
||||
@@ -35,10 +38,12 @@ async def hist_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.hist {ticker} {strike} {put} {expiry}")
|
||||
logger.debug(
|
||||
"!stocks.opt.hist %s %s %s %s", ticker, strike, put, expiry
|
||||
)
|
||||
|
||||
error = ""
|
||||
if TRADIER_TOKEN == "REPLACE_ME":
|
||||
if TRADIER_TOKEN == "REPLACE_ME": # nosec
|
||||
raise Exception("Tradier Token is required")
|
||||
|
||||
# Check for argument
|
||||
@@ -94,7 +99,7 @@ async def hist_command(
|
||||
image = discord.File(imagefile)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"Image: {imagefile}")
|
||||
logger.debug("Image: %s", imagefile)
|
||||
title = f"{ticker.upper()} {strike} {op_type} expiring {expiry} Historical"
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_image(url="attachment://opt_hist.png")
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
import discord
|
||||
from tabulate import tabulate
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from gamestonk_terminal.stocks.options import barchart_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def iv_command(ctx, ticker: str = None):
|
||||
"""Options IV"""
|
||||
|
||||
try:
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.iv {ticker}")
|
||||
logger.debug("!stocks.opt.iv %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker is None:
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.options import op_helpers, yfinance_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def oi_command(
|
||||
ctx,
|
||||
@@ -20,10 +22,9 @@ async def oi_command(
|
||||
"""Options OI"""
|
||||
|
||||
try:
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.oi {ticker} {expiry} {min_sp} {max_sp}")
|
||||
logger.debug("!stocks.opt.oi %s %s %s %s", ticker, expiry, min_sp, max_sp)
|
||||
|
||||
# Check for argument
|
||||
if ticker is None:
|
||||
@@ -97,7 +98,7 @@ async def oi_command(
|
||||
image = discord.File(imagefile)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"Image {imagefile}")
|
||||
logger.debug("Image %s", imagefile)
|
||||
title = f"Open Interest for {ticker.upper()} expiring {expiry}"
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_image(url="attachment://opt_oi.png")
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import asyncio
|
||||
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.stocks.options.calls import calls_command
|
||||
from discordbot.stocks.options.expirations import expirations_command
|
||||
from discordbot.stocks.options.hist import hist_command
|
||||
@@ -20,7 +19,7 @@ async def opt_command(ctx, ticker="", expiration="", strike="", put=""):
|
||||
"""Options Menu command"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt {ticker} {expiration} {strike} {put}")
|
||||
logger.debug("!stocks.opt %s %s %s %s", ticker, expiration, strike, put)
|
||||
|
||||
if ticker:
|
||||
current = 1
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
import asyncio
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
from discordbot.reaction_helper import expiry_dates_reaction
|
||||
from gamestonk_terminal.config_terminal import TRADIER_TOKEN
|
||||
from gamestonk_terminal.stocks.options import tradier_model, yfinance_model
|
||||
|
||||
# pylint: disable=C0412
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.reaction_helper import expiry_dates_reaction
|
||||
from discordbot.stocks.options.calls import calls_command
|
||||
from discordbot.stocks.options.expirations import expirations_command
|
||||
from discordbot.stocks.options.hist import hist_command
|
||||
@@ -35,6 +33,7 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker,
|
||||
"""
|
||||
logger.info("stocks.opt.iv")
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
@@ -53,6 +52,7 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
logger.info("stocks.opt.unu")
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
@@ -67,6 +67,7 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
Stock ticker
|
||||
"""
|
||||
logger.info("stocks.opt.exp")
|
||||
await expirations_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -87,12 +88,10 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
0 weeklies, 1+ for weeks out
|
||||
prompts reaction helper if empty
|
||||
"""
|
||||
logger.info("!stocks.opt.calls %s %s", ticker, expiry)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.calls {ticker} {expiry}")
|
||||
|
||||
func_cmd = calls_command
|
||||
|
||||
await expiry_dates_reaction(ctx, ticker, expiry, func_cmd)
|
||||
@@ -115,12 +114,10 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
0 weeklies, 1+ for weeks out
|
||||
prompts reaction helper if empty
|
||||
"""
|
||||
logger.info("!stocks.opt.puts %s %s", ticker, expiry)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.puts {ticker} {expiry}")
|
||||
|
||||
func_cmd = puts_command
|
||||
|
||||
await expiry_dates_reaction(ctx, ticker, expiry, func_cmd)
|
||||
@@ -155,12 +152,10 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the expiry dates if empty.
|
||||
The user can then select a reaction to trigger the selected date.
|
||||
"""
|
||||
logger.info("!stocks.opt.oi %s %s %s %s", ticker, expiry, min_sp, max_sp)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.oi {ticker} {expiry} {min_sp} {max_sp}")
|
||||
|
||||
call_arg = (min_sp, max_sp)
|
||||
func_cmd = oi_command
|
||||
|
||||
@@ -195,15 +190,12 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the expiry dates if empty.
|
||||
The user can then select a reaction to trigger the selected date.
|
||||
"""
|
||||
logger.info("!stocks.opt.hist %s %s %s %s", ticker, strike, put, expiry)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
try:
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.hist {ticker} {strike} {put} {expiry}")
|
||||
|
||||
error = ""
|
||||
if TRADIER_TOKEN == "REPLACE_ME":
|
||||
if TRADIER_TOKEN == "REPLACE_ME": # nosec
|
||||
raise Exception("Tradier Token is required")
|
||||
|
||||
if expiry in ("c", "p"):
|
||||
@@ -236,9 +228,9 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
)
|
||||
except Exception as e:
|
||||
error = str(e)
|
||||
|
||||
finally:
|
||||
if error:
|
||||
logger.error(error)
|
||||
embed = discord.Embed(
|
||||
title="ERROR Options: History",
|
||||
colour=cfg.COLOR,
|
||||
@@ -281,12 +273,10 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the expiry dates if empty.
|
||||
The user can then select a reaction to trigger the selected date.
|
||||
"""
|
||||
logger.info("stocks.opt.vol %s %s %s %s", ticker, expiry, min_sp, max_sp)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.vol {ticker} {expiry} {min_sp} {max_sp}")
|
||||
|
||||
call_arg = (min_sp, max_sp)
|
||||
func_cmd = vol_command
|
||||
|
||||
@@ -312,19 +302,17 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the stocks/options context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
logger.info("!stocks.opt %s %s %s %s", ticker, expiration, strike, put)
|
||||
async with ctx.typing():
|
||||
await asyncio.sleep(0.2)
|
||||
|
||||
if TRADIER_TOKEN == "REPLACE_ME":
|
||||
if TRADIER_TOKEN == "REPLACE_ME": # nosec
|
||||
dates = yfinance_model.option_expirations(ticker)
|
||||
else:
|
||||
dates = tradier_model.option_expirations(ticker)
|
||||
|
||||
index_dates = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt {ticker} {expiration} {strike} {put}")
|
||||
|
||||
if not ticker:
|
||||
current = 0
|
||||
text = (
|
||||
@@ -402,36 +390,28 @@ class OptionsCommands(discord.ext.commands.Cog):
|
||||
"reaction_add", timeout=cfg.MENU_TIMEOUT, check=check
|
||||
)
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("Reaction selected: 0")
|
||||
await unu_command(ctx)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("Reaction selected: 1")
|
||||
await expirations_command(ctx, ticker)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("Reaction selected: 2")
|
||||
await iv_command(ctx, ticker)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("Reaction selected: 3")
|
||||
await calls_command(ctx, ticker, expiration)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("Reaction selected: 4")
|
||||
await puts_command(ctx, ticker, expiration)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("Reaction selected: 5")
|
||||
await oi_command(ctx, ticker, expiration)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("Reaction selected: 6")
|
||||
await vol_command(ctx, ticker, expiration)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("Reaction selected: 7")
|
||||
strike = float(strike)
|
||||
await hist_command(ctx, ticker, expiration, strike, put)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import yfinance as yf
|
||||
from tabulate import tabulate
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
|
||||
|
||||
@@ -11,7 +12,7 @@ async def puts_command(ctx, ticker: str = "", expiration_date: str = ""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.puts {ticker.upper()} {expiration_date}")
|
||||
logger.debug("!stocks.opt.puts %s %s", ticker, expiration_date)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -4,9 +4,11 @@ import pandas as pd
|
||||
import requests
|
||||
from tabulate import tabulate
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from gamestonk_terminal.helper_funcs import get_user_agent
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def unu_command(ctx, num: int = None):
|
||||
"""Unusual Options"""
|
||||
@@ -14,7 +16,7 @@ async def unu_command(ctx, num: int = None):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.unu {num}")
|
||||
logger.debug("!stocks.opt.unu %s", num)
|
||||
|
||||
# Check for argument
|
||||
if num is None:
|
||||
@@ -30,7 +32,7 @@ async def unu_command(ctx, num: int = None):
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
print("Error in fdscanner request")
|
||||
logger.debug("Error in fdscanner request")
|
||||
return pd.DataFrame(), "request error"
|
||||
|
||||
data_list.append(r.json())
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import os
|
||||
|
||||
import discord
|
||||
import matplotlib.pyplot as plt
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from gamestonk_terminal import config_plot as cfp
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.stocks.options import yfinance_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def vol_command(
|
||||
ctx,
|
||||
@@ -21,7 +24,7 @@ async def vol_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.opt.vol {ticker} {expiry} {min_sp} {max_sp}")
|
||||
logger.debug("!stocks.opt.vol %s %s %s %s", ticker, expiry, min_sp, max_sp)
|
||||
|
||||
# Check for argument
|
||||
if ticker is None:
|
||||
@@ -87,7 +90,7 @@ async def vol_command(
|
||||
image = discord.File(imagefile)
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"Image: {imagefile}")
|
||||
logger.debug("Image: %s", imagefile)
|
||||
title = f"Volume for {ticker.upper()} expiring {expiry}"
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_image(url="attachment://opt_vol.png")
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -17,7 +20,9 @@ async def financial_command(ctx, preset="template", sort="", limit="5", ascend="
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.financial {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.financial %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -2,6 +2,7 @@ import os
|
||||
import random
|
||||
from datetime import datetime, timedelta
|
||||
import configparser
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
import yfinance as yf
|
||||
@@ -13,6 +14,7 @@ from gamestonk_terminal.stocks.screener import finviz_model
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -25,7 +27,7 @@ async def historical_command(ctx, signal="", start=""):
|
||||
|
||||
# Debug user input
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.historical {signal} {start}")
|
||||
logger.debug("!stocks.scr.historical %s %s", signal, start)
|
||||
|
||||
# Check for argument
|
||||
if signal == "" or signal not in list(so.d_signals_desc.keys):
|
||||
@@ -75,7 +77,7 @@ async def historical_command(ctx, signal="", start=""):
|
||||
random.shuffle(l_stocks)
|
||||
l_stocks = sorted(l_stocks[:10])
|
||||
description = description + (", ".join(l_stocks))
|
||||
print(description)
|
||||
logger.debug(description)
|
||||
|
||||
plt.figure(figsize=plot_autoscale(), dpi=PLOT_DPI)
|
||||
|
||||
@@ -138,7 +140,7 @@ async def historical_command(ctx, signal="", start=""):
|
||||
uploaded_image = gst_imgur.upload_image("scr_historical.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [Yahoo Finance] Historical Screener"
|
||||
embed = discord.Embed(title=title, description=description, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -17,7 +20,9 @@ async def overview_command(ctx, preset="template", sort="", limit="5", ascend="F
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.overview {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.overview %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -17,7 +20,9 @@ async def ownership_command(ctx, preset="template", sort="", limit="5", ascend="
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.ownership {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.ownership %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -19,7 +22,9 @@ async def performance_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.performance {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.performance %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ async def presets_custom_command(ctx):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print("!stocks.scr.presets")
|
||||
logger.debug("!stocks.scr.presets")
|
||||
|
||||
description = ""
|
||||
for preset in so.presets:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ async def presets_default_command(ctx):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print("!stocks.scr.presets")
|
||||
logger.debug("!stocks.scr.presets")
|
||||
|
||||
description = ""
|
||||
for signame, sigdesc in so.d_signals_desc.items():
|
||||
|
||||
@@ -2,9 +2,7 @@ import asyncio
|
||||
import discord
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
from discordbot.stocks.screener.historical import historical_command
|
||||
from discordbot.stocks.screener.overview import overview_command
|
||||
from discordbot.stocks.screener.presets_custom import presets_custom_command
|
||||
@@ -29,11 +27,13 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
@discord.ext.commands.command(name="stocks.scr.presets_default")
|
||||
async def presets_default(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays every available preset"""
|
||||
logger.info("stocks.scr.presets_default")
|
||||
await presets_default_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.scr.presets_custom")
|
||||
async def presets_custom(self, ctx: discord.ext.commands.Context):
|
||||
"""Displays every available preset"""
|
||||
logger.info("stocks.scr.presets_custom")
|
||||
await presets_custom_command(ctx)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -54,6 +54,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
start:
|
||||
Starting date in YYYY-MM-DD format
|
||||
"""
|
||||
logger.info("stocks.scr.historical")
|
||||
await historical_command(ctx, signal, start)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -80,6 +81,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.overview")
|
||||
await overview_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -106,6 +108,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.valuation")
|
||||
await valuation_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -132,6 +135,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.financial")
|
||||
await financial_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -158,6 +162,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.ownership")
|
||||
await ownership_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -184,6 +189,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.performance")
|
||||
await performance_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -210,6 +216,7 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
ascend: boolean
|
||||
whether it's sorted by ascending order or not. Default: False
|
||||
"""
|
||||
logger.info("stocks.scr.technical")
|
||||
await technical_command(ctx, preset, sort, limit, ascend)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.scr")
|
||||
@@ -223,13 +230,11 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the screener context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
logger.info("!stocks.scr")
|
||||
|
||||
if preset != "" and preset not in so.all_presets:
|
||||
raise Exception("Invalid preset selected!")
|
||||
|
||||
if cfg.DEBUG:
|
||||
print("!stocks.scr")
|
||||
|
||||
if preset:
|
||||
text = (
|
||||
"0️⃣ !stocks.scr.presets_default\n"
|
||||
@@ -276,40 +281,31 @@ class ScreenerCommands(discord.ext.commands.Cog):
|
||||
"reaction_add", timeout=cfg.MENU_TIMEOUT, check=check
|
||||
)
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("!stocks.scr. Reaction selected: 0")
|
||||
await presets_default_command(ctx)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("!stocks.scr. Reaction selected: 1")
|
||||
await presets_custom_command(ctx)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("!stocks.scr. Reaction selected: 2")
|
||||
await historical_command(ctx, preset)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("!stocks.scr. Reaction selected: 3")
|
||||
await overview_command(ctx, preset)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("!stocks.scr. Reaction selected: 4")
|
||||
await valuation_command(ctx, preset)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("!stocks.scr. Reaction selected: 5")
|
||||
await financial_command(ctx, preset)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("!stocks.scr. Reaction selected: 6")
|
||||
await ownership_command(ctx, preset)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("!stocks.scr. Reaction selected: 7")
|
||||
await performance_command(ctx, preset)
|
||||
elif reaction.emoji == "8️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 8")
|
||||
logger.info("!stocks.scr. Reaction selected: 8")
|
||||
await technical_command(ctx, preset)
|
||||
|
||||
for emoji in emoji_list:
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -17,7 +20,9 @@ async def technical_command(ctx, preset="template", sort="", limit="5", ascend="
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.technical {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.technical %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import difflib
|
||||
|
||||
import discord
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.stocks.screener.finviz_model import get_screener_data
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
from discordbot.helpers import pagination
|
||||
from discordbot.stocks.screener import screener_options as so
|
||||
|
||||
@@ -17,7 +20,9 @@ async def valuation_command(ctx, preset="template", sort="", limit="5", ascend="
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.scr.valuation {preset} {sort} {limit} {ascend}")
|
||||
logger.debug(
|
||||
"!stocks.scr.valuation %s %s %s %s", preset, sort, limit, ascend
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if not limit.lstrip("-").isnumeric():
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.common.technical_analysis import volume_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +20,7 @@ async def ad_command(ctx, ticker="", is_open="False", start="", end=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.ad {ticker} {is_open} {start} {end}")
|
||||
logger.debug("!stocks.ta.ad %s %s %s %s", ticker, is_open, start, end)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -103,7 +104,7 @@ async def ad_command(ctx, ticker="", is_open="False", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_ad.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Accumulation/Distribution Line " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import volume_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -18,10 +18,18 @@ async def adosc_command(
|
||||
"""Displays chart with chaikin oscillator [Yahoo Finance]"""
|
||||
|
||||
try:
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.adosc {ticker} {is_open} {fast} {slow} {start} {end}")
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.adosc %s %s %s %s %s",
|
||||
ticker,
|
||||
is_open,
|
||||
fast,
|
||||
slow,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -113,7 +121,7 @@ async def adosc_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_adosc.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Accumulation/Distribution Oscillator " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import trend_indicators_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,7 +21,16 @@ async def adx_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.adx {ticker} {length} {scalar} {drift} {start} {end}")
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.adx %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
scalar,
|
||||
drift,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -92,7 +101,7 @@ async def adx_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_adx.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Average-Directional-Movement-Index " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import trend_indicators_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def aroon_command(ctx, ticker="", length="25", scalar="100", start="", end
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.aroon {ticker} {length} {scalar} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.aroon %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
scalar,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -88,7 +95,7 @@ async def aroon_command(ctx, ticker="", length="25", scalar="100", start="", end
|
||||
uploaded_image = gst_imgur.upload_image("ta_aroon.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Aroon-Indicator " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import volatility_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,7 +21,16 @@ async def bbands_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.bbands {ticker} {length} {n_std} {mamode} {start} {end}")
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.bbands %s %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
n_std,
|
||||
mamode,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
possible_ma = [
|
||||
@@ -105,7 +114,7 @@ async def bbands_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_bbands.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Bollinger-Bands " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def cci_command(ctx, ticker="", length="14", scalar="0.015", start="", end
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.cci {ticker} {length} {scalar} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.cci %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
scalar,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -80,7 +87,7 @@ async def cci_command(ctx, ticker="", length="14", scalar="0.015", start="", end
|
||||
uploaded_image = gst_imgur.upload_image("ta_cci.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Commodity-Channel-Index " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -20,7 +20,13 @@ async def cg_command(ctx, ticker="", length="14", start="", end=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.cg {ticker} {length} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.cg %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -76,7 +82,7 @@ async def cg_command(ctx, ticker="", length="14", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_cg.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Center-of-Gravity " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import volatility_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,8 +21,13 @@ async def donchian_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.ta.donchian {ticker} {upper_length} {lower_length} {start} {end}"
|
||||
logger.debug(
|
||||
"!stocks.ta.donchian %s %s %s %s %s",
|
||||
ticker,
|
||||
upper_length,
|
||||
lower_length,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
@@ -86,7 +91,7 @@ async def donchian_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_donchian.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Donchian-Channels " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def ema_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.ema {ticker} {window} {offset} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.ema %s %s %s %s %s",
|
||||
ticker,
|
||||
window,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -101,7 +108,7 @@ async def ema_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_ema.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Exponential-Moving-Average " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import custom_indicators_model
|
||||
from gamestonk_terminal import config_plot as cfp
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,12 @@ async def fib_command(ctx, ticker="", start="", end=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.fib {ticker} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.fib %s %s %s",
|
||||
ticker,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -81,7 +86,7 @@ async def fib_command(ctx, ticker="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_fib.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Fibonacci-Retracement-Levels " + ticker
|
||||
str_df_fib = "```" + df_fib.to_string(index=False) + "```"
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR, description=str_df_fib)
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ async def fisher_command(ctx, ticker="", length="14", start="", end=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.fisher {ticker} {length} {start} {end}")
|
||||
logger.debug("!stocks.ta.fisher %s %s %s %s", ticker, length, start, end)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -97,7 +97,7 @@ async def fisher_command(ctx, ticker="", length="14", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_fisher.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Fisher-Transform " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def hma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.hma {ticker} {window} {offset} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.hma %s %s %s %s %s",
|
||||
ticker,
|
||||
window,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -100,7 +107,7 @@ async def hma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_hma.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Hull-Moving-Average " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import volatility_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,8 +21,16 @@ async def kc_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(
|
||||
f"!stocks.ta.kc {ticker} {length} {scalar} {mamode} {offset} {start} {end}"
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.kc %s %s %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
scalar,
|
||||
mamode,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
@@ -94,7 +102,7 @@ async def kc_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_kc.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Keltner-Channel " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,7 +21,16 @@ async def macd_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.macd {ticker} {fast} {slow} {signal} {start} {end}")
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.macd %s %s %s %s %s %s",
|
||||
ticker,
|
||||
fast,
|
||||
slow,
|
||||
signal,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -88,7 +97,7 @@ async def macd_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_cci.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Moving-Average-Convergence-Divergence " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import volume_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,12 @@ async def obv_command(ctx, ticker="", start="", end=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.obv {ticker} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.obv %s %s %s",
|
||||
ticker,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -99,7 +104,7 @@ async def obv_command(ctx, ticker="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_obv.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: On-Balance-Volume " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -3,6 +3,7 @@ import discord
|
||||
from gamestonk_terminal.stocks.technical_analysis import tradingview_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def recom_command(ctx, ticker=""):
|
||||
@@ -12,7 +13,7 @@ async def recom_command(ctx, ticker=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.recom {ticker}")
|
||||
logger.debug("!stocks.ta.recom %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,7 +21,16 @@ async def rsi_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.rsi {ticker} {length} {scalar} {drift} {start} {end}")
|
||||
# pylint: disable=logging-too-many-args
|
||||
logger.debug(
|
||||
"!stocks.ta.rsi %s %s %s %s %s %s",
|
||||
ticker,
|
||||
length,
|
||||
scalar,
|
||||
drift,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -87,7 +96,7 @@ async def rsi_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_rsi.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Relative-Strength-Index " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def sma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.sma {ticker} {window} {offset} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.sma %s %s %s %s %s",
|
||||
ticker,
|
||||
window,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -100,7 +107,7 @@ async def sma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_sma.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Simple-Moving-Average " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -8,7 +8,7 @@ from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -21,7 +21,15 @@ async def stoch_command(
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.stoch {ticker} {fast_k} {slow_k} {slow_d} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.stoch %s %s %s %s %s %s",
|
||||
ticker,
|
||||
fast_k,
|
||||
slow_k,
|
||||
slow_d,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -93,7 +101,7 @@ async def stoch_command(
|
||||
uploaded_image = gst_imgur.upload_image("ta_stoch.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Stochastic-Relative-Strength-Index " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -3,6 +3,7 @@ import discord
|
||||
from gamestonk_terminal.stocks.technical_analysis import finbrain_model
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import logger
|
||||
|
||||
|
||||
async def summary_command(ctx, ticker=""):
|
||||
@@ -12,7 +13,7 @@ async def summary_command(ctx, ticker=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.summary {ticker}")
|
||||
logger.debug("!stocks.ta.summary %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
|
||||
@@ -5,6 +5,9 @@ import discord
|
||||
import discord_components
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
|
||||
from discordbot.run_discordbot import gst_bot, logger
|
||||
|
||||
import discordbot.helpers
|
||||
|
||||
from discordbot.stocks.technical_analysis.ema import ema_command
|
||||
@@ -30,7 +33,6 @@ from discordbot.stocks.technical_analysis.fib import fib_command
|
||||
from discordbot.stocks.technical_analysis.view import view_command
|
||||
from discordbot.stocks.technical_analysis.summary import summary_command
|
||||
from discordbot.stocks.technical_analysis.recom import recom_command
|
||||
from discordbot.run_discordbot import gst_bot
|
||||
|
||||
|
||||
class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
@@ -66,7 +68,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.ema")
|
||||
await ema_command(ctx, ticker, window, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -96,7 +98,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.sma")
|
||||
await sma_command(ctx, ticker, window, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -126,7 +128,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.wma")
|
||||
await wma_command(ctx, ticker, window, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -156,7 +158,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.hma")
|
||||
await hma_command(ctx, ticker, window, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -186,7 +188,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.zlma")
|
||||
await zlma_command(ctx, ticker, window, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -216,7 +218,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.cci")
|
||||
await cci_command(ctx, ticker, length, scalar, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -249,7 +251,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.macd")
|
||||
await macd_command(ctx, ticker, fast, slow, signal, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -282,7 +284,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.rsi")
|
||||
await rsi_command(ctx, ticker, length, scalar, drift, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -316,7 +318,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.stoch")
|
||||
await stoch_command(ctx, ticker, fast_k, slow_d, slow_k, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -343,7 +345,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.fisher")
|
||||
await fisher_command(ctx, ticker, length, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -370,7 +372,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.cg")
|
||||
await cg_command(ctx, ticker, length, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -403,7 +405,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.adx")
|
||||
await adx_command(ctx, ticker, length, scalar, drift, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -433,7 +435,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.aroon")
|
||||
await aroon_command(ctx, ticker, length, scalar, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -466,7 +468,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.bbands")
|
||||
await bbands_command(ctx, ticker, length, std, ma_mode, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -497,10 +499,11 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.donchian")
|
||||
await donchian_command(ctx, ticker, upper_length, lower_length, start, end)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
@discord.ext.commands.command(
|
||||
name="stocks.ta.kc",
|
||||
usage="[ticker] [length] [scalar] [ma_mode] [offset] [start] [end]",
|
||||
@@ -535,7 +538,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.kc")
|
||||
await kc_command(ctx, ticker, length, scalar, ma_mode, offset, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -562,7 +565,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.ad")
|
||||
await ad_command(ctx, ticker, is_open, start, end)
|
||||
|
||||
@discord.ext.commands.command(
|
||||
@@ -595,7 +598,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.adosc")
|
||||
await adosc_command(ctx, ticker, is_open, fast, slow, start, end)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.ta.obv", usage="[ticker] [start] [end]")
|
||||
@@ -611,7 +614,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.obv")
|
||||
await obv_command(ctx, ticker, start, end)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.ta.fib", usage="[ticker] [start] [end]")
|
||||
@@ -627,7 +630,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
end:
|
||||
Ending date in YYYY-MM-DD format
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.fib")
|
||||
await fib_command(ctx, ticker, start, end)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.ta.view")
|
||||
@@ -639,7 +642,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.view")
|
||||
await view_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.ta.summary", usage="[ticker]")
|
||||
@@ -651,7 +654,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.summary")
|
||||
await summary_command(ctx, ticker)
|
||||
|
||||
@discord.ext.commands.command(name="stocks.ta.recom", usage="[ticker]")
|
||||
@@ -663,7 +666,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
ticker: str
|
||||
ticker
|
||||
"""
|
||||
|
||||
logger.info("stocks.ta.recom")
|
||||
await recom_command(ctx, ticker)
|
||||
|
||||
# pylint: disable=too-many-statements
|
||||
@@ -678,9 +681,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
Sends a message to the discord user with the commands from the stocks.ta context.
|
||||
The user can then select a reaction to trigger a command.
|
||||
"""
|
||||
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta {ticker}")
|
||||
logger.info("!stocks.ta %s", ticker)
|
||||
|
||||
cols_temp = []
|
||||
cols = []
|
||||
@@ -844,8 +845,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
async def on_reaction_add(reaction, user):
|
||||
if user == ctx.message.author and str(reaction.emoji) in emoji_list:
|
||||
if reaction.emoji == "0️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 0")
|
||||
logger.info("!stocks.ta. Reaction selected: 0")
|
||||
if current == 0:
|
||||
await view_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
@@ -853,8 +853,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
elif current == 2:
|
||||
await adosc_command(ctx, ticker)
|
||||
elif reaction.emoji == "1️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 1")
|
||||
logger.info("!stocks.ta. Reaction selected: 1")
|
||||
if current == 0:
|
||||
await summary_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
@@ -862,8 +861,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
elif current == 2:
|
||||
await obv_command(ctx, ticker)
|
||||
elif reaction.emoji == "2️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 2")
|
||||
logger.info("!stocks.ta. Reaction selected: 2")
|
||||
if current == 0:
|
||||
await recom_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
@@ -871,50 +869,43 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog):
|
||||
elif current == 2:
|
||||
await fib_command(ctx, ticker)
|
||||
elif reaction.emoji == "3️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 3")
|
||||
logger.info("!stocks.ta. Reaction selected: 3")
|
||||
if current == 0:
|
||||
await ema_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await cg_command(ctx, ticker)
|
||||
elif reaction.emoji == "4️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 4")
|
||||
logger.info("!stocks.ta. Reaction selected: 4")
|
||||
if current == 0:
|
||||
await sma_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await adx_command(ctx, ticker)
|
||||
elif reaction.emoji == "5️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 5")
|
||||
logger.info("!stocks.ta. Reaction selected: 5")
|
||||
if current == 0:
|
||||
await wma_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await aroon_command(ctx, ticker)
|
||||
elif reaction.emoji == "6️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 6")
|
||||
logger.info("!stocks.ta. Reaction selected: 6")
|
||||
if current == 0:
|
||||
await hma_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await bbands_command(ctx, ticker)
|
||||
elif reaction.emoji == "7️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 7")
|
||||
logger.info("!stocks.ta. Reaction selected: 7")
|
||||
if current == 0:
|
||||
await zlma_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await donchian_command(ctx, ticker)
|
||||
elif reaction.emoji == "8️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 8")
|
||||
logger.info("!stocks.ta. Reaction selected: 8")
|
||||
if current == 0:
|
||||
await cci_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
await kc_command(ctx, ticker)
|
||||
elif reaction.emoji == "9️⃣":
|
||||
if cfg.DEBUG:
|
||||
print("Reaction selected: 9")
|
||||
logger.info("!stocks.ta. Reaction selected: 9")
|
||||
if current == 0:
|
||||
await macd_command(ctx, ticker)
|
||||
elif current == 1:
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.stocks.technical_analysis import finviz_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
|
||||
|
||||
async def view_command(ctx, ticker=""):
|
||||
@@ -19,7 +19,7 @@ async def view_command(ctx, ticker=""):
|
||||
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.view {ticker}")
|
||||
logger.debug("!stocks.ta.view %s", ticker)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -38,7 +38,7 @@ async def view_command(ctx, ticker=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_view.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: [Finviz] Trendlines & Data " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def wma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.wma {ticker} {window} {offset} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.wma %s %s %s %s %s",
|
||||
ticker,
|
||||
window,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -100,7 +107,7 @@ async def wma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_wma.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Weighted-Moving-Average " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
@@ -9,7 +9,7 @@ from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
|
||||
import discordbot.config_discordbot as cfg
|
||||
from discordbot.run_discordbot import gst_imgur
|
||||
from discordbot.run_discordbot import gst_imgur, logger
|
||||
import discordbot.helpers
|
||||
|
||||
|
||||
@@ -19,7 +19,14 @@ async def zlma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
try:
|
||||
# Debug
|
||||
if cfg.DEBUG:
|
||||
print(f"!stocks.ta.zlma {ticker} {window} {offset} {start} {end}")
|
||||
logger.debug(
|
||||
"!stocks.ta.zlma %s %s %s %s %s",
|
||||
ticker,
|
||||
window,
|
||||
offset,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
# Check for argument
|
||||
if ticker == "":
|
||||
@@ -100,7 +107,7 @@ async def zlma_command(ctx, ticker="", window="", offset="", start="", end=""):
|
||||
uploaded_image = gst_imgur.upload_image("ta_zlma.png", title="something")
|
||||
image_link = uploaded_image.link
|
||||
if cfg.DEBUG:
|
||||
print(f"Image URL: {image_link}")
|
||||
logger.debug("Image URL: %s", image_link)
|
||||
title = "Stocks: Zero-Lag-Moving-Average " + ticker
|
||||
embed = discord.Embed(title=title, colour=cfg.COLOR)
|
||||
embed.set_author(
|
||||
|
||||
Reference in New Issue
Block a user