ParticipantList Methods
ParticipantList provides ergonomic filtering and ranking methods: highest_kda, most_kills, most_damage, and more.
import asyncio
import os
from nexar.cache import DEFAULT_CACHE_CONFIG
from nexar.client import NexarClient
from nexar.enums import MatchParticipantPosition, Region
client = NexarClient(
riot_api_key=os.getenv("RIOT_API_KEY", ""),
cache_config=DEFAULT_CACHE_CONFIG,
)
async def main() -> None:
async with client:
player = await client.get_player(riot_id="bexli#bex", region=Region.NA1)
last_match = await player.get_last_match()
assert last_match
participants = last_match.participants
# highest_kda: top 3 by KDA
print("Top 3 KDA:")
for p in participants.highest_kda(3):
print(f" {p.champion_name:<12} {p.kda(as_str=True)}")
# most_kills: top 3 by kills
print("\nMost Kills:")
for p in participants.most_kills(3):
print(f" {p.champion_name:<12} {p.kills} kills")
# most_damage: top 3 by damage to champions
print("\nMost Damage:")
for p in participants.most_damage(3):
print(f" {p.champion_name:<12} {p.total_damage_dealt_to_champions:,}")
# Filter by position
junglers = participants.by_position(MatchParticipantPosition.JUNGLE)
print(f"\nJunglers: {[p.champion_name for p in junglers]}")
# Winners / losers
print(f"Winners: {len(participants.winners())} players")
print(f"Losers: {len(participants.losers())} players")
# Get a Player from a participant for further queries
top_kda_participant = participants.highest_kda(1)[0]
top_player = await top_kda_participant.get_player(client, region=Region.NA1)
print(f"\nTop KDA player: {top_player}")
if __name__ == "__main__":
asyncio.run(main())