runners and fixes
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
logs/
|
||||
.idea/
|
||||
laniakea/
|
||||
config.json
|
||||
.env.production
|
||||
.env.ai
|
||||
|
||||
@@ -2,9 +2,10 @@ package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
"kurumibot/database"
|
||||
"time"
|
||||
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
)
|
||||
|
||||
type ConsoleLogEntry struct {
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
"time"
|
||||
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
"github.com/vinovest/sqlx"
|
||||
)
|
||||
@@ -151,8 +150,9 @@ func (rep *UserRepository) Update(user *User) (*User, error) {
|
||||
return rep.GetById(user.ID)
|
||||
}
|
||||
|
||||
func GetAllUsers() ([]*User, error) {
|
||||
func (rep *UserRepository) GetAll() ([]*User, error) {
|
||||
users := make([]*User, 0)
|
||||
|
||||
return users, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ package psql
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
"github.com/shopspring/decimal"
|
||||
"github.com/vinovest/sqlx"
|
||||
)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package psql
|
||||
|
||||
import (
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
"kurumibot/database"
|
||||
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
"github.com/shopspring/decimal"
|
||||
"github.com/vinovest/sqlx"
|
||||
)
|
||||
|
||||
@@ -3,8 +3,8 @@ package red
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
|
||||
"git.nix13.pw/scuroneko/laniakea"
|
||||
"github.com/google/uuid"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
14
go.mod
14
go.mod
@@ -1,9 +1,9 @@
|
||||
module kurumibot
|
||||
|
||||
go 1.25.6
|
||||
go 1.25
|
||||
|
||||
require (
|
||||
git.nix13.pw/scuroneko/laniakea v0.2.6
|
||||
git.nix13.pw/scuroneko/laniakea v0.3.0
|
||||
git.nix13.pw/scuroneko/slog v1.0.0
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/joho/godotenv v1.5.1
|
||||
@@ -11,19 +11,19 @@ require (
|
||||
github.com/redis/go-redis/v9 v9.17.3
|
||||
github.com/shopspring/decimal v1.4.0
|
||||
github.com/vinovest/sqlx v1.7.1
|
||||
go.mongodb.org/mongo-driver/v2 v2.4.2
|
||||
go.mongodb.org/mongo-driver/v2 v2.5.0
|
||||
)
|
||||
|
||||
//replace git.nix13.pw/scuroneko/laniakea v0.3.0 => ./laniakea
|
||||
|
||||
require (
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/fatih/color v1.18.0 // indirect
|
||||
github.com/golang/snappy v1.0.0 // indirect
|
||||
github.com/klauspost/compress v1.18.2 // indirect
|
||||
github.com/klauspost/compress v1.18.3 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/muir/sqltoken v0.1.0 // indirect
|
||||
github.com/stretchr/testify v1.11.1 // indirect
|
||||
github.com/muir/sqltoken v0.2.1 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
github.com/xdg-go/scram v1.2.0 // indirect
|
||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||
|
||||
18
go.sum
18
go.sum
@@ -1,7 +1,7 @@
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
git.nix13.pw/scuroneko/laniakea v0.2.6 h1:IfI6dR48EWZPEu7r2E/iyMA9Yn+w3SYNEQbZwWJkeAE=
|
||||
git.nix13.pw/scuroneko/laniakea v0.2.6/go.mod h1:6PSB7tsSvAVPUFcmEyj8CtpVCVfnscJdsWZylcjCvM4=
|
||||
git.nix13.pw/scuroneko/laniakea v0.3.0 h1:Hx0FPQaEtorcly0ILLnWCj4IPYuxpRCYVmwqNjKdCG4=
|
||||
git.nix13.pw/scuroneko/laniakea v0.3.0/go.mod h1:OVSuOuAQLUwBoFWH/+oTlQqwra1e49zED9Xoc9DeJcg=
|
||||
git.nix13.pw/scuroneko/slog v1.0.0 h1:PI0YePrmCopjrljUfwCtBIEwNYB+PBgDzPcCXbetpcE=
|
||||
git.nix13.pw/scuroneko/slog v1.0.0/go.mod h1:3Qm2wzkR5KjwOponMfG7TcGSDjmYaFqRAmLvSPTuWJI=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
@@ -18,16 +18,14 @@ github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
||||
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
||||
github.com/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo=
|
||||
github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw=
|
||||
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
|
||||
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk=
|
||||
github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
|
||||
github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw=
|
||||
github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
|
||||
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||
@@ -36,8 +34,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
||||
github.com/muir/sqltoken v0.1.0 h1:edosEGsOClOZNfgGQNQSgxR9O6LiVefm2rDRqp2InuI=
|
||||
github.com/muir/sqltoken v0.1.0/go.mod h1:lgOIORnKekMsuc/ZwdPOfwz/PtWLPCke43cEbT3uDuY=
|
||||
github.com/muir/sqltoken v0.2.1 h1:19KvJrCj9aOMfU921hjnizWPlQmPTe+tb36zupOY2FA=
|
||||
github.com/muir/sqltoken v0.2.1/go.mod h1:sSlj5M0VqQ4OuedmxwWs1TmzzRXaH3DLf5ukzg6meIo=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4=
|
||||
@@ -57,8 +55,8 @@ github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gi
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.mongodb.org/mongo-driver/v2 v2.4.2 h1:HrJ+Auygxceby9MLp3YITobef5a8Bv4HcPFIkml1U7U=
|
||||
go.mongodb.org/mongo-driver/v2 v2.4.2/go.mod h1:jHeEDJHJq7tm6ZF45Issun9dbogjfnPySb1vXA7EeAI=
|
||||
go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE=
|
||||
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
|
||||
|
||||
2
main.go
2
main.go
@@ -23,7 +23,7 @@ func main() {
|
||||
Redis: database.RedisClient,
|
||||
}
|
||||
bot = bot.ErrorTemplate("Во время выполнения команды произошла ошибка!\nСообщите об этом разработчику!\n\n%s")
|
||||
bot = bot.InitDatabaseContext(dbCtx)
|
||||
bot = bot.DatabaseContext(dbCtx)
|
||||
bot.AddDatabaseLogger(plugins.DatabaseLogger)
|
||||
bot.AddMiddleware(plugins.InitLogMiddleware())
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ func RegisterEconomy(bot *laniakea.Bot) {
|
||||
|
||||
economy = economy.Command(about, "about", "о боте")
|
||||
|
||||
//go passiveIncome(bot)
|
||||
runner := laniakea.NewRunner("economy.PassiveIncome", passiveIncome).Timeout(time.Minute).Build()
|
||||
bot.AddRunner(runner)
|
||||
|
||||
bot.AddPlugins(economy.Build())
|
||||
}
|
||||
@@ -44,64 +45,71 @@ func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
ctx.Answer(strings.Join(out, "\n"))
|
||||
}
|
||||
|
||||
//func passiveIncome(b *laniakea.Bot) {
|
||||
// for {
|
||||
// time.Sleep(time.Minute * 5)
|
||||
//
|
||||
// users, err := psql.GetAllUsers()
|
||||
// if err != nil {
|
||||
// b.Logger().Error(err)
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// for _, user := range users {
|
||||
// if user.Business == nil && user.Maid == nil && user.Miner == nil {
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// moneyIncome := decimal.NewFromInt(0)
|
||||
// expIncome := decimal.NewFromInt(0)
|
||||
// btcIncome := decimal.NewFromInt(0)
|
||||
//
|
||||
// if user.Business != nil {
|
||||
// moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
// if user.Maid != nil {
|
||||
// expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
// if user.Miner != nil {
|
||||
// btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
//
|
||||
// waifus, err := psql.GetUserWaifus(user.ID)
|
||||
// if err != nil {
|
||||
// b.Logger().Error(err)
|
||||
// continue
|
||||
// }
|
||||
// for _, waifu := range waifus {
|
||||
// moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
|
||||
// expIncome = expIncome.Mul(waifu.ExpBonus)
|
||||
// btcIncome = btcIncome.Mul(waifu.MoneyBonus)
|
||||
// }
|
||||
//
|
||||
// expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
// moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
// btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
//
|
||||
// user.ExpIncome += int(expIncome.IntPart())
|
||||
// user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
|
||||
// user.BtcIncome = user.BtcIncome.Add(btcIncome)
|
||||
// user.IncomeTime = time.Now().Add(-time.Hour * 2)
|
||||
// psql.UpdateUser(user)
|
||||
//
|
||||
// b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
func passiveIncome(b *laniakea.Bot) error {
|
||||
ctx := b.GetDBContext()
|
||||
waifuRep := psql.NewWaifuRepository(ctx)
|
||||
userRep := psql.NewUserRepository(ctx)
|
||||
|
||||
for {
|
||||
users, err := userRep.GetAll()
|
||||
if err != nil {
|
||||
b.Logger().Error(err)
|
||||
continue
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
if user.Business == nil && user.Maid == nil && user.Miner == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
|
||||
continue
|
||||
}
|
||||
|
||||
moneyIncome := decimal.NewFromInt(0)
|
||||
expIncome := decimal.NewFromInt(0)
|
||||
btcIncome := decimal.NewFromInt(0)
|
||||
|
||||
if user.Business != nil {
|
||||
moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
if user.Maid != nil {
|
||||
expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
if user.Miner != nil {
|
||||
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
|
||||
waifus, err := waifuRep.GetByUserId(user.ID)
|
||||
if err != nil {
|
||||
b.Logger().Error(err)
|
||||
continue
|
||||
}
|
||||
for _, waifu := range waifus {
|
||||
moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
|
||||
expIncome = expIncome.Mul(waifu.ExpBonus)
|
||||
btcIncome = btcIncome.Mul(waifu.MoneyBonus)
|
||||
}
|
||||
|
||||
expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
|
||||
user.ExpIncome += int(expIncome.IntPart())
|
||||
user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
|
||||
user.BtcIncome = user.BtcIncome.Add(btcIncome)
|
||||
user.IncomeTime = time.Now().Add(-time.Hour * 2)
|
||||
|
||||
_, err = userRep.Update(user)
|
||||
if err != nil {
|
||||
b.Logger().Error(err)
|
||||
continue
|
||||
}
|
||||
|
||||
b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func profile(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewUserRepository(db)
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
|
||||
func RegisterRP(bot *laniakea.Bot) {
|
||||
rp := laniakea.NewPlugin("RP")
|
||||
rp.Command(rpUserPromptSet, "rpuserpset")
|
||||
rp.Command(rpInfo, "rp", "рп")
|
||||
rp.Payload(rpInfo, "rp.info")
|
||||
rp.Payload(rpWaifuList, "rp.waifu_list")
|
||||
@@ -32,7 +33,6 @@ func RegisterRP(bot *laniakea.Bot) {
|
||||
rp.Payload(newChatStage1, "rp.new_chat_s1")
|
||||
rp.Payload(newChatStage2, "rp.new_chat_s2")
|
||||
rp.Payload(newChat, "rp.new_chat")
|
||||
rp.Command(rpUserPromptSet, "rpuserpset")
|
||||
rp.Command(generate, "g", "gen", "г")
|
||||
rp.Payload(compress, "rp.compress_chat")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user