summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bot.py12
-rw-r--r--downloader.py14
-rw-r--r--main.py11
-rw-r--r--util.py4
4 files changed, 30 insertions, 11 deletions
diff --git a/bot.py b/bot.py
index b17a3bd..c66d6a0 100644
--- a/bot.py
+++ b/bot.py
@@ -1,5 +1,6 @@
import os
import sqlite3
+import urllib.error
from urllib import parse
import requests
from dotenv import load_dotenv
@@ -59,10 +60,13 @@ class Bot:
def pollUpdate(self):
self.isProcessingPolling = True
- url = f'https://api.telegram.org/bot{self.token}/getUpdates'
- response = requests.get(url)
- if response.status_code == 200:
- self._dbUpdate(response.json())
+ try:
+ url = f'https://api.telegram.org/bot{self.token}/getUpdates'
+ response = requests.get(url)
+ if response.status_code == 200:
+ self._dbUpdate(response.json())
+ except requests.exceptions.ConnectionError as e:
+ logger.error("Connection error during polling update")
self._checkUnreadDb()
self.isProcessingPolling = False
diff --git a/downloader.py b/downloader.py
index 7ab3c79..5515b66 100644
--- a/downloader.py
+++ b/downloader.py
@@ -4,6 +4,7 @@ Ini nanti periodik
import os
import time
+import selenium
from dotenv import load_dotenv
from selenium import webdriver
from selenium.common import TimeoutException
@@ -31,7 +32,12 @@ class Browser:
op.add_argument("--no-sandbox")
op.add_argument("--disable-dev-shm-usage")
self.driver = webdriver.Chrome(options=op)
- self.driver.get(url)
+ try:
+ self.driver.get(url)
+ self.connectionSuccess = True
+ except selenium.common.exceptions.WebDriverException:
+ self.connectionSuccess = False
+ logger.error(f"Selenium couldn't connect to {url}")
def getDriver(self):
return self.driver
@@ -42,7 +48,10 @@ class Browser:
def downloadCsv():
+ downloadSuccess = False
browser = Browser(os.getenv('URL'))
+ if not browser.connectionSuccess:
+ return False
driver = browser.getDriver()
action = ActionChains(driver)
@@ -66,12 +75,15 @@ def downloadCsv():
time.sleep(5)
logger.info("REPORT FILE DOWNLOADED")
+ downloadSuccess = True
except TimeoutException:
logger.error("Timed out while downloading report")
+ downloadSuccess = False
finally:
browser.close()
+ return downloadSuccess
if __name__ == '__main__':
diff --git a/main.py b/main.py
index 89b9e6b..66eadf7 100644
--- a/main.py
+++ b/main.py
@@ -14,7 +14,9 @@ bot = Bot()
def getScore():
- downloadCsv()
+ isSuccess = downloadCsv()
+ if not isSuccess:
+ return -1
myScore = readCSV()
try:
myScore = 100 * float(myScore)
@@ -27,7 +29,8 @@ 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}%")
+ msg = f"Score leantime bulan ini = {score}%" if score >= 0 else "Connection problem with report dashboard"
+ bot.sendMessage(msg)
@repeat(every().day.at("09:00"))
@@ -37,8 +40,8 @@ def main():
weekday = today.weekday()
if weekday not in [5, 6]: # jangan ganggu aku di akhir pekan
myScore = getScore()
- msg = f"Leantime score = {myScore}%. <i>Jangan lupa isi leantime</i>"
- if (17 <= today.day <= 24) and myScore < 70: # seminggu sebelumnya udah ngingetin
+ msg = f"Leantime score = {myScore}%. <i>Jangan lupa isi leantime</i>" if myScore >= 0 else "Connection problem with report dashboard"
+ if (17 <= today.day <= 24) and (0 <= myScore < 70): # seminggu sebelumnya udah ngingetin
msg = f'<b>WARNING!</b> SEKARANG UDAH TANGGAL {today.day}, SCORE LEANTIME MASIH {myScore}%'
bot.sendMessage(msg)
diff --git a/util.py b/util.py
index f7dcd8b..6df64cd 100644
--- a/util.py
+++ b/util.py
@@ -6,13 +6,13 @@ from dotenv import load_dotenv
load_dotenv()
-dbFile = os.getenv('DB_FILENAME')
+dbFile = os.getenv('DB_FILENAME', 'db.sqlite3')
def setupLogger():
logger = logging.getLogger(__name__)
logging.basicConfig(
- filename=os.getenv('LOGFILE'),
+ filename=os.getenv('LOGFILE', "watcher.log"),
encoding='utf-8',
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'