async def handle(self, params, message, mentioned_user, client): destinyID = lookupDestinyID(mentioned_user.id) system = lookupSystem(destinyID) if not (destinyID and system): await message.channel.send(embed=embed_message( 'Error', f'Problem getting your data, please `!registerdesc` to fix this' )) await message.channel.send(embed=embed_message( 'Nightfall Report', f'https://nightfall.report/guardian/{system}/{destinyID}'))
async def handle(self, params, message, mentioned_user, client): async with message.channel.typing(): # get basic user data destinyID = lookupDestinyID(mentioned_user.id) system = lookupSystem(destinyID) heatmap_url = f"https://chrisfried.github.io/secret-scrublandeux/guardian/{system}/{destinyID}" characterIDs, character_data = await getCharacterInfoList(destinyID ) character_playtime = {} # in seconds for characterID in characterIDs: character_playtime[characterID] = await getCharStats( destinyID, characterID, "secondsPlayed") embed = embed_message( f"{mentioned_user.display_name}'s Destiny Stats", f"**Total Playtime:** {str(datetime.timedelta(seconds=sum(character_playtime.values())))} \n[Click to see your heatmap]({heatmap_url})", "For info on achievable discord roles, type !roles") """ char info field """ embed.add_field(name="", value=f"__**Characters:**__", inline=False) for characterID in characterIDs: text = f"""Playtime: {str(datetime.timedelta(seconds=character_playtime[characterID]))} \n\nPower: {int(await getCharStats(destinyID, characterID, "highestLightLevel")):,} \nActivities: {int(await getCharStats(destinyID, characterID, "activitiesCleared")):,} \nKills: {int(await getCharStats(destinyID, characterID, "kills")):,} \nDeaths: {int(await getCharStats(destinyID, characterID, "deaths")):,} \nEfficiency: {round(await getCharStats(destinyID, characterID, "efficiency"), 2)}""" embed.add_field( name= f"""{character_data[characterID]["class"]} ({character_data[characterID]["race"]} / {character_data[characterID]["gender"]})""", value=text, inline=True) """ triumph info field """ embed.add_field(name="", value=f"__**Triumphs:**__", inline=False) # get triumph data triumphs = await getProfile(destinyID, 900) embed.add_field( name="Lifetime Triumph Score", value= f"""{triumphs["profileRecords"]["data"]["lifetimeScore"]:,}""", inline=True) embed.add_field( name="Active Triumph Score", value= f"""{triumphs["profileRecords"]["data"]["activeScore"]:,}""", inline=True) embed.add_field( name="Legacy Triumph Score", value= f"""{triumphs["profileRecords"]["data"]["legacyScore"]:,}""", inline=True) # get triumph completion rate triumphs_data = triumphs["profileRecords"]["data"]["records"] triumphs_completed = 0 triumphs_no_data = 0 for triumph in triumphs_data.values(): status = True if "objectives" in triumph: for part in triumph['objectives']: status &= part['complete'] elif "intervalObjectives" in triumph: for part in triumph['intervalObjectives']: status &= part['complete'] else: triumphs_no_data += 1 continue if status: triumphs_completed += 1 embed.add_field( name="Triumphs", value= f"{triumphs_completed} / {len(triumphs_data) - triumphs_no_data}", inline=True) # get seal completion rate seals, completed_seals = await getPlayerSeals(destinyID) embed.add_field(name="Seals", value=f"{len(completed_seals)} / {len(seals)}", inline=True) # collection completion data collections_data = (await getProfile( destinyID, 800))["profileCollectibles"]["data"]["collectibles"] collectibles_completed = 0 for collectible in collections_data.values(): if collectible['state'] & 1 == 0: collectibles_completed += 1 embed.add_field( name="Collections", value=f"{collectibles_completed} / {len(collections_data)}", inline=True) await message.reply(embed=embed)