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:
parent
28f2ba2320
commit
85d5cc9a30
21
bot.py
21
bot.py
@ -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
|
||||||
|
30
functions.py
30
functions.py
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user