diff --git a/erepublik/citizen.py b/erepublik/citizen.py index e366414..13947d6 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -508,8 +508,6 @@ class Citizen(classes.CitizenAPI): """ Try to eat food """ - self.update_citizen_info() - self.update_inventory() if self.food["total"] > self.energy.interval: if self.energy.limit - self.energy.recovered > self.energy.interval or not self.energy.recoverable % 2: self._eat("blue") @@ -518,7 +516,6 @@ class Citizen(classes.CitizenAPI): else: self.write_log("I'm out of food! But I'll try to buy some!\n{}".format(self.food)) self.buy_food() - self.update_inventory() if self.food["total"] > self.energy.interval: self.eat() else: @@ -1235,8 +1232,7 @@ class Citizen(classes.CitizenAPI): ret = items return ret - def buy_food(self) -> None: - self.update_money() + def buy_food(self): hp_per_quality = {"q1": 2, "q2": 4, "q3": 6, "q4": 8, "q5": 10, "q6": 12, "q7": 20} hp_needed = 48 * self.energy.interval * 10 - self.food["total"] local_offers = self.get_market_offers(country_id=self.details.current_country, product="food") @@ -1552,7 +1548,6 @@ class Citizen(classes.CitizenAPI): def get_raw_surplus(self) -> (float, float): frm = 0.00 wrm = 0.00 - self.update_companies() for cdata in sorted(self.my_companies.companies.values()): if cdata["industry_token"] == "FOOD": raw = frm diff --git a/erepublik/classes.py b/erepublik/classes.py index 0bcc7fc..490b62e 100644 --- a/erepublik/classes.py +++ b/erepublik/classes.py @@ -2,7 +2,9 @@ import datetime import decimal import hashlib import random +import sys import time +import traceback from collections import deque from json import JSONDecodeError, loads, JSONEncoder from typing import Any, Dict, List, Union, Mapping, Iterable, Tuple @@ -1152,12 +1154,14 @@ class TelegramBot: chat_id = 0 api_url = "" player_name = "" + __last_time: datetime.datetime = None 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 + self.__last_time = utils.good_timedelta(utils.now(), datetime.timedelta(minutes=-5)) if self.__queue: self.send_message("\n\n––––––––––––––––––––––\n\n".join(self.__queue)) @@ -1167,7 +1171,11 @@ class TelegramBot: return True if self.player_name: message = f"Player *{self.player_name}*\n" + message + if utils.good_timedelta(utils.now(), datetime.timedelta(seconds=-1)) <= self.__last_time: + tb = traceback.extract_stack() + message += "\n\n```\n{}\n```".format("\n".join([str(l) for l in tb])) response = post(self.api_url, json=dict(chat_id=self.chat_id, text=message, parse_mode="Markdown")) + self.__last_time = utils.now() return response.json().get('ok') def report_free_bhs(self, battles: List[Tuple[int, int, int, int, datetime.timedelta]]): @@ -1187,10 +1195,7 @@ class TelegramBot: self.send_message("Free BHs:\n" + "\n".join(battle_links)) def report_full_energy(self, available: int, limit: int, interval: int): - message = "" - if self.player_name: - message = f"Player *{self.player_name}*\n" - 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) def report_medal(self, msg):