fixed case sensitive commands

This commit is contained in:
Linus E 2022-04-19 21:36:16 +02:00
parent 71fed7fd18
commit 7a4a8aaedc
2 changed files with 33 additions and 31 deletions

View File

@ -270,22 +270,23 @@ class API_Handler:
return self.get_user_transactions(user_id, max_retries-1) return self.get_user_transactions(user_id, max_retries-1)
def set_transaction(self, user_id, count, price, symbol, timestamp): def set_transaction(self, user_id, comment, isin, count, price, time):
"""sets the transaction of the user """sets the transaction of the user
Args: Args:
user_id (int): id of the user user_id (int): id of the user
comment (string): comment of the transaction
isin (string): isin of the transaction
count (int): count of the transaction count (int): count of the transaction
price (float): price of the transaction price (float): price of the transaction
symbol (string): symbol of the transaction time (string): time of the transaction
timestamp (string): timestamp of the transaction
Returns: Returns:
int: status code int: status code
""" """
with r.Session() as s: with r.Session() as s:
headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)} headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)}
transaction = {"count": count, "price": price, "symbol": symbol, "time": timestamp} transaction = {"comment": comment, "count": count, "isin": isin, "price": price, "time": time}
req = s.post(self.db_adress + "/transaction", json=transaction, headers=headers) req = s.post(self.db_adress + "/transaction", json=transaction, headers=headers)
return req.status_code return req.status_code

View File

@ -68,7 +68,7 @@ class User: # Currently saving users in this class to test functionality -> late
bot = telebot.TeleBot(os.getenv('BOT_API_KEY')) bot = telebot.TeleBot(os.getenv('BOT_API_KEY'))
@bot.message_handler(commands=['start']) # /start -> saving as new user and sending welcome @bot.message_handler(commands=['start', 'Start']) # /start -> saving as new user and sending welcome
def send_start(message): def send_start(message):
""" Description """ Description
@ -90,7 +90,7 @@ def send_start(message):
bot.reply_to(message, "Welcome to this share bot project. Type /help to get information on what this bot can do") bot.reply_to(message, "Welcome to this share bot project. Type /help to get information on what this bot can do")
@bot.message_handler(commands=['version']) @bot.message_handler(commands=['version', 'Version'])
def send_version(message): def send_version(message):
""" Sending programm version """ Sending programm version
@ -104,7 +104,7 @@ def send_version(message):
bot.reply_to(message, bot_version) bot.reply_to(message, bot_version)
@bot.message_handler(commands=['help']) # /help -> sending all functions @bot.message_handler(commands=['help', 'Help']) # /help -> sending all functions
def send_welcome(message): def send_welcome(message):
""" Send all functions """ Send all functions
@ -118,7 +118,7 @@ def send_welcome(message):
bot.reply_to(message, "/id or /auth get your user id\n/update get updates on your shares.\n/users see all users.\n/me get my user info\n/news get top article for each keyword.\n/allnews get all news (last 7 days)\n/keywords get all your keywords\n/addkeyword add a keyword\n/removekeyword remove a keyword\n/share get price of specific share\n/portfolio see own portfolio\n/newtransaction add new transaction\n/interval get update interval\n/setinterval set update interval\n_For further details see https://gruppe1.testsites.info _", parse_mode='MARKDOWN') bot.reply_to(message, "/id or /auth get your user id\n/update get updates on your shares.\n/users see all users.\n/me get my user info\n/news get top article for each keyword.\n/allnews get all news (last 7 days)\n/keywords get all your keywords\n/addkeyword add a keyword\n/removekeyword remove a keyword\n/share get price of specific share\n/portfolio see own portfolio\n/newtransaction add new transaction\n/interval get update interval\n/setinterval set update interval\n_For further details see https://gruppe1.testsites.info _", parse_mode='MARKDOWN')
@bot.message_handler(commands=['users']) @bot.message_handler(commands=['users', 'Users']) # /users -> sending all users
def send_all_users(message): def send_all_users(message):
""" Send all users, only possible for admins """ Send all users, only possible for admins
@ -141,7 +141,7 @@ def send_all_users(message):
bot.send_message(chat_id=user_id, text=answer) bot.send_message(chat_id=user_id, text=answer)
@bot.message_handler(commands=['me']) @bot.message_handler(commands=['me', 'Me']) # /me -> sending user info
def send_user(message): def send_user(message):
""" Send user data """ Send user data
:type message: message object bot :type message: message object bot
@ -160,7 +160,7 @@ def send_user(message):
bot.reply_to(message, 'Your user data:\n' + str(user_data)) bot.reply_to(message, 'Your user data:\n' + str(user_data))
@bot.message_handler(commands=['id', 'auth']) # /auth or /id -> Authentication with user_id over web tool @bot.message_handler(commands=['id', 'auth', 'Id', 'Auth']) # /auth or /id -> Authentication with user_id over web tool
def send_id(message): def send_id(message):
""" Send user id for authentication with browser """ Send user id for authentication with browser
@ -176,7 +176,7 @@ def send_id(message):
#function that sends telegram status(running or offline) as message from telegram bot to user #function that sends telegram status(running or offline) as message from telegram bot to user
@bot.message_handler(commands=['status']) @bot.message_handler(commands=['status', 'Status'])
def send_status(message): def send_status(message):
""" Sends status to user """ Sends status to user
@ -190,7 +190,7 @@ def send_status(message):
bot.reply_to(message, "bot is running") bot.reply_to(message, "bot is running")
@bot.message_handler(commands=['update']) @bot.message_handler(commands=['update', 'Update']) # /update -> update shares
def send_update(message): def send_update(message):
""" Send update on shares """ Send update on shares
@ -228,7 +228,7 @@ def send_update(message):
bot.send_message(chat_id=user_id, text=my_update_message) bot.send_message(chat_id=user_id, text=my_update_message)
@bot.message_handler(commands=['share']) @bot.message_handler(commands=['share', 'Share']) # /share -> get share price
def send_share_update(message): def send_share_update(message):
""" Send price of a specific share """ Send price of a specific share
@ -251,7 +251,7 @@ def send_share_price(message):
bot.reply_to(message, str_share_price) bot.reply_to(message, str_share_price)
@bot.message_handler(commands=['allnews']) @bot.message_handler(commands=['allnews', 'Allnews']) # /allnews -> get all news
def send_all_news(message): def send_all_news(message):
""" Get news for keywords of user """ Get news for keywords of user
@ -290,7 +290,7 @@ def send_all_news(message):
bot.send_message(chat_id=user_id, text='No news found for your keywords.') bot.send_message(chat_id=user_id, text='No news found for your keywords.')
@bot.message_handler(commands=['news']) @bot.message_handler(commands=['news', 'News']) # /news -> get news for specific keyword
def send_news(message): def send_news(message):
""" Get news for keywords of user """ Get news for keywords of user
@ -326,7 +326,7 @@ def send_news(message):
bot.send_message(chat_id=user_id, text=f"_keyword: {keyword}_\n\n" + formatted_article, parse_mode="MARKDOWN") bot.send_message(chat_id=user_id, text=f"_keyword: {keyword}_\n\n" + formatted_article, parse_mode="MARKDOWN")
@bot.message_handler(commands=['addkeyword']) @bot.message_handler(commands=['addkeyword', 'Addkeyword']) # /addkeyword -> add keyword to user
def add_keyword(message): def add_keyword(message):
""" Add keyword to user """ Add keyword to user
:type message: message object bot :type message: message object bot
@ -348,10 +348,10 @@ def store_keyword(message):
if status == 200: if status == 200:
bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" added.') bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" added.')
else: else:
bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" could not be stored. (statuscode {status})') bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" could not be stored. Make sure to connect your telegram id (/id) on https://gruppe1.testsites.info (statuscode {status})')
@bot.message_handler(commands=['removekeyword']) @bot.message_handler(commands=['removekeyword', 'Removekeyword']) # /removekeyword -> remove keyword from user
def remove_keyword(message): def remove_keyword(message):
""" Remove keyword from user """ Remove keyword from user
:type message: message object bot :type message: message object bot
@ -375,7 +375,7 @@ def remove_keyword_step(message):
bot.send_message(chat_id=user_id, text=f'Failed deleting keyword "{keyword}". (statuscode {status})') bot.send_message(chat_id=user_id, text=f'Failed deleting keyword "{keyword}". (statuscode {status})')
@bot.message_handler(commands=['keywords']) @bot.message_handler(commands=['keywords', 'Keywords']) # /keywords -> get keywords of user
def send_keywords(message): def send_keywords(message):
""" Send keywords of user """ Send keywords of user
:type message: message object bot :type message: message object bot
@ -398,7 +398,7 @@ def send_keywords(message):
bot.send_message(chat_id=user_id, text=f'Your keywords are: _{keywords_str}_', parse_mode="MARKDOWN") bot.send_message(chat_id=user_id, text=f'Your keywords are: _{keywords_str}_', parse_mode="MARKDOWN")
@bot.message_handler(commands=['portfolio']) #tbd @bot.message_handler(commands=['portfolio', 'Portfolio']) #tbd
def send_portfolio(message): def send_portfolio(message):
""" Send portfolio of user """ Send portfolio of user
:type message: message object bot :type message: message object bot
@ -425,7 +425,7 @@ def send_portfolio(message):
bot.send_message(chat_id=user_id, text=f'*{comment}*\n_{isin}_\namount: {count}\nworth: ${worth}', parse_mode="MARKDOWN") bot.send_message(chat_id=user_id, text=f'*{comment}*\n_{isin}_\namount: {count}\nworth: ${worth}', parse_mode="MARKDOWN")
@bot.message_handler(commands=['newtransaction']) #tbd not working rn @bot.message_handler(commands=['newtransaction', 'Newtransaction']) #tbd not working rn
def set_new_transaction(message): def set_new_transaction(message):
""" Set new transaction for user """ Set new transaction for user
:type message: message object bot :type message: message object bot
@ -436,24 +436,25 @@ def set_new_transaction(message):
:rtype: none :rtype: none
""" """
user_id = int(message.from_user.id) user_id = int(message.from_user.id)
bot.send_message(chat_id=user_id, text='Type "<symbol>,<amount>,<price_per_stock_usd>" (time of transaction will be set to now):') bot.send_message(chat_id=user_id, text='Type "<name of stock>,<isin>,<amount>,<price_per_stock_usd>" (time of transaction will be set to now):')
bot.register_next_step_handler(message, set_new_transaction_step) bot.register_next_step_handler(message, set_new_transaction_step)
def set_new_transaction_step(message): def set_new_transaction_step(message):
user_id = int(message.from_user.id) 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): if not re.match(r"[A-Za-z0-9]+,[A-Za-z0-9]+,[0-9]+(.[0-9]+)?,[0-9]+(.[0-9]+)?", message.text):
bot.send_message(chat_id=user_id, text='Invalid format \n(e.g. AAPL,53.2,120.4).\n Try again with /newtransaction.') bot.send_message(chat_id=user_id, text='Invalid format \n(e.g. Apple,US0378331005,53.2,120.4).\n Try again with /newtransaction.')
return return
transaction_data = str(message.text).split(',') transaction_data = str(message.text).split(',')
symbol = str(transaction_data[0]) desc = str(transaction_data[0])
amount = float(transaction_data[1]) isin = str(transaction_data[1])
price = float(transaction_data[2]) amount = float(transaction_data[2])
time = dt.datetime.now() price = float(transaction_data[3])
time = dt.datetime.now().isoformat()
#print("\n\n\n\n\n") #print("\n\n\n\n\n")
#print(f"{symbol},{amount},{price},{time}") #print(f"{symbol},{amount},{price},{time}")
status = api_handler.set_transaction(user_id, amount, price, symbol, time) status = api_handler.set_transaction(user_id, desc, isin, amount, price, time)
if status == 200: if status == 200:
bot.send_message(chat_id=user_id, text='Transaction succesfully added.') bot.send_message(chat_id=user_id, text='Transaction succesfully added.')
@ -461,7 +462,7 @@ def set_new_transaction_step(message):
bot.send_message(chat_id=user_id, text=f'Failed adding transaction. (statuscode {status})') bot.send_message(chat_id=user_id, text=f'Failed adding transaction. (statuscode {status})')
@bot.message_handler(commands=['interval']) @bot.message_handler(commands=['interval', 'Interval']) #tbd
def send_interval(message): def send_interval(message):
""" send interval for user """ send interval for user
:type message: message object bot :type message: message object bot
@ -485,7 +486,7 @@ def send_interval(message):
bot.send_message(chat_id=user_id, text=f'Your update interval: {interval} (https://crontab.guru/#{formatted_interval})') bot.send_message(chat_id=user_id, text=f'Your update interval: {interval} (https://crontab.guru/#{formatted_interval})')
@bot.message_handler(commands=['setinterval']) @bot.message_handler(commands=['setinterval', 'Setinterval']) #tbd
def set_new_interval(message): def set_new_interval(message):
""" Set new interval for user """ Set new interval for user
:type message: message object bot :type message: message object bot