Was trying to send messages before citizen has been initialized

This commit is contained in:
Eriks Karls 2019-09-27 10:26:53 +03:00
parent 1ee47dfdcf
commit 630c7cbc76
2 changed files with 16 additions and 6 deletions

View File

@ -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)

View File

@ -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]]):