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

Added a crypto command.

This commit is contained in:
Anson 2020-11-01 15:26:35 -07:00
parent 28f2ba2320
commit 85d5cc9a30
2 changed files with 51 additions and 0 deletions

21
bot.py
View File

@ -188,6 +188,26 @@ def stat(update, context):
) )
def crypto(update, context):
"""
https://iexcloud.io/docs/api/#cryptocurrency-quote
"""
context.bot.send_chat_action(
chat_id=update.message.chat_id, action=telegram.ChatAction.TYPING
)
message = update.message.text
reply = s.crypto(message)
if reply:
update.message.reply_text(text=reply, parse_mode=telegram.ParseMode.MARKDOWN)
else:
update.message.reply_text(
text=f"Pair: f{message} returned an error.",
parse_mode=telegram.ParseMode.MARKDOWN,
)
def inline_query(update, context): def inline_query(update, context):
""" """
Handles inline query. Handles inline query.
@ -256,6 +276,7 @@ def main():
dp.add_handler(CommandHandler("search", search)) dp.add_handler(CommandHandler("search", search))
dp.add_handler(CommandHandler("intraday", intra)) dp.add_handler(CommandHandler("intraday", intra))
dp.add_handler(CommandHandler("intra", intra)) dp.add_handler(CommandHandler("intra", intra))
dp.add_handler(CommandHandler("crypto", crypto))
dp.add_handler(CommandHandler("random", rand_pick)) dp.add_handler(CommandHandler("random", rand_pick))
# on noncommand i.e message - echo the message on Telegram # on noncommand i.e message - echo the message on Telegram

View File

@ -261,3 +261,33 @@ Market data is provided by [IEX Cloud](https://iexcloud.io)
] = f"No information found for: {symbol}\nEither today is boring or the symbol does not exist." ] = f"No information found for: {symbol}\nEither today is boring or the symbol does not exist."
return infoMessages return infoMessages
def crypto(self, pair):
"""Get quote for a cryptocurrency pair.
Args:
pair (string): Cryptocurrency
"""
pair = pair.split(" ")[-1].replace("/", "").upper()
IEXurl = f"https://cloud.iexapis.com/stable/crypto/{pair}/quote?token={self.IEX_TOKEN}"
response = r.get(IEXurl)
if response.status_code == 200:
data = response.json()
quote = f"Symbol: {data['symbol']}\n"
quote += f"Price: {data['latestPrice']}\n"
quote += f"Volume: {data['latestVolume']}\n"
new, old = data["latestPrice"], data["previousClose"]
if old is not None:
change = (float(new) - float(old)) / float(old)
quote += f"Change: {change}\n"
return quote
else:
return False