This commit is contained in:
Eriks Karls 2020-04-23 14:28:26 +03:00
parent 2eecd9fd4d
commit 2aa1cbd79e
4 changed files with 18 additions and 15 deletions

View File

@ -5,7 +5,7 @@
__author__ = """Eriks Karls""" __author__ = """Eriks Karls"""
__email__ = 'eriks@72.lv' __email__ = 'eriks@72.lv'
__version__ = '0.20.0' __version__ = '0.20.0'
__commit_id__ = "2efc949" __commit_id__ = "2eecd9f"
from erepublik import classes, utils from erepublik import classes, utils
from erepublik.citizen import Citizen from erepublik.citizen import Citizen

View File

@ -7,7 +7,7 @@ from threading import Event
from time import sleep from time import sleep
from typing import Any, Dict, List, Optional, Set, Tuple, Union, Callable, NoReturn from typing import Any, Dict, List, Optional, Set, Tuple, Union, Callable, NoReturn
from requests import RequestException, Response from requests import RequestException, Response, HTTPError
from erepublik import utils from erepublik import utils
from erepublik.classes import (Battle, BattleDivision, CitizenAPI, Config, Details, Energy, ErepublikException, from erepublik.classes import (Battle, BattleDivision, CitizenAPI, Config, Details, Energy, ErepublikException,
@ -538,7 +538,11 @@ class BaseCitizen(CitizenAPI):
title = info.group(2).strip() title = info.group(2).strip()
award_id = re.search(r'"wall_enable_alerts_(\d+)', medal) award_id = re.search(r'"wall_enable_alerts_(\d+)', medal)
if award_id: if award_id:
self._post_main_wall_post_automatic(message=title, achievement_id=award_id.group(1)) try:
award_id = int(award_id.group(1))
self._post_main_wall_post_automatic(message=title, achievement_id=award_id)
except ValueError:
pass
reward, currency = info.group(3).strip().split(" ") reward, currency = info.group(3).strip().split(" ")
while not isinstance(reward, float): while not isinstance(reward, float):
try: try:
@ -957,7 +961,7 @@ class CitizenEconomy(CitizenTravel):
return {"gold": 0, "cc": 0, 'ok': False} return {"gold": 0, "cc": 0, 'ok': False}
def accept_money_donations(self): def accept_money_donations(self):
for notification in self._get_main_notifications_ajax_system(): for notification in self._get_main_notifications_ajax_system().json():
don_id = re.search(r"erepublik.functions.acceptRejectDonation\(\"accept\", (\d+)\)", notification) don_id = re.search(r"erepublik.functions.acceptRejectDonation\(\"accept\", (\d+)\)", notification)
if don_id: if don_id:
self._get_main_money_donation_accept(int(don_id.group(1))) self._get_main_money_donation_accept(int(don_id.group(1)))
@ -1472,13 +1476,14 @@ class CitizenMilitary(CitizenTravel):
self.travel_to_residence() self.travel_to_residence()
break break
def fight(self, battle_id: int, side_id: int = None, count: int = None, division: int= None) -> int: def fight(self, battle_id: int, side_id: int = None, count: int = None, division: int = None) -> int:
"""Fight in a battle. """Fight in a battle.
Will auto activate booster and travel if allowed to do it. Will auto activate booster and travel if allowed to do it.
:param battle_id: int BattleId - battle to fight in :param battle_id: int BattleId - battle to fight in
:type battle_id: int :type battle_id: int
:param side_id: int or None. Battle side to fight in, If side_id not == invader id or not in invader deployed allies list, then defender's side is chosen :param side_id: int or None. Battle side to fight in, If side_id not == invader id or not in invader deployed
allies list, then defender's side is chosen
:type side_id: int :type side_id: int
:param count: How many hits to do, if not specified self.should_fight() is called. :param count: How many hits to do, if not specified self.should_fight() is called.
:type count: int :type count: int
@ -1535,7 +1540,7 @@ class CitizenMilitary(CitizenTravel):
return 0, 1, 0 return 0, 1, 0
try: try:
j_resp = response.json() j_resp = response.json()
except: except (ValueError, HTTPError, RequestException):
return 0, 10, 0 return 0, 10, 0
hits = 0 hits = 0
damage = 0 damage = 0
@ -2250,7 +2255,7 @@ class Citizen(CitizenAnniversary, CitizenCompanies, CitizenEconomy, CitizenLeade
self.send_inventory_update() self.send_inventory_update()
sleep_seconds = (start_time - self.now).total_seconds() sleep_seconds = (start_time - self.now).total_seconds()
self.stop_threads.wait(sleep_seconds if sleep_seconds > 0 else 0) self.stop_threads.wait(sleep_seconds if sleep_seconds > 0 else 0)
except: except: # noqa
self.report_error("State updater crashed") self.report_error("State updater crashed")
def send_state_update(self): def send_state_update(self):
@ -2326,7 +2331,7 @@ class Citizen(CitizenAnniversary, CitizenCompanies, CitizenEconomy, CitizenLeade
if raw_kind: if raw_kind:
raw_kind = raw_kind.group(1) raw_kind = raw_kind.group(1)
result = response.get("result", {}) result = response.get("result", {})
amount_needed = round(result.get("consume",0) - result.get("stock", 0) + 0.49) amount_needed = round(result.get("consume", 0) - result.get("stock", 0) + 0.49)
start_place = (self.details.current_country, self.details.current_region) start_place = (self.details.current_country, self.details.current_region)
while amount_needed > 0: while amount_needed > 0:
amount = amount_needed amount = amount_needed

View File

@ -8,7 +8,6 @@ from typing import Any, Dict, Iterable, List, Tuple, Union
from requests import Response, Session, post from requests import Response, Session, post
from erepublik import utils from erepublik import utils
from erepublik.access_points import CitizenAPI
try: try:
import simplejson as json import simplejson as json
@ -435,7 +434,7 @@ class Reporter:
try: try:
r = self.__bot_update(dict(key=self.key, check=True, player_id=self.citizen_id)) r = self.__bot_update(dict(key=self.key, check=True, player_id=self.citizen_id))
if not r.json().get("status"): if not r.json().get("status"):
r = self._req.post("{}/bot/register".format(self.url), json=dict(name=self.name, email=self.email, self._req.post("{}/bot/register".format(self.url), json=dict(name=self.name, email=self.email,
player_id=self.citizen_id)) player_id=self.citizen_id))
finally: finally:
self.__registered = True self.__registered = True
@ -476,7 +475,7 @@ class MyJSONEncoder(json.JSONEncoder):
return float("{:.02f}".format(o)) return float("{:.02f}".format(o))
elif isinstance(o, datetime.datetime): elif isinstance(o, datetime.datetime):
return dict(__type__='datetime', date=o.strftime("%Y-%m-%d"), time=o.strftime("%H:%M:%S"), return dict(__type__='datetime', date=o.strftime("%Y-%m-%d"), time=o.strftime("%H:%M:%S"),
tzinfo=o.tzinfo.zone if o.tzinfo else None) tzinfo=o.tzinfo.tzname if o.tzinfo else None)
elif isinstance(o, datetime.date): elif isinstance(o, datetime.date):
return dict(__type__='date', date=o.strftime("%Y-%m-%d")) return dict(__type__='date', date=o.strftime("%Y-%m-%d"))
elif isinstance(o, datetime.timedelta): elif isinstance(o, datetime.timedelta):
@ -722,7 +721,7 @@ class TelegramBot:
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)
def report_medal(self, msg, multiple: bool=True): def report_medal(self, msg, multiple: bool = True):
new_line = '\n' if multiple else '' new_line = '\n' if multiple else ''
self.send_message(f"New award: {new_line}*{msg}*") self.send_message(f"New award: {new_line}*{msg}*")

View File

@ -21,7 +21,6 @@ try:
except ImportError: except ImportError:
import json import json
__all__ = ["FOOD_ENERGY", "COMMIT_ID", "COUNTRIES", "erep_tz", 'COUNTRY_LINK', __all__ = ["FOOD_ENERGY", "COMMIT_ID", "COUNTRIES", "erep_tz", 'COUNTRY_LINK',
"now", "localize_dt", "localize_timestamp", "good_timedelta", "eday_from_date", "date_from_eday", "now", "localize_dt", "localize_timestamp", "good_timedelta", "eday_from_date", "date_from_eday",
"get_sleep_seconds", "interactive_sleep", "silent_sleep", "get_sleep_seconds", "interactive_sleep", "silent_sleep",