summaryrefslogtreecommitdiff
path: root/states.py
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2020-02-24 00:25:33 +0400
committerAndrew <saintruler@gmail.com>2020-02-24 00:25:33 +0400
commitaeba8fe4d882332502eccfd1aff24621e208e1c7 (patch)
tree010f57c74376eba5c8c8ce132750dc4864efc83f /states.py
parent3eca6b22ef70aa0fecf0a221d68bd34a6a2fa16c (diff)
Fixed top and scoring system.
Diffstat (limited to 'states.py')
-rw-r--r--states.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/states.py b/states.py
index b25cc4a..c4832de 100644
--- a/states.py
+++ b/states.py
@@ -28,10 +28,13 @@ def save_state(func):
def calc_score(t, base_score=1000):
base_score = Decimal(base_score)
- min_score = Decimal(100)
+ min_score = base_score * Decimal(0.1)
max_t = Decimal(720)
k = (base_score - min_score) / (max_t * max_t)
+ if t >= max_t:
+ return round(min_score, 2)
+
return round(min(k * (t - max_t) * (t - max_t) + min_score, base_score), 2)
@@ -198,16 +201,26 @@ class States:
top_list = []
for tg_id, stats in top.items():
top_list.append((
- stats['score'],
+ stats['score'], tg_id,
f"{stats['fullname']} (@{stats['username']}) -- {stats['score']}pts"
))
top_list.sort(key=lambda p: p[0], reverse=True)
+ top_10_ids = []
+ places = {tg_id: place for place, (score, tg_id, text) in enumerate(top_list, 1)}
+
top = ["Топ-10:"]
- print(top_list)
- for place, (score, text) in enumerate(top_list, 1):
+ for place, (score, tg_id, text) in enumerate(top_list[:10], 1):
top.append(str(place).rjust(2, " ") + ". " + text)
+ top_10_ids.append(tg_id)
+
+ if update.message.from_user.id not in top_10_ids:
+ if len(top_10_ids) == 10 and places[update.message.from_user.id] > 11:
+ top.append("...")
+ this_place = places[update.message.from_user.id]
+ top.append(str(this_place).rjust(2, " ") + ". " + top_list[this_place - 1][2])
+
except Exception as e:
print(e)