60 lines
1.9 KiB
Go
60 lines
1.9 KiB
Go
// i2_bot – Instinct PokememBro Bot
|
||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||
|
||
package statistics
|
||
|
||
import (
|
||
"strconv"
|
||
|
||
"github.com/fat0troll/i2_bot/lib/dbmapping"
|
||
)
|
||
|
||
// SquadStatictics generates statistics message snippet. Public due to usage in chats list
|
||
func (s *Statistics) SquadStatictics(squadID int) string {
|
||
squadMembersWithInformation := []dbmapping.SquadPlayerFull{}
|
||
squadMembers := []dbmapping.SquadPlayer{}
|
||
|
||
squad, err := c.DataCache.GetSquadByID(squadID)
|
||
if err != nil {
|
||
c.Log.Error(err.Error())
|
||
return "Невозможно получить информацию о данном отряде. Возможно, он пуст или произошла ошибка."
|
||
}
|
||
|
||
err = c.Db.Select(&squadMembers, c.Db.Rebind("SELECT * FROM squads_players WHERE squad_id=?"), squadID)
|
||
if err != nil {
|
||
c.Log.Error(err.Error())
|
||
return "Невозможно получить информацию о данном отряде. Возможно, он пуст или произошла ошибка."
|
||
}
|
||
|
||
for i := range squadMembers {
|
||
fullInfo := dbmapping.SquadPlayerFull{}
|
||
|
||
playerRaw, err := c.DataCache.GetPlayerByID(squadMembers[i].PlayerID)
|
||
if err != nil {
|
||
c.Log.Error(err.Error())
|
||
continue
|
||
}
|
||
profileRaw, err := c.DataCache.GetProfileByPlayerID(playerRaw.ID)
|
||
if err != nil {
|
||
c.Log.Error(err.Error())
|
||
continue
|
||
}
|
||
|
||
fullInfo.Squad = *squad
|
||
fullInfo.Player = *playerRaw
|
||
fullInfo.Profile = *profileRaw
|
||
|
||
squadMembersWithInformation = append(squadMembersWithInformation, fullInfo)
|
||
}
|
||
|
||
message := "Количество человек в отряде: " + strconv.Itoa(len(squadMembersWithInformation)) + "\n"
|
||
|
||
summAttack := 0
|
||
for i := range squadMembersWithInformation {
|
||
summAttack += squadMembersWithInformation[i].Profile.Power
|
||
}
|
||
message += "Суммарная атака: " + strconv.Itoa(summAttack) + " очков.\n"
|
||
|
||
return message
|
||
}
|