1
0
Fork 0
mirror of synced 2024-06-03 03:04:33 +12:00

Provided a stats command that should provide the battling stats for a specific user

This commit is contained in:
Phxntxm 2016-07-25 14:57:47 -05:00
parent 5d9a5efa25
commit 2764730b8f
2 changed files with 37 additions and 3 deletions

View file

@ -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):

View file

@ -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))