From cd114c187f79eff1ffa91859601f9c201ef07cf0 Mon Sep 17 00:00:00 2001 From: iiLarsH Date: Mon, 5 Jun 2023 21:00:49 +0200 Subject: [PATCH] Made weapon usages chart --- Reuse/getStats.py | 11 ++- Reuse/images/player_weapons_used.png | Bin 0 -> 31637 bytes Reuse/makePiechart.py | 99 +++++++++++++++++++++++++++ cogs/stats.py | 9 ++- 4 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 Reuse/images/player_weapons_used.png create mode 100644 Reuse/makePiechart.py diff --git a/Reuse/getStats.py b/Reuse/getStats.py index 4d804a8..33d8fb5 100644 --- a/Reuse/getStats.py +++ b/Reuse/getStats.py @@ -3,6 +3,8 @@ import asyncio import discord import requests +from Reuse.makePiechart import make_donut_chart + async def get_allplayer_stats(s, playerids, weaponid = "", weaponname= "",server = ""): tasks = [] for playerid in playerids: @@ -20,11 +22,16 @@ async def get_allplayer_stats(s, playerids, weaponid = "", weaponname= "",server botmessage.set_thumbnail(url=f"https://toneapi.github.io/ToneAPI_webclient/weapons/{weaponid}.png") else: botmessage.set_thumbnail(url="https://toneapi.github.io/ToneAPI_webclient/weapons/notfound.png") - + for stats in res: botmessage.add_field(name=f"Stats for {stats['Player']}", value=stats['message']) + + img_file = "" + if(len(res) == 1): + botmessage, img_file = make_donut_chart(botmessage, playerids, server) - return botmessage + + return botmessage, img_file async def getstats(s, playerid, weaponid = "", server = ""): payload = {'player': playerid, 'weapon': weaponid, 'server': server} diff --git a/Reuse/images/player_weapons_used.png b/Reuse/images/player_weapons_used.png new file mode 100644 index 0000000000000000000000000000000000000000..a16dc8cc88d420394456e7480ea54775cc37f039 GIT binary patch literal 31637 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 XL+nB5_$6qOjk=+tt=yn!_3(cIc`zE{ literal 0 HcmV?d00001 diff --git a/Reuse/makePiechart.py b/Reuse/makePiechart.py new file mode 100644 index 0000000..999d294 --- /dev/null +++ b/Reuse/makePiechart.py @@ -0,0 +1,99 @@ +import discord +import matplotlib.pyplot as plt +import numpy as np +import requests + +def make_donut_chart(botmessage, playerid, server=""): + plt.figure().clear() + weapon = { + "human_execution": "execution", + "mp_weapon_car": "car", + "mp_weapon_defender": "charge rifle", + "mp_weapon_doubletake": "double take", + "mp_weapon_epg": "epg", + "mp_weapon_hemlok_smg": "volt", + "mp_weapon_lstar": "lstar", + "mp_weapon_r97": "r97", + "mp_weapon_rspn101": "r-201", + "mp_weapon_smart_pistol": "smart pistol", + "mp_weapon_sniper": "kraber", + "mp_weapon_vinson": "flatline", + "mp_weapon_autopistol": "re-45 auto", + "mp_weapon_alternator_smg": "alternator", + "mp_weapon_frag_grenade": "frag grenade", + "mp_weapon_g2": "g2", + "mp_weapon_lmg": "spitfire", + "mp_weapon_smr": "smr", + "mp_weapon_softball": "softball", + "mp_weapon_thermite_grenade": "firestar", + "melee_pilot_emptyhanded": "melee", + "mp_weapon_mastiff": "mastiff", + "mp_weapon_mgl": "mgl", + "mp_weapon_rspn101_og": "r-101", + "mp_weapon_wingman": "wingman", + "invalid": "invalid", + "mp_weapon_arc_launcher": "thunderbolt", + "mp_weapon_dmr": "dmr", + "mp_weapon_grenade_electric_smoke": "electric smoke", + "mp_weapon_pulse_lmg": "cold war", + "mp_weapon_satchel": "satchel", + "mp_weapon_shotgun": "eva-8 auto", + "mp_weapon_shotgun_pistol": "mozambique", + "mp_weapon_wingman_n": "wingman elite", + "mp_weapon_grenade_gravity": "gravity star", + "mp_weapon_grenade_sonar": "pulse blade", + "mp_weapon_rocket_launcher": "archer", + "outOfBounds": "outOfBounds", + "mind_crime": "mind crime", + "mp_weapon_esaw": "devotion", + "fall": "fall", + "mp_weapon_semipistol": "p2016", + "mp_weapon_grenade_emp": "arc grenade", + "mp_weapon_hemlok": "hemlok", + "phase_shift": "phase shift" + } + + if(server != "All"): + payload = {'player': playerid, 'server': server} + else: + payload = {'player': playerid} + + response = requests.get('https://tone.sleepycat.date/v2/client/weapons', params=payload).json() + + labels = [] + values = [] + total = 0 + dict_weapon_with_kills = {} + for i in response.keys(): + weaponstats = response[i] + dict_weapon_with_kills[i] = weaponstats['kills'] + total += weaponstats['kills'] + + other = 0 + for j in dict_weapon_with_kills: + if(dict_weapon_with_kills[j] > total/20): + try: + labels.append(weapon[j]) + except KeyError: + labels.append(j) + values.append(dict_weapon_with_kills[j]) + else: + other += dict_weapon_with_kills[j] + + labels.append("other") + values.append(other) + + plt.style.use('ggplot') + plt.title("weapons used by player") + plt.pie(x=values, autopct='%.0f%%', startangle=90) + plt.axis('equal') + plt.legend(title="weapons" ,labels=labels, loc='upper left', bbox_to_anchor=(-0.17, 0.67, 0.5, 0.5)) + + circle = plt.Circle(xy=(0,0), radius=.1, facecolor='white') + plt.gca().add_artist(circle) + + plt.savefig("Reuse/images/player_weapons_used.png") + img_file = discord.File("Reuse/images/player_weapons_used.png", filename="player_weapons_used.png") + botmessage.set_image(url="attachment://player_weapons_used.png") + + return botmessage, img_file diff --git a/cogs/stats.py b/cogs/stats.py index 8fba69b..5a8630a 100644 --- a/cogs/stats.py +++ b/cogs/stats.py @@ -45,10 +45,13 @@ class Stats(commands.Cog): return async with aiohttp.ClientSession() as session: - botmessage = await get_allplayer_stats(session, players.values(), weaponid, weaponname, server) + print(players.values()) + botmessage, img_file = await get_allplayer_stats(session, players.values(), weaponid, weaponname, server) - - await ctx.send(embed=botmessage) + if(img_file != ""): + await ctx.send(file=img_file, embed=botmessage) + else: + await ctx.send(embed=botmessage) @commands.Cog.listener() async def on_command_error(self, ctx, err):