From 41798c446c54d1f2801769ce088107405434eeca Mon Sep 17 00:00:00 2001 From: Eriks Karls Date: Tue, 15 Oct 2019 11:28:56 +0300 Subject: [PATCH] Return successfully transfered item count --- erepublik/citizen.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/erepublik/citizen.py b/erepublik/citizen.py index 90045b2..eba9c07 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -1314,11 +1314,20 @@ class Citizen(classes.CitizenAPI): r = re.search('You do not have enough money in your account to make this donation', resp.text) return not bool(r) - def donate_items(self, citizen_id: int = 1620414, amount: int = 0, industry_id: int = 1, - quality: int = 1) -> Response: + def donate_items(self, citizen_id: int = 1620414, amount: int = 0, industry_id: int = 1, quality: int = 1) -> int: + if amount < 1: + return 0 ind = {v: k for k, v in self.available_industries.items()} self.write_log("D,{},q{},{},{}".format(amount, quality, ind[industry_id], citizen_id)) - return self._post_economy_donate_items_action(citizen_id, amount, industry_id, quality) + response = self._post_economy_donate_items_action(citizen_id, amount, industry_id, quality) + if re.search(rf"Successfully transferred {amount} item\(s\) to", response.text): + return amount + else: + if re.search(r"You do not have enough items in your inventory to make this donation", response.text): + return 0 + available = re.search(rf"Cannot transfer the items because the user has only (\d+) free slots in (his|her) " + rf"storage.", response.text).group(1) + return self.donate_items(citizen_id, int(available), industry_id, quality) def candidate_for_congress(self, presentation: str = "") -> Response: return self._post_candidate_for_congress(presentation)