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 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)):
@ -149,8 +155,18 @@ def update_for_user(p_user_id, p_my_handler):
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)
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
:type pText: string
@ -159,13 +175,20 @@ 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
"""
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__":
print('bot_updates.py starting.')