def format_new_score(mode: api.GameMode, score: dict, beatmap: dict, rank: int, member: discord.Member):
""" Format any score. There should be a member name/mention in front of this string. """
acc = calculate_acc(mode, score)
return (
"[{i}{artist} - {title} [{version}]{i}]({host}b/{beatmap_id})\n"
"**{pp}pp {stars:.2f}\u2605, {rank} {scoreboard_rank}+{mods}**"
"```diff\n"
" acc 300s 100s 50s miss combo\n"
"{sign} {acc:<8.2%}{count300:<7}{count100:<7}{count50:<7}{countmiss:<7}{maxcombo}{max_combo}```"
"{live}"
).format(
host=host,
sign="!" if acc == 1 else ("+" if score["perfect"] == "1" else "-"),
mods=Mods.format_mods(int(score["enabled_mods"])),
acc=acc,
artist=beatmap["artist"].replace("_", "\_"),
title=beatmap["title"].replace("_", "\_"),
i="*" if "*" not in beatmap["artist"] + beatmap["title"] else "", # Escaping asterisk doesn't work in italics
version=beatmap["version"],
stars=float(beatmap["difficultyrating"]),
max_combo="/{}".format(beatmap["max_combo"]) if mode in (api.GameMode.Standard, api.GameMode.Catch) else "",
scoreboard_rank="#{} ".format(rank) if rank else "",
live=await format_stream(member, score, beatmap),
**score
)
评论列表
文章目录