1
0
Fork 0
mirror of synced 2024-06-03 03:04:33 +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): def get(self, key):
return self.ratings.get(str(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): def get_rating(self, member):
data = self.ratings.get(member.id, {}) data = self.ratings.get(member.id, {})
return data.get('rating') return data.get('rating')

View file

@ -261,44 +261,20 @@ class Stats:
await ctx.message.channel.trigger_typing() await ctx.message.channel.trigger_typing()
member = member or ctx.message.author member = member or ctx.message.author
# Get the different data that we'll display
# For this one, we don't want to pass a filter, as we do need all battle records server_rank = "{}/{}".format(*self.bot.br.get_server_rank(member))
# We need this because we want to make a comparison for overall rank overall_rank = "{}/{}".format(*self.bot.br.get_rank(member))
all_members = self.bot.db.load('battle_records') rating = self.bot.br.get_rating(member)
if all_members is None or len(all_members) == 0: record = self.bot.br.get_record(member)
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'])
try: try:
# Create our banner
title = 'Stats for {}'.format(member.display_name) title = 'Stats for {}'.format(member.display_name)
fmt = [('Record', record), ('Server Rank', '{}/{}'.format(server_rank, len(server_members))), fmt = [('Record', record), ('Server Rank', server_rank), ('Overall Rank', overall_rank), ('Rating', rating)]
('Overall Rank', '{}/{}'.format(total_rank, len(all_members))), ('Rating', rating)]
banner = await utils.create_banner(member, title, fmt) banner = await utils.create_banner(member, title, fmt)
await ctx.send(file=discord.File(banner, filename='banner.png')) await ctx.send(file=discord.File(banner, filename='banner.png'))
except (FileNotFoundError, discord.Forbidden): except (FileNotFoundError, discord.Forbidden):
fmt = 'Stats for {}:\n\tRecord: {}\n\tServer Rank: {}/{}\n\tOverall Rank: {}/{}\n\tRating: {}' 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, fmt = fmt.format(member.display_name, record, server_rank, overall_rank, rating)
len(all_members), rating)
await ctx.send('```\n{}```'.format(fmt)) await ctx.send('```\n{}```'.format(fmt))