diff --git a/dataBase.go b/dataBase.go index 0fbd9be..f4d628c 100644 --- a/dataBase.go +++ b/dataBase.go @@ -164,6 +164,30 @@ func (db *dbLayer) getPlayerByName(ctx context.Context, name string) (*Player, e return nil, nil } +func (db *dbLayer) getKillsByOPlayerID(ctx context.Context, playerID string) (int, error) { + query := "SELECT SUM(count) FROM killings WHERE player_id = $1 GROUP BY player_id" + + rows, err := db.db.QueryContext(ctx, query, playerID) + if err != nil { + return 0, errors.Wrapf(err, "Failed to run db query [%s]", query) + } + + defer rows.Close() + + if rows.Next() { + var killsNum int + + err = rows.Scan(&killsNum) + if err != nil { + return 0, errors.Wrap(err, "Failed to fetch data base") + } + + return killsNum, nil + } + + return 0, nil +} + func (db *dbLayer) createPlayer(ctx context.Context, name string, lastOnline time.Time) (*Player, error) { id := uuid() diff --git a/makefile b/makefile index 05291e5..6aa7e35 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,7 @@ +.PHONY: all .PHONY: build +.PHONY: install +.PHONY: run all: build @@ -12,3 +15,6 @@ install: build install build/craft-bot /usr/local/craft-bot/ install craft-bot.service /etc/systemd/system/craft-bot.service systemctl daemon-reload + +run: build + ./build/craft-bot -c config.json \ No newline at end of file diff --git a/playersBoard.go b/playersBoard.go index fee521a..2ddc02e 100644 --- a/playersBoard.go +++ b/playersBoard.go @@ -24,6 +24,7 @@ const ( emojiUp = "\xE2\xAC\x86" emojiDeaths = "\xF0\x9F\x92\x80" emojiTime = "\xF0\x9F\x95\x90" + emojiGun = "\xF0\x9F\x94\xAB" ) func (p *playerInfo) updatePlayerInfo(ctx context.Context) error { @@ -36,10 +37,16 @@ func (p *playerInfo) updatePlayerInfo(ctx context.Context) error { return err } + kills, err := db.getKillsByOPlayerID(ctx, player.id) + if err != nil { + return err + } + test := `*%s* | %s %s Уровень: *%s* %s Смертей: *%d* %s Время в игре: %s +%s Фрагов: %d ` access := "\xE2\x9D\x8C offLine" @@ -55,12 +62,22 @@ func (p *playerInfo) updatePlayerInfo(ctx context.Context) error { test = fmt.Sprintf(test, player.name, access, emojiUp, level, emojiDeaths, player.deaths, - emojiTime, player.onlineDuration.String()) + emojiTime, player.onlineDuration.String(), + emojiGun, kills, + ) if p.playerMessageID != 0 { mess := tgbotapi.NewEditMessageText(conf.ChatID, p.playerMessageID, test) mess.ParseMode = tgbotapi.ModeMarkdown + ikm := tgbotapi.NewInlineKeyboardMarkup( + tgbotapi.NewInlineKeyboardRow( + tgbotapi.NewInlineKeyboardButtonData("Подробнее", "additional"), + ), + ) + + mess.ReplyMarkup = &ikm + _, err := botApi.Send(mess) if err != nil { return errors.Wrap(err, "Failed to update message")