Provided a stats command that should provide the battling stats for a specific user
This commit is contained in:
parent
5d9a5efa25
commit
2764730b8f
|
@ -74,7 +74,7 @@ class Interaction:
|
|||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@commands.command(pass_context=True, no_pm=True)
|
||||
@commands.group(pass_context=True, no_pm=True,invoke_without_command=True)
|
||||
@checks.customPermsOrRole("send_messages")
|
||||
async def battle(self, ctx, player2: discord.Member):
|
||||
"""Challenges the mentioned user to a battle"""
|
||||
|
@ -102,6 +102,17 @@ class Interaction:
|
|||
await self.bot.say(fmt.format(ctx.message.author, player2))
|
||||
config.loop.call_later(180,battlingOff,ctx.message.author.id)
|
||||
|
||||
@battle.command(name="stats",pass_context=True)
|
||||
@checks.customPermsOrRole("send_messages")
|
||||
asynf def battle_stats(self, ctx, member: discord.Member=None)
|
||||
"""Prints the stats for you, or the user provided"""
|
||||
member = member or ctx.message.author
|
||||
|
||||
all_members = config.getContent('battle_records')
|
||||
server_member_ids = [member.id for member in ctx.message.server.members]
|
||||
server_members = {member_id:stats for member_id,stats in all_members.items() if member_id in server_member_ids}
|
||||
sorted_members = sorted(all_members.items(), key = lambda x: x[1]['rating'],reverse=True)
|
||||
|
||||
@commands.command(pass_context=True, no_pm=True)
|
||||
@checks.customPermsOrRole("send_messages")
|
||||
async def accept(self, ctx):
|
||||
|
|
|
@ -57,7 +57,7 @@ class Stats:
|
|||
|
||||
server_member_ids = [member.id for member in ctx.message.server.members]
|
||||
server_members = {member_id:stats for member_id,stats in battles.items() if member_id in server_member_ids}
|
||||
sorted_members = sorted(battles.items(), key = lambda x: x[1]['rating'],reverse=True)
|
||||
sorted_members = sorted(server_members.items(), key = lambda x: x[1]['rating'],reverse=True)
|
||||
|
||||
fmt = ""
|
||||
count = 1
|
||||
|
@ -68,7 +68,30 @@ class Stats:
|
|||
fmt += "#{}) {} (Rating: {})\n".format(count,member.display_name,stats.get('rating'))
|
||||
count += 1
|
||||
await self.bot.say("```{}```".format(fmt))
|
||||
|
||||
|
||||
|
||||
@commands.command(pass_context=True)
|
||||
@checks.customPermsOrRole("send_messages")
|
||||
asynf def stats(self, ctx, member: discord.Member=None)
|
||||
"""Prints the battling stats for you, or the user provided"""
|
||||
member = member or ctx.message.author
|
||||
|
||||
all_members = config.getContent('battle_records')
|
||||
if not member in all_members:
|
||||
await self.bot.say("That user has not battled yet!")
|
||||
return
|
||||
|
||||
server_member_ids = [member.id for member in ctx.message.server.members]
|
||||
server_members = {member_id:stats for member_id,stats in all_members.items() if member_id in server_member_ids}
|
||||
sorted_server_members = sorted(server_members.items(), key = lambda x: x[1]['rating'],reverse=True)
|
||||
sorted_all_members = sorted(all_members.items(), key = lambda x: x[1]['rating'],reverse=True)
|
||||
|
||||
server_rank = [i for i,x in enumerate(sorted_server_members) if x[0] == member.id][0]
|
||||
total_rank = [i for i,x in enumerate(sorted_all_members) if x[0] == member.id][0]
|
||||
rating = server_members[ctx.message.author.id]['rating']
|
||||
record = "{}-{}".format(server_members[member.id]['wins'],server_members[member.id]['losses'])
|
||||
fmt = 'Stats for {}:\n\tRecord: {}\n\tServer Rank: {}\n\tOverall Rank: {}\n\tRating: {}'
|
||||
.format(member.display_name,record,server_rank,total_rank,rating)
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Stats(bot))
|
||||
|
|
Loading…
Reference in a new issue