diff --git a/app/battlefield.py b/app/battlefield.py new file mode 100755 index 00000000..0cf1c9b9 --- /dev/null +++ b/app/battlefield.py @@ -0,0 +1,59 @@ +import requests, json, pprint, discord + + +def get_player(player): + player = player.lower() + url = ( + "https://api.gametools.network/bf2042/stats/?raw=false&format_values=true&name=" + + player + + "&platform=pc&skip_battlelog=false" + ) + headers = { + "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)", + "accept": "application/json", + } + response = requests.get(url, headers=headers).json() + + # Build the embed + embed = discord.Embed(description="-------", color=15105570, type="rich") + embed.set_thumbnail(url=response["avatar"]) + embed.set_author(name="Battlefield 2042 stats for %s" % response["userName"]) + # embed.add_field( + # name="**Rank**", value="%s, %s" % (rank_number, rank_title), inline=False + # ) + + gameplay_stats = { + "bestClass": "Best Class", + "kills": "Total Kills", + "mvp": "Times you were an MVP", + "deaths": "Total Deaths", + "killDeath": "KDR", + "wins": "All Time Wins", + "loses": "All Time Loses", + "winPercent": "Win/loss percentage", + "killsPerMinute": "Kills per Minute", + "damagePerMinute": "Damage per Minute", + "killsPerMatch": "Avg kills per game", + "damagePerMatch": "Avg damage per game", + "headShots": "Total Head shots", + "headshots": "Kills via Head Shot as a Percentage", + "timePlayed": "Total time played", + "accuracy": "Accuracy percentage", + "revives": "Total # of revives", + "heals": "Total amount healed", + "resupplies": "Total # of ammo resupplies", + "repairs": "Total vehicle damage repaired", + "squadmateRevive": "Squad mate revives", + "matchesPlayed": "Total games played", + "vehiclesDestroyed": "Total vehicles destroyed", + } + + for stat, readable in gameplay_stats.items(): + print(stat) + print(readable) + embed.add_field( + name="**%s**" % readable, + value=response[stat], + inline=True, + ) + return embed diff --git a/app/bf5.py b/app/bf5.py deleted file mode 100755 index bc54fd2c..00000000 --- a/app/bf5.py +++ /dev/null @@ -1,60 +0,0 @@ -import requests, json, pprint, discord -from bs4 import BeautifulSoup - - -def get_player(player): - player = player.lower() - url = "https://battlefieldtracker.com/bfv/profile/origin/" + player + "/overview" - headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"} - response = requests.get(url, headers=headers).text - soup = BeautifulSoup(response, "html.parser") - script = soup.find_all("script") - - jsonstring = str(script[1]) - jsonstring = jsonstring[33:-131] - data = json.loads(jsonstring) - - # Get Player Data - origin_name = "bfv|origin|" + player - - base_stat_blob = data["stats-v2"]["standardProfiles"][origin_name] - account_name = base_stat_blob["platformInfo"]["platformUserHandle"] - avatar_url = base_stat_blob["platformInfo"]["avatarUrl"] - - stats_overview = base_stat_blob["segments"][0]["stats"] - rank = stats_overview["rank"] - rank_title = rank["metadata"]["label"] - rank_number = rank["displayValue"] - - # Build the embed - embed = discord.Embed(description="-------", color=15105570, type="rich") - embed.set_thumbnail(url=avatar_url) - embed.set_author(name="Battlefield V stats for %s" % account_name) - embed.add_field( - name="**Rank**", value="%s, %s" % (rank_number, rank_title), inline=False - ) - - gameplay_stats = [ - "scorePerMinute", - "kdRatio", - "assists", - "shotsAccuracy", - "killStreak", - "dogtagsTaken", - "headshots", - "longestHeadshot", - "heals", - "revives", - "revivesRecieved", - "resupplies", - "aceSquad", - "wlPercentage", - ] - - for stat in gameplay_stats: - embed.add_field( - name="**%s**" % stats_overview[stat]["displayName"], - value=stats_overview[stat]["displayValue"], - inline=True, - ) - return embed diff --git a/app/cogs/game_apis.py b/app/cogs/game_apis.py index 54d93679..31beb795 100755 --- a/app/cogs/game_apis.py +++ b/app/cogs/game_apis.py @@ -51,6 +51,22 @@ class Games(commands.Cog): "I encountered an error while searching for that player.\nPlease check that your player name and server are spelled correctly" ) + @commands.slash_command( + guild_ids=None, + name="2042", + description="Query Battlefield 2042's API for data about a player", + ) + @option("player_name", description="Your Origin/EA account name", required=True) + async def battlefield(self, ctx: commands.Context, player_name: str): + import battlefield + + # try: + embed = battlefield.get_player(player=player_name.lower()) + await ctx.defer() + await ctx.send_followup(embed=embed) + # except Exception: + # await ctx.send("I encountered an error while searching for that player.") + def setup(bot): bot.add_cog(Games(bot))