diff --git a/src/utils.py b/src/utils.py index 5ec3762..cc41cd5 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,13 +1,14 @@ from __future__ import annotations +import os +import time import traceback from typing import Callable, Optional -import requests from selenium.common.exceptions import StaleElementReferenceException from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.common.by import By - +from telegram import Bot, Message CSS = By.CSS_SELECTOR @@ -23,34 +24,28 @@ def parse_retry(parser: Callable, browser: WebDriver, tries: int = 0): class TelegramReporter: - token: str + bot: Bot receiver: str | int alert_receiver: Optional[str | int] - def __init__(self, token: str, receiver: str, alert_receiver: Optional[str | int]): - self.token = token + def __init__(self, token: str, receiver: str | int, alert_receiver: Optional[str | int]): + self.bot = Bot(token) self.receiver = receiver self.alert_receiver = alert_receiver - def send(self, msg: str, rec: Optional[str | int] = None) -> bool: + def send(self, msg: str, rec: Optional[str | int] = None) -> Message: """ Send a message :param msg: Message string :param rec: Receiver - :return: Success or not + :return: Edit code or None if failed """ if rec is None: rec = self.receiver - r = requests.get(f'https://api.telegram.org/bot{self.token}/sendMessage', - params={'chat_id': rec, 'parse_mode': 'Markdown', 'text': msg}) + return self.bot.send_message(chat_id=rec, parse_mode='Markdown', text=msg) - if r.status_code != 200: - print('Request not OK:', r.status_code, r.text) - - return r.status_code == 200 - - def alert(self) -> bool: + def alert(self) -> Message: if self.alert_receiver: return self.send('/alert', self.alert_receiver)