diff --git a/erepublik/citizen.py b/erepublik/citizen.py index 5d54514..dd11cf9 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -63,17 +63,18 @@ class Citizen(classes.CitizenAPI): self.my_companies = classes.MyCompanies() self.set_debug(True) self.reporter = classes.Reporter() + self.telegram = classes.TelegramBot() self.stop_threads = threading.Event() if auto_login: - self.login(telegram) + self.login() + if telegram is None: + self.telegram.do_init(620981703, "864251270:AAFzZZdjspI-kIgJVk4gF3TViGFoHnf8H4o", self.name) + else: + self.telegram.do_init(telegram['chat_id'], telegram['token']) def login(self, telegram: Dict[str, Union[str, int]] = None): self.get_csrf_token() - if telegram is None: - self.telegram = classes.TelegramBot(620981703, "864251270:AAFzZZdjspI-kIgJVk4gF3TViGFoHnf8H4o", self.name) - else: - self.telegram = classes.TelegramBot(telegram['chat_id'], telegram['token']) self.telegram.send_message("*Started* {:%F %T}".format(utils.now())) self.update_citizen_info() self.reporter.do_init(self.name, self.config.email, self.details.citizen_id) diff --git a/erepublik/classes.py b/erepublik/classes.py index e047a7a..67c0888 100644 --- a/erepublik/classes.py +++ b/erepublik/classes.py @@ -1144,18 +1144,27 @@ class EnergyToFight: class TelegramBot: + __initialized = False + __queue: List[str] = [] chat_id = 0 api_url = "" + player_name = "" - def __init__(self, chat_id: int, token: str, player_name: str = ""): + def do_init(self, chat_id: int, token: str, player_name: str = ""): self.chat_id = chat_id self.api_url = "https://api.telegram.org/bot{}/sendMessage".format(token) self.player_name = player_name + self.__initialized = True + if self.__queue: + self.send_message("\n\n––––––––––––––––––––––\n\n".join(self.__queue)) def send_message(self, message: str) -> bool: if self.player_name: message = f"Player *{self.player_name}*\n" + message response = post(self.api_url, json=dict(chat_id=self.chat_id, text=message, parse_mode="Markdown")) + if not self.__initialized: + self.__queue.append(message) + return True return response.json().get('ok') def report_free_bhs(self, battles: List[Tuple[int, int, int, int, datetime.timedelta]]):