diff --git a/telegram_bot/api_handling/api_handler.py b/telegram_bot/api_handling/api_handler.py index 97eb937..8c14833 100644 --- a/telegram_bot/api_handling/api_handler.py +++ b/telegram_bot/api_handling/api_handler.py @@ -83,16 +83,20 @@ class API_Handler: Returns: list: list of keywords """ + keywords = [] with r.Session() as s: headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)} req = s.get(self.db_adress + "/keywords", headers=headers) - print(req.status_code) - keywords_json = req.json()["data"] - keywords = [] - for keyword in keywords_json: - keywords.append(keyword["keyword"]) + if(req.status_code == 200): + keywords_json = req.json()["data"] + for keyword in keywords_json: + keywords.append(keyword["keyword"]) + + return keywords + + else: + return self.get_user_keywords(user_id) # might end in infinite loop!! - return keywords def set_keyword(self, user_id, keyword): @@ -193,8 +197,10 @@ class API_Handler: with r.Session() as s: headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)} req = s.get(self.db_adress + "/transactions", headers=headers) - transactions_dict = dict(req.json()["data"]) - return transactions_dict + + if req.status_code == 200: + transactions_dict = dict(req.json()["data"]) + return transactions_dict def set_transaction(self, user_id, count, price, symbol, timestamp): diff --git a/telegram_bot/bot.py b/telegram_bot/bot.py index 9f75ecf..43d8845 100644 --- a/telegram_bot/bot.py +++ b/telegram_bot/bot.py @@ -245,12 +245,12 @@ def send_news(message): user_id = int(message.from_user.id) keywords = api_handler.get_user_keywords(user_id) - keyword_search = 'OR'.join(keywords) + keywords_search = ','.join(keywords) - news_list = api_handler.get_news_for_keyword(keyword_search)['articles'] + news_list = news.get_top_news_by_keyword(keywords_search)["articles"] - for news in news_list: - formatted_article = news.format_article(news) + for article in news_list: + formatted_article = news.format_article(article) bot.send_message(chat_id=user_id, text=formatted_article, parse_mode="MARKDOWN") @@ -275,6 +275,7 @@ def store_keyword(message): api_handler.set_keyword(user_id, keyword) bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" added.') + @bot.message_handler(commands=['removekeyword']) def remove_keyword(message): """ Remove keyword from user @@ -296,6 +297,21 @@ def remove_keyword_step(message): bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" removed.') +@bot.message_handler(commands=['keywords']) +def send_keywords(message): + """ Send keywords of user + :type message: message object bot + :param message: message that was reacted to, in this case always '/keywords' + + :raises: none + + :rtype: none + """ + user_id = int(message.from_user.id) + keywords = api_handler.get_user_keywords(user_id) + bot.send_message(chat_id=user_id, text=f'Your keywords are: {keywords}') + + @bot.message_handler(func=lambda message: True) # Returning that command is unkown for any other statement def echo_all(message): diff --git a/telegram_bot/news/news_fetcher.py b/telegram_bot/news/news_fetcher.py index 69c0807..e320936 100644 --- a/telegram_bot/news/news_fetcher.py +++ b/telegram_bot/news/news_fetcher.py @@ -6,6 +6,7 @@ __date__ = "15.03.2022" __version__ = "0.0.1" __license__ = "None" +from ast import parse import sys import os import json @@ -13,6 +14,7 @@ import requests from newsapi import NewsApiClient from dotenv import load_dotenv +import urllib.parse as urlparse load_dotenv() @@ -31,8 +33,9 @@ def get_top_news_by_keyword(keyword): Returns: JSON/dict: dict containing articles - """ - top_headlines = newsapi.get_top_headlines(q=keyword, sources=str_sources, language='en') + """ + keyword_url = urlparse.quote(keyword) + top_headlines = newsapi.get_top_headlines(q=keyword_url, sources=str_sources, language='en') return top_headlines def format_article(article):