import os from datetime import datetime from downloader import downloadCsv from csvReader import readCSV from bot import Bot from schedule import every, repeat, run_pending from util import dbFile, initDb import time from util import setupLogger logger = setupLogger() bot = Bot() def getScore(): downloadCsv() myScore = readCSV() try: myScore = 100 * float(myScore) except (TypeError, ValueError): myScore = 0 return myScore def processMessages(messages): if 'update' in (msg.lower() for msg in messages): logger.info("EXPLICIT SCORE UPDATE REQUESTED") score = getScore() bot.sendMessage(f"Score leantime bulan ini = {score}%") @repeat(every().day.at("09:00")) def main(): logger.info("SCHEDULER RUN") today = datetime.today() weekday = today.weekday() if weekday not in [5, 6]: # jangan ganggu aku di akhir pekan myScore = getScore() msg = f"Leantime score = {myScore}%. Jangan lupa isi leantime" if (17 <= today.day <= 24) and myScore < 70: # seminggu sebelumnya udah ngingetin msg = f'WARNING! SEKARANG UDAH TANGGAL {today.day}, SCORE LEANTIME MASIH {myScore}%' bot.sendMessage(msg) if __name__ == '__main__': try: if not os.path.isfile(dbFile): initDb() while True: if not bot.isProcessingPolling and bot.hasNewMessages: processMessages(bot.getNewMessages()) else: bot.pollUpdate() run_pending() time.sleep(1) except BaseException as e: logger.error(repr(e))