diff --git a/telegram_bot/bot_updates.py b/telegram_bot/bot_updates.py index 6269b5e..33da954 100644 --- a/telegram_bot/bot_updates.py +++ b/telegram_bot/bot_updates.py @@ -8,14 +8,18 @@ __license__ = "None" from calendar import month from symtable import Symbol +from dotenv import load_dotenv from shares.share_fetcher import get_share_price +import news.news_fetcher as news_fetcher import time import datetime +import os from bot import bot import sys from multiprocessing import Process from apscheduler.schedulers.background import BackgroundScheduler from api_handling.api_handler import API_Handler +from telegram_bot.news.news_fetcher import format_article ''' @@ -33,7 +37,9 @@ example 0 8 * * * -> daily update at 8am user_ids = [] user_crontab = [] -def main_loop(): +load_dotenv(dotenv_path='.env') + +def main_loop(): #loop? this is not a loop it is executed once (rename?) """ main loop for regularly sending updates :raises: none @@ -41,7 +47,7 @@ def main_loop(): """ current_time_datetime = datetime.datetime.now() - my_handler = API_Handler("https://gruppe1.testsites.info/api", "bot@example.com", "bot") + my_handler = API_Handler("https://gruppe1.testsites.info/api", str(os.getenv("BOT_EMAIL")), str(os.getenv("BOT_PASSWORD"))) # update_for_user(5270256395, my_handler) # Debug (running test update for kevins shares) @@ -140,7 +146,7 @@ def update_for_user(p_user_id, p_my_handler): share_courses.append(element["current_price"]) my_user = p_my_handler.get_user(p_user_id) - send_to_user("Hello %s this is your share update:"%str(my_user["username"]), pUser_id=p_user_id) + send_to_user("Hello %s this is your share update for today:"%str(my_user["username"]), pUser_id=p_user_id) if len(share_symbols) != 0: for i in range(len(share_symbols)): @@ -148,9 +154,19 @@ def update_for_user(p_user_id, p_my_handler): send_to_user(my_update_message, pUser_id=p_user_id) else: send_to_user("No shares found for your account. Check https://gruppe1.testsites.info/api to change your settings and add shares.", pUser_id=p_user_id) + + keywords = p_my_handler.get_user_keywords(p_user_id) + + if(keywords): + send_to_user("If you haven't read yet: \nHere are some interesting news according to your keywords:", pUser_id=p_user_id) + for keyword in keywords: + news = news_fetcher.get_top_news_by_keyword(keyword)["articles"][0] + news_formatted = news_fetcher.format_article(news) + send_to_user(f"_keyword: {keyword}_\n\n{news_formatted}", pUser_id=p_user_id, md_mode=True) + -def send_to_user(pText, pUser_id = 1770205310): +def send_to_user(pText, pUser_id = 1770205310, md_mode = False): """ Send message to user :type pText: string @@ -159,11 +175,18 @@ def send_to_user(pText, pUser_id = 1770205310): :type pUser_id: int :param pUser_id: user to send to. per default me (Florian Kellermann) + :type md_mode: boolean + :param md_mode: if true, parse_mode is markdown + :raises: none :rtype: none """ - bot.send_message(chat_id=pUser_id, text=pText) + if md_mode: + bot.send_message(chat_id=pUser_id, text=pText, parse_mode="MARKDOWN") + else: + bot.send_message(chat_id=pUser_id, text=pText) + if __name__ == "__main__":