1
0
mirror of https://gitlab.com/simple-stock-bots/simple-stock-bot.git synced 2025-06-16 15:17:28 +00:00

added /news functionality #22

This commit is contained in:
Anson 2019-06-11 05:08:49 -07:00
parent 99f0bf68d1
commit fd1baad811
2 changed files with 43 additions and 1 deletions

20
bot.py
View File

@ -67,6 +67,25 @@ def dividend(bot, update):
text=reply, parse_mode=telegram.ParseMode.MARKDOWN text=reply, parse_mode=telegram.ParseMode.MARKDOWN
) )
def news(bot, update):
"""
waits for /news command and then finds news info on that ticker.
"""
message = update.message.text
chat_id = update.message.chat_id
tickers = getTickers(message)
if tickers:
bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING)
for symbol, reply in tickerNews(tickers).items():
update.message.reply_text(
text=reply, parse_mode=telegram.ParseMode.MARKDOWN
)
def error(bot, update, error): def error(bot, update, error):
"""Log Errors caused by Updates.""" """Log Errors caused by Updates."""
logger.warning('Update "%s" caused error "%s"', update, error) logger.warning('Update "%s" caused error "%s"', update, error)
@ -85,6 +104,7 @@ def main():
dp.add_handler(CommandHandler("help", help)) dp.add_handler(CommandHandler("help", help))
dp.add_handler(CommandHandler("dividend", dividend)) dp.add_handler(CommandHandler("dividend", dividend))
dp.add_handler(CommandHandler("div", dividend)) dp.add_handler(CommandHandler("div", dividend))
dp.add_handler(CommandHandler("news", news))
# on noncommand i.e message - echo the message on Telegram # on noncommand i.e message - echo the message on Telegram
dp.add_handler(MessageHandler(Filters.text, tickerDetect)) dp.add_handler(MessageHandler(Filters.text, tickerDetect))

View File

@ -6,6 +6,8 @@ import urllib.request
from datetime import datetime from datetime import datetime
IEX_TOKEN = os.environ["IEX"] IEX_TOKEN = os.environ["IEX"]
def getTickers(text: str): def getTickers(text: str):
""" """
Takes a blob of text and returns any stock tickers found. Takes a blob of text and returns any stock tickers found.
@ -76,3 +78,23 @@ def tickerDividend(tickers: list):
messages[ticker] = f"{ticker} either doesn't exist or pays no dividend." messages[ticker] = f"{ticker} either doesn't exist or pays no dividend."
return messages return messages
def tickerNews(tickers: list):
messages = {}
for ticker in tickers:
IEXurl = f"https://cloud.iexapis.com/stable/stock/{ticker}/news/last/3?token={IEX_TOKEN}"
with urllib.request.urlopen(IEXurl) as url:
data = json.loads(url.read().decode())
if data:
messages[ticker] = f"News for **{ticker.upper()}**:\n"
for news in data:
message = f"\t[{news['headline']}]({news['url']})\n\n"
messages[ticker] = messages[ticker] + message
else:
messages[
ticker
] = f"No news found for: {ticker}\nEither today is boring or the ticker does not exist."
return messages