Telegram threading queue has been messing with error reporting
This commit is contained in:
parent
adda8dcb54
commit
06d8d1c0b5
@ -108,10 +108,8 @@ class Citizen(classes.CitizenAPI):
|
|||||||
@property
|
@property
|
||||||
def __dict__(self):
|
def __dict__(self):
|
||||||
ret = super().__dict__.copy()
|
ret = super().__dict__.copy()
|
||||||
ret.pop('reporter', None)
|
|
||||||
ret.pop('stop_threads', None)
|
ret.pop('stop_threads', None)
|
||||||
ret.pop('_Citizen__last_war_update_data', None)
|
ret.pop('_Citizen__last_war_update_data', None)
|
||||||
# ret.update(all_battles=self.all_battles)
|
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@ -946,10 +946,6 @@ class Reporter:
|
|||||||
self._req.headers.update({"user-agent": "Bot reporter v2"})
|
self._req.headers.update({"user-agent": "Bot reporter v2"})
|
||||||
self.__registered: bool = False
|
self.__registered: bool = False
|
||||||
|
|
||||||
@property
|
|
||||||
def __dict__(self):
|
|
||||||
return dict(allowed=self.allowed, __to_update=self.__to_update)
|
|
||||||
|
|
||||||
def do_init(self, name: str = "", email: str = "", citizen_id: int = 0):
|
def do_init(self, name: str = "", email: str = "", citizen_id: int = 0):
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
self.email: str = email
|
self.email: str = email
|
||||||
@ -1184,18 +1180,23 @@ class TelegramBot:
|
|||||||
chat_id = 0
|
chat_id = 0
|
||||||
api_url = ""
|
api_url = ""
|
||||||
player_name = ""
|
player_name = ""
|
||||||
__last_time: datetime.datetime = None
|
_last_time: datetime.datetime = None
|
||||||
__last_full_energy_report: datetime.datetime = None
|
_last_full_energy_report: datetime.datetime = None
|
||||||
__next_time: datetime.datetime = None
|
_next_time: datetime.datetime = None
|
||||||
__threads: List[threading.Thread] = []
|
_threads: List[threading.Thread] = []
|
||||||
|
|
||||||
|
def __dict__(self):
|
||||||
|
ret = super().__dict__.copy()
|
||||||
|
ret.update(_threads=len(self._threads))
|
||||||
|
return ret
|
||||||
|
|
||||||
def do_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.chat_id = chat_id
|
||||||
self.api_url = "https://api.telegram.org/bot{}/sendMessage".format(token)
|
self.api_url = "https://api.telegram.org/bot{}/sendMessage".format(token)
|
||||||
self.player_name = player_name
|
self.player_name = player_name
|
||||||
self.__initialized = True
|
self.__initialized = True
|
||||||
self.__last_time = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=-5))
|
self._last_time = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=-5))
|
||||||
self.__last_full_energy_report = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=-30))
|
self._last_full_energy_report = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=-30))
|
||||||
if self.__queue:
|
if self.__queue:
|
||||||
self.send_message("\n\n––––––––––––––––––––––\n\n".join(self.__queue))
|
self.send_message("\n\n––––––––––––––––––––––\n\n".join(self.__queue))
|
||||||
|
|
||||||
@ -1203,13 +1204,13 @@ class TelegramBot:
|
|||||||
self.__queue.append(message)
|
self.__queue.append(message)
|
||||||
if not self.__initialized:
|
if not self.__initialized:
|
||||||
return True
|
return True
|
||||||
self.__threads = [t for t in self.__threads if t.is_alive()]
|
self._threads = [t for t in self._threads if t.is_alive()]
|
||||||
self.__next_time = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=1))
|
self._next_time = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=1))
|
||||||
if not self.__threads:
|
if not self._threads:
|
||||||
name = "send_telegram".format(threading.active_count() - 1)
|
name = "send_telegram".format(threading.active_count() - 1)
|
||||||
send_thread = threading.Thread(target=self.__send_messages, name=name)
|
send_thread = threading.Thread(target=self.__send_messages, name=name)
|
||||||
send_thread.start()
|
send_thread.start()
|
||||||
self.__threads.append(send_thread)
|
self._threads.append(send_thread)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -1230,8 +1231,8 @@ class TelegramBot:
|
|||||||
self.send_message("Free BHs:\n" + "\n".join(battle_links))
|
self.send_message("Free BHs:\n" + "\n".join(battle_links))
|
||||||
|
|
||||||
def report_full_energy(self, available: int, limit: int, interval: int):
|
def report_full_energy(self, available: int, limit: int, interval: int):
|
||||||
if (utils.now() - self.__last_full_energy_report).total_seconds() >= 30 * 60:
|
if (utils.now() - self._last_full_energy_report).total_seconds() >= 30 * 60:
|
||||||
self.__last_full_energy_report = utils.now()
|
self._last_full_energy_report = utils.now()
|
||||||
message = f"Full energy ({available}hp/{limit}hp +{interval}hp/6min)"
|
message = f"Full energy ({available}hp/{limit}hp +{interval}hp/6min)"
|
||||||
self.send_message(message)
|
self.send_message(message)
|
||||||
|
|
||||||
@ -1239,14 +1240,14 @@ class TelegramBot:
|
|||||||
self.send_message(f"New award: *{msg}*")
|
self.send_message(f"New award: *{msg}*")
|
||||||
|
|
||||||
def __send_messages(self):
|
def __send_messages(self):
|
||||||
while self.__next_time > utils.now():
|
while self._next_time > utils.now():
|
||||||
utils.silent_sleep(utils.get_sleep_seconds(self.__next_time))
|
utils.silent_sleep(utils.get_sleep_seconds(self._next_time))
|
||||||
|
|
||||||
message = "\n\n––––––––––––––––––––––\n\n".join(self.__queue)
|
message = "\n\n––––––––––––––––––––––\n\n".join(self.__queue)
|
||||||
if self.player_name:
|
if self.player_name:
|
||||||
message = f"Player *{self.player_name}*\n" + message
|
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"))
|
response = post(self.api_url, json=dict(chat_id=self.chat_id, text=message, parse_mode="Markdown"))
|
||||||
self.__last_time = utils.now()
|
self._last_time = utils.now()
|
||||||
if response.json().get('ok'):
|
if response.json().get('ok'):
|
||||||
self.__queue = []
|
self.__queue = []
|
||||||
return True
|
return True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user