added transaction and portfolio commands
This commit is contained in:
parent
5078660ce1
commit
543c51397e
@ -33,6 +33,10 @@ class API_Handler:
|
||||
get_user_transactions(user_id): gets the transactions of the user
|
||||
set_transaction(user_id, transaction): sets the transaction of the user
|
||||
delete_transaction(user_id, transaction): deletes the transaction of the user
|
||||
get_user_portfolio(user_id): gets the portfolio of the user
|
||||
set_portfolio(user_id, portfolio): sets the portfolio of the user
|
||||
delete_portfolio(user_id, portfolio): deletes the portfolio of the user
|
||||
set_cron_interval(user_id, interval): sets the cron interval of the user
|
||||
"""
|
||||
|
||||
|
||||
|
@ -14,14 +14,13 @@ __license__ = "None"
|
||||
# API Documentation https://core.telegram.org/bots/api
|
||||
# Code examples https://github.com/eternnoir/pyTelegramBotAPI#getting-started
|
||||
|
||||
from ast import keyword
|
||||
import os
|
||||
|
||||
import telebot
|
||||
import time
|
||||
import sys
|
||||
import logging
|
||||
import json
|
||||
import re
|
||||
|
||||
import news.news_fetcher as news
|
||||
import shares.share_fetcher as share_fetcher
|
||||
@ -380,6 +379,67 @@ def send_keywords(message):
|
||||
bot.send_message(chat_id=user_id, text=f'Your keywords are: _{keywords_str}_', parse_mode="MARKDOWN")
|
||||
|
||||
|
||||
@bot.message_handler(commands=['portfolio'])
|
||||
def send_portfolio(message):
|
||||
""" Send portfolio of user
|
||||
:type message: message object bot
|
||||
:param message: message that was reacted to, in this case always '/portfolio'
|
||||
|
||||
:raises: none
|
||||
|
||||
:rtype: none
|
||||
"""
|
||||
user_id = int(message.from_user.id)
|
||||
portfolio = api_handler.get_user_portfolio(user_id)
|
||||
if portfolio == None:
|
||||
bot.send_message(chat_id=user_id, text='This didn\'t work. Make sure too connect your telegram id (/id) on https://gruppe1.testsites.info')
|
||||
return
|
||||
if not portfolio:
|
||||
bot.send_message(chat_id=user_id, text='You do not have any stocks in your portfolio.')
|
||||
return
|
||||
else:
|
||||
portfolio_str = ', '.join(portfolio) # tbd: format portfolio
|
||||
bot.send_message(chat_id=user_id, text=f'Your portfolio is: _{portfolio_str}_', parse_mode="MARKDOWN")
|
||||
|
||||
|
||||
@bot.message_handler(commands=['newtransaction'])
|
||||
def set_new_transaction(message):
|
||||
""" Set new transaction for user
|
||||
:type message: message object bot
|
||||
:param message: message that was reacted to, in this case always '/newtransaction'
|
||||
|
||||
:raises: none
|
||||
|
||||
:rtype: none
|
||||
"""
|
||||
user_id = int(message.from_user.id)
|
||||
bot.send_message(chat_id=user_id, text='Type "<symbol>,<amount>,<price_per_stock>" (time of transaction will be set to now):')
|
||||
bot.register_next_step_handler(message, set_new_transaction_step)
|
||||
|
||||
def set_new_transaction_step(message):
|
||||
user_id = int(message.from_user.id)
|
||||
|
||||
if not re.match(r"[A-Za-z0-9]+,[0-9]+[.[0-9]+]?,[0-9]+[.[0-9]+]?", message.text):
|
||||
bot.send_message(chat_id=user_id, text='Invalid format. Try again with /newtransaction.')
|
||||
return
|
||||
|
||||
transaction_data = str(message.text).split(',')
|
||||
symbol = str(transaction_data[0])
|
||||
amount = float(transaction_data[1])
|
||||
price = float(transaction_data[2])
|
||||
time = dt.datetime.now()
|
||||
|
||||
status = api_handler.set_transaction(user_id, amount, price, symbol, time)
|
||||
|
||||
if status == 200:
|
||||
bot.send_message(chat_id=user_id, text='Transaction succesfully added.')
|
||||
else:
|
||||
bot.send_message(chat_id=user_id, text=f'Failed adding transaction. (statuscode {status})')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@bot.message_handler(func=lambda message: True) # Returning that command is unknown for any other statement
|
||||
def echo_all(message):
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user