implemented News to scheduled User Update

This commit is contained in:
Linus E 2022-04-25 17:32:48 +02:00
parent 78dfde7a86
commit d163ba08f3

View File

@ -8,14 +8,18 @@ __license__ = "None"
from calendar import month from calendar import month
from symtable import Symbol from symtable import Symbol
from dotenv import load_dotenv
from shares.share_fetcher import get_share_price from shares.share_fetcher import get_share_price
import news.news_fetcher as news_fetcher
import time import time
import datetime import datetime
import os
from bot import bot from bot import bot
import sys import sys
from multiprocessing import Process from multiprocessing import Process
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler
from api_handling.api_handler import API_Handler 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_ids = []
user_crontab = [] 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 """ main loop for regularly sending updates
:raises: none :raises: none
@ -41,7 +47,7 @@ def main_loop():
""" """
current_time_datetime = datetime.datetime.now() 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) # 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"]) share_courses.append(element["current_price"])
my_user = p_my_handler.get_user(p_user_id) 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: if len(share_symbols) != 0:
for i in range(len(share_symbols)): for i in range(len(share_symbols)):
@ -149,8 +155,18 @@ def update_for_user(p_user_id, p_my_handler):
else: 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) 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)
def send_to_user(pText, pUser_id = 1770205310): 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, md_mode = False):
""" Send message to user """ Send message to user
:type pText: string :type pText: string
@ -159,11 +175,18 @@ def send_to_user(pText, pUser_id = 1770205310):
:type pUser_id: int :type pUser_id: int
:param pUser_id: user to send to. per default me (Florian Kellermann) :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 :raises: none
:rtype: 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__": if __name__ == "__main__":