log middleware

This commit is contained in:
2025-09-29 09:14:39 +03:00
parent 49ffe9ae03
commit e15d56196d
27 changed files with 641 additions and 164 deletions

View File

@@ -3,6 +3,7 @@ package plugins
import (
"fmt"
"kurumibot/database"
"kurumibot/database/psql"
"kurumibot/utils"
"math"
"math/rand/v2"
@@ -34,17 +35,17 @@ func RegisterEconomy(bot *laniakea.Bot) {
bot.AddPlugins(economy.Build())
}
func about(ctx *laniakea.MsgContext) {
func about(msgCtx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
out := []string{
"Версия Go: 1.23.4",
fmt.Sprintf("Версия laniakea: %s", laniakea.VERSION_STRING),
fmt.Sprintf("Go: %s", "1.25.0"),
fmt.Sprintf("Версия laniakea: %s", laniakea.VersionString),
}
ctx.Answer(strings.Join(out, "\n"))
msgCtx.Answer(strings.Join(out, "\n"))
}
func passiveIncome(b *laniakea.Bot) {
for {
users, err := database.GetAllUsers()
users, err := psql.GetAllUsers()
if err != nil {
b.Logger().Error(err)
continue
@@ -73,7 +74,7 @@ func passiveIncome(b *laniakea.Bot) {
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
}
waifus, err := database.GetUserWaifus(user.ID)
waifus, err := psql.GetUserWaifus(user.ID)
if err != nil {
b.Logger().Error(err)
continue
@@ -92,7 +93,7 @@ func passiveIncome(b *laniakea.Bot) {
user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
user.BtcIncome = user.BtcIncome.Add(btcIncome)
user.IncomeTime = time.Now().Add(-time.Hour * 2)
database.Database.Save(user)
database.PostgresDatabase.Save(user)
b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.TelegramID))
}
@@ -101,8 +102,8 @@ func passiveIncome(b *laniakea.Bot) {
}
}
func profile(ctx *laniakea.MsgContext) {
user, err := database.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
func profile(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
if err != nil {
ctx.Answer(err.Error())
return
@@ -117,7 +118,24 @@ func profile(ctx *laniakea.MsgContext) {
if user.Fraction != nil {
fraction = user.Fraction.Name
}
_, needXp := database.CountLevel(user.Exp)
auto := "нет"
if user.Auto != nil {
auto = fmt.Sprintf("%s (ID: %d)", user.Auto.Name, user.Auto.ID)
}
business := "нет"
if user.Business != nil {
business = fmt.Sprintf("%s (ID: %d)", user.Business.Name, user.Business.ID)
}
maid := "нет"
if user.Maid != nil {
maid = fmt.Sprintf("%s (ID: %d)", user.Maid.Name, user.Maid.ID)
}
miner := "нет"
if user.Miner != nil {
miner = fmt.Sprintf("%s (ID: %d)", user.Miner.Name, user.Miner.ID)
}
_, needXp := psql.CountLevel(user.Exp)
out := []string{
fmt.Sprintf("🖤%s, %s🖤", user.Greeting, user.Name),
@@ -128,16 +146,16 @@ func profile(ctx *laniakea.MsgContext) {
fmt.Sprintf("💡Уровень: %d (%d опыта, %d опыта до повышения)", user.Level, user.Exp, needXp-user.Exp),
fmt.Sprintf("💴Баланс: %s¥ %s, %s₿", utils.DecimalComma(&user.Balance), utils.Short(user.Balance.String()), utils.DecimalComma(&user.BTC)),
fmt.Sprintf("💼Работа: %s (ID: %d)", user.Work.Name, user.Work.ID),
fmt.Sprintf("🚘Авто: %s (ID: %d)", user.Auto.Name, user.Auto.ID),
fmt.Sprintf("🏢Бизнес: %s (ID: %d)", user.Business.Name, user.Business.ID),
fmt.Sprintf("👩‍🦳Горничная: %s (ID: %d)", user.Maid.Name, user.Maid.ID),
fmt.Sprintf("🖥Майнер: %s (ID: %d)", user.Miner.Name, user.Miner.ID),
fmt.Sprintf("🚘Авто: %s", auto),
fmt.Sprintf("🏢Бизнес: %s", business),
fmt.Sprintf("👩‍🦳Горничная: %s", maid),
fmt.Sprintf("🖥Майнер: %s", miner),
}
ctx.Answer(strings.Join(out, "\n"))
}
func work(ctx *laniakea.MsgContext) {
user, err := database.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -158,7 +176,7 @@ func work(ctx *laniakea.MsgContext) {
// Count money
moneyToAdd := work.MoneyIncome.Mul(user.Group.Multiplier)
waifus, err := database.GetUserWaifus(user.ID)
waifus, err := psql.GetUserWaifus(user.ID)
if err != nil {
ctx.Error(err)
return
@@ -170,13 +188,17 @@ func work(ctx *laniakea.MsgContext) {
user.Exp += int(expToAdd.IntPart())
user.Balance = user.Balance.Add(moneyToAdd)
user.WorkTime = time.Now()
user.Level, _ = database.CountLevel(user.Exp)
database.Database.Save(user)
ctx.Answer(fmt.Sprintf("Ты заработал %s¥ и %d опыта.\nПриходи через 10 минут.", utils.DecimalComma(&work.MoneyIncome), expToAdd.IntPart()))
user.Level, _ = psql.CountLevel(user.Exp)
database.PostgresDatabase.Save(user)
ctx.Answer(fmt.Sprintf(
"Ты заработал %s¥ и %d опыта.\nПриходи через 10 минут.",
utils.DecimalComma(&work.MoneyIncome),
expToAdd.IntPart(),
))
}
func collect(ctx *laniakea.MsgContext) {
user, err := database.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -212,7 +234,7 @@ func collect(ctx *laniakea.MsgContext) {
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
}
waifus, err := database.GetUserWaifus(user.ID)
waifus, err := psql.GetUserWaifus(user.ID)
if err != nil {
ctx.Error(err)
return
@@ -224,7 +246,7 @@ func collect(ctx *laniakea.MsgContext) {
btcIncome = btcIncome.Mul(waifu.MoneyBonus)
}
incomeText := []string{}
var incomeText []string
if moneyIncome.IntPart() > 0 {
incomeText = append(incomeText, fmt.Sprintf("%s¥", utils.DecimalComma(&moneyIncome)))
@@ -236,7 +258,7 @@ func collect(ctx *laniakea.MsgContext) {
incomeText = append(incomeText, fmt.Sprintf("%.6f₿", btcIncome.InexactFloat64()))
}
passiveIncomeText := []string{}
var passiveIncomeText []string
if user.MoneyIncome.IntPart() > 0 {
user.Balance = user.Balance.Add(user.MoneyIncome)
passiveIncomeText = append(passiveIncomeText, fmt.Sprintf("%s¥", utils.DecimalComma(&user.MoneyIncome)))
@@ -255,11 +277,11 @@ func collect(ctx *laniakea.MsgContext) {
user.Balance = user.Balance.Add(moneyIncome)
user.Exp += int(expIncome.IntPart())
user.Level, _ = database.CountLevel(user.Exp)
user.Level, _ = psql.CountLevel(user.Exp)
user.BTC = user.BTC.Add(btcIncome)
user.IncomeTime = time.Now()
database.Database.Save(user)
database.PostgresDatabase.Save(user)
out := []string{
fmt.Sprintf("Ты собрал %s.", strings.Join(incomeText, ", ")),
@@ -274,12 +296,12 @@ func collect(ctx *laniakea.MsgContext) {
ctx.Answer(strings.Join(out, "\n"))
}
func code(ctx *laniakea.MsgContext) {
func code(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
// user, err := database.Get
}
func vacancies(ctx *laniakea.MsgContext) {
works, err := database.GetAllWorks()
func vacancies(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
works, err := psql.GetAllWorks()
if err != nil {
ctx.Error(err)
@@ -297,13 +319,13 @@ func vacancies(ctx *laniakea.MsgContext) {
ctx.Answer(strings.Join(out, "\n"))
}
func getAJob(ctx *laniakea.MsgContext) {
func getAJob(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
if len(ctx.Args) == 0 {
ctx.Answer("Недостаточно аргументов")
return
}
user, err := database.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -313,7 +335,7 @@ func getAJob(ctx *laniakea.MsgContext) {
ctx.Error(err)
return
}
work, err := database.GetWorkById(workId)
work, err := psql.GetWorkById(workId)
if err != nil {
ctx.Error(err)
return
@@ -324,12 +346,12 @@ func getAJob(ctx *laniakea.MsgContext) {
}
user.WorkID = workId
user.Work = work
database.Database.Save(user)
database.PostgresDatabase.Save(user)
ctx.Answer("Ты успешно устроился на работу!")
}
func aboutGroup(ctx *laniakea.MsgContext) {
user, err := database.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
func aboutGroup(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
if err != nil {
ctx.Error(err)
return