sprcl
Version:
Simple API client for Clash of Clans, Clash Royale, and Brawl Stars
68 lines (58 loc) • 2.15 kB
JavaScript
class Clan {
constructor(data) {
this.tag = data.tag;
this.name = data.name;
this.type = data.type;
this.description = data.description;
this.location = data.location;
this.isFamilyFriendly = data.isFamilyFriendly;
this.badgeUrls = data.badgeUrls;
this.clanLevel = data.clanLevel;
this.clanPoints = data.clanPoints;
this.clanBuilderBasePoints = data.clanBuilderBasePoints;
this.clanCapitalPoints = data.clanCapitalPoints;
this.capitalLeague = data.capitalLeague;
this.requiredTrophies = data.requiredTrophies;
this.warFrequency = data.warFrequency;
this.warWinStreak = data.warWinStreak;
this.warWins = data.warWins;
this.warTies = data.warTies;
this.warLosses = data.warLosses;
this.isWarLogPublic = data.isWarLogPublic;
this.warLeague = data.warLeague;
this.members = data.members;
this.memberList = data.memberList;
this.labels = data.labels;
this.requiredBuilderBaseTrophies = data.requiredBuilderBaseTrophies;
this.requiredTownhallLevel = data.requiredTownhallLevel;
this.clanCapital = data.clanCapital;
this.chatLanguage = data.chatLanguage;
}
static fromJSON(json) {
return new Clan(json);
}
// Métodos adicionales útiles
getLeader() {
return this.memberList.find(member => member.role === 'leader');
}
getCoLeaders() {
return this.memberList.filter(member => member.role === 'coLeader');
}
getAdmins() {
return this.memberList.filter(member => member.role === 'admin');
}
getMembers() {
return this.memberList.filter(member => member.role === 'member');
}
getMemberCount() {
return this.members;
}
getAverageTownHallLevel() {
const sum = this.memberList.reduce((acc, member) => acc + member.townHallLevel, 0);
return sum / this.members;
}
getTotalDonations() {
return this.memberList.reduce((acc, member) => acc + member.donations, 0);
}
}
module.exports = { Clan };