1
0
Fork 0
mirror of synced 2024-05-19 20:12:30 +12:00

Use the battlerecord class for battlestats

This commit is contained in:
phxntxm 2017-06-27 22:56:08 -05:00
parent fd8dfb92bc
commit f4f4fb881e
2 changed files with 14 additions and 33 deletions

View file

@ -350,6 +350,11 @@ class BattleRankings:
def get(self, key):
return self.ratings.get(str(key))
def get_record(self, member):
data = self.ratings.get(member.id, {})
fmt = "{} - {}".format(data.get('wins'), data.get('losses'))
return fmt
def get_rating(self, member):
data = self.ratings.get(member.id, {})
return data.get('rating')

View file

@ -261,44 +261,20 @@ class Stats:
await ctx.message.channel.trigger_typing()
member = member or ctx.message.author
# For this one, we don't want to pass a filter, as we do need all battle records
# We need this because we want to make a comparison for overall rank
all_members = self.bot.db.load('battle_records')
if all_members is None or len(all_members) == 0:
await ctx.send("That user has not battled yet!")
return
# Make a list comprehension to just check if the user has battled
if len([entry for entry in all_members if entry['member_id'] == str(member.id)]) == 0:
await ctx.send("That user has not battled yet!")
return
# Same concept as the leaderboard
server_member_ids = [member.id for member in ctx.message.guild.members]
server_members = [stats for stats in all_members if int(stats['member_id']) in server_member_ids]
sorted_server_members = sorted(server_members, key=lambda x: x['rating'], reverse=True)
sorted_all_members = sorted(all_members, key=lambda x: x['rating'], reverse=True)
# Enumurate the list so that we can go through, find the user's place in the list
# and get just that for the rank
server_rank = [i for i, x in enumerate(sorted_server_members) if x['member_id'] == str(member.id)][0] + 1
total_rank = [i for i, x in enumerate(sorted_all_members) if x['member_id'] == str(member.id)][0] + 1
# The rest of this is straight forward, just formatting
entry = [m for m in server_members if m['member_id'] == str(member.id)][0]
rating = entry['rating']
record = "{}-{}".format(entry['wins'], entry['losses'])
# Get the different data that we'll display
server_rank = "{}/{}".format(*self.bot.br.get_server_rank(member))
overall_rank = "{}/{}".format(*self.bot.br.get_rank(member))
rating = self.bot.br.get_rating(member)
record = self.bot.br.get_record(member)
try:
# Create our banner
title = 'Stats for {}'.format(member.display_name)
fmt = [('Record', record), ('Server Rank', '{}/{}'.format(server_rank, len(server_members))),
('Overall Rank', '{}/{}'.format(total_rank, len(all_members))), ('Rating', rating)]
fmt = [('Record', record), ('Server Rank', server_rank), ('Overall Rank', overall_rank), ('Rating', rating)]
banner = await utils.create_banner(member, title, fmt)
await ctx.send(file=discord.File(banner, filename='banner.png'))
except (FileNotFoundError, discord.Forbidden):
fmt = 'Stats for {}:\n\tRecord: {}\n\tServer Rank: {}/{}\n\tOverall Rank: {}/{}\n\tRating: {}'
fmt = fmt.format(member.display_name, record, server_rank, len(server_members), total_rank,
len(all_members), rating)
fmt = 'Stats for {}:\n\tRecord: {}\n\tServer Rank: {}\n\tOverall Rank: {}\n\tRating: {}'
fmt = fmt.format(member.display_name, record, server_rank, overall_rank, rating)
await ctx.send('```\n{}```'.format(fmt))