diff --git a/Dockerfile b/Dockerfile index 7d782ed..11cea49 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM golang:1.26.0-alpine3.23 AS builder ARG BUILD_TIME ARG GIT_COMMIT -WORKDIR /usr/src/kurumi +WORKDIR /usr/src/ymgb COPY go.mod go.sum ./ #COPY ./laniakea ./laniakea RUN --mount=type=cache,target=/go/pkg/mod go mod download @@ -12,11 +12,11 @@ COPY ./main.go ./ RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ CGO_ENABLED=0 go build -trimpath \ - -ldflags="-s -w -X 'kurumibot/utils.BuildTime=$BUILD_TIME' -X 'kurumibot/utils.GitCommit=$GIT_COMMIT'" \ - -v -o /usr/local/bin/kurumi ./ + -ldflags="-s -w -X 'ymgb/utils.BuildTime=$BUILD_TIME' -X 'ymgb/utils.GitCommit=$GIT_COMMIT'" \ + -v -o /usr/local/bin/ymgb ./ FROM alpine:3.23 AS runner WORKDIR /app ENV GOMEMLIMIT=256MiB -COPY --from=builder /usr/local/bin/kurumi /app/kurumi -CMD ["/app/kurumi"] +COPY --from=builder /usr/local/bin/ymgb /app/ymgb +CMD ["/app/ymgb"] diff --git a/Makefile b/Makefile index 7b0b419..9f95dcc 100644 --- a/Makefile +++ b/Makefile @@ -5,5 +5,5 @@ build: @echo "Building commit $(GIT_COMMIT)" @echo "Build time $(BUILD_TIME)" go mod tidy - docker build --build-arg GIT_COMMIT --build-arg BUILD_TIME -t git.nix13.pw/scuroneko/kurumibotgo:dev -f ./Dockerfile . - docker push git.nix13.pw/scuroneko/kurumibotgo:dev \ No newline at end of file + docker build --build-arg GIT_COMMIT --build-arg BUILD_TIME -t git.nix13.pw/scuroneko/yaemikobot:dev -f ./Dockerfile . + docker push git.nix13.pw/scuroneko/yaemikobot:dev \ No newline at end of file diff --git a/database/ctx.go b/database/ctx.go new file mode 100644 index 0000000..f08cf77 --- /dev/null +++ b/database/ctx.go @@ -0,0 +1,15 @@ +package database + +import ( + "git.nix13.pw/scuroneko/laniakea" + "github.com/redis/go-redis/v9" + "github.com/vinovest/sqlx" + "go.mongodb.org/mongo-driver/v2/mongo" +) + +type Context struct { + laniakea.DbContext + Postgres *sqlx.DB + Mongo *mongo.Client + Redis *redis.Client +} diff --git a/database/mdb/ai_chats.go b/database/mdb/ai_chats.go index 66c4df2..89f7f8c 100644 --- a/database/mdb/ai_chats.go +++ b/database/mdb/ai_chats.go @@ -2,14 +2,13 @@ package mdb import ( "context" - "kurumibot/database" "time" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "go.mongodb.org/mongo-driver/v2/bson" ) -func GetGptChatHistory(db *laniakea.DatabaseContext, chatId string) ([]AiChatMessage, error) { +func GetGptChatHistory(db *database.Context, chatId string) ([]AiChatMessage, error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "gpt_chat_messages") @@ -21,7 +20,7 @@ func GetGptChatHistory(db *laniakea.DatabaseContext, chatId string) ([]AiChatMes err = cursor.All(ctx, &result) return result, err } -func UpdateGptChatHistory(db *laniakea.DatabaseContext, chatId, role, message string) error { +func UpdateGptChatHistory(db *database.Context, chatId, role, message string) error { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "gpt_chat_messages") diff --git a/database/mdb/code.go b/database/mdb/code.go index 8dd50ba..16adbea 100644 --- a/database/mdb/code.go +++ b/database/mdb/code.go @@ -2,10 +2,9 @@ package mdb import ( "context" - "kurumibot/database" "time" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "go.mongodb.org/mongo-driver/v2/bson" ) @@ -22,7 +21,7 @@ type CodeEntry struct { TotalUsages uint `bson:"totalUsages"` } -func FindCode(db *laniakea.DatabaseContext, code string) (CodeEntry, error) { +func FindCode(db *database.Context, code string) (CodeEntry, error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() collection := database.GetMongoCollection(db, "codes") diff --git a/database/mdb/logs.go b/database/mdb/logs.go index d7339e3..bb31744 100644 --- a/database/mdb/logs.go +++ b/database/mdb/logs.go @@ -2,11 +2,10 @@ package mdb import ( "context" - "kurumibot/database" "time" + "ymgb/database" "git.nix13.pw/scuroneko/extypes" - "git.nix13.pw/scuroneko/laniakea" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo/options" ) @@ -20,14 +19,14 @@ type ConsoleLogEntry struct { TimeStamp int64 `bson:"timeStamp" json:"time_stamp"` } -func WriteConsoleLog(db *laniakea.DatabaseContext, e ConsoleLogEntry) error { +func WriteConsoleLog(db *database.Context, e ConsoleLogEntry) error { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "logs") _, err := col.InsertOne(ctx, e) return err } -func GetConsoleLogs(db *laniakea.DatabaseContext) ([]ConsoleLogEntry, error) { +func GetConsoleLogs(db *database.Context) ([]ConsoleLogEntry, error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "logs") @@ -52,14 +51,14 @@ type MessageLogEntry struct { TimeStamp int64 `bson:"timestamp" json:"timestamp"` } -func WriteMessageLog(db *laniakea.DatabaseContext, e *MessageLogEntry) error { +func WriteMessageLog(db *database.Context, e *MessageLogEntry) error { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "msg_logs") _, err := col.InsertOne(ctx, e) return err } -func GetMessageLogs(db *laniakea.DatabaseContext) (extypes.Slice[*MessageLogEntry], error) { +func GetMessageLogs(db *database.Context) (extypes.Slice[*MessageLogEntry], error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "msg_logs") diff --git a/database/mdb/rp_chats.go b/database/mdb/rp_chats.go index fd15626..df09130 100644 --- a/database/mdb/rp_chats.go +++ b/database/mdb/rp_chats.go @@ -2,10 +2,9 @@ package mdb import ( "context" - "kurumibot/database" "time" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "go.mongodb.org/mongo-driver/v2/bson" ) @@ -17,7 +16,7 @@ type AiChatMessage struct { Index int `bson:"index"` } -func GetRPChatHistory(db *laniakea.DatabaseContext, chatId string) ([]AiChatMessage, error) { +func GetRPChatHistory(db *database.Context, chatId string) ([]AiChatMessage, error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "rp_chat_messages") @@ -29,7 +28,7 @@ func GetRPChatHistory(db *laniakea.DatabaseContext, chatId string) ([]AiChatMess err = cursor.All(ctx, &result) return result, err } -func UpdateRPChatHistory(db *laniakea.DatabaseContext, chatId, role, message string, index int) error { +func UpdateRPChatHistory(db *database.Context, chatId, role, message string, index int) error { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "rp_chat_messages") @@ -41,13 +40,13 @@ func UpdateRPChatHistory(db *laniakea.DatabaseContext, chatId, role, message str }) return err } -func GetRPChatHistorySize(db *laniakea.DatabaseContext, chatId string) (int64, error) { +func GetRPChatHistorySize(db *database.Context, chatId string) (int64, error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "rp_chat_messages") return col.CountDocuments(ctx, bson.M{"chatId": chatId}) } -func DeleteRPChatEntry(db *laniakea.DatabaseContext, entry AiChatMessage) error { +func DeleteRPChatEntry(db *database.Context, entry AiChatMessage) error { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() col := database.GetMongoCollection(db, "rp_chat_messages") diff --git a/database/mongo.go b/database/mongo.go index de0a4e2..b4643c5 100644 --- a/database/mongo.go +++ b/database/mongo.go @@ -5,7 +5,6 @@ import ( "log" "os" - "git.nix13.pw/scuroneko/laniakea" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" ) @@ -32,6 +31,6 @@ func ConnectMongo() { } } -func GetMongoCollection(db *laniakea.DatabaseContext, name string) *mongo.Collection { - return db.MongoDB.Database(os.Getenv("MONGO_NAME")).Collection(name) +func GetMongoCollection(db *Context, name string) *mongo.Collection { + return db.Mongo.Database(os.Getenv("MONGO_NAME")).Collection(name) } diff --git a/database/psql/ai.go b/database/psql/ai.go index de7b1a7..b564591 100644 --- a/database/psql/ai.go +++ b/database/psql/ai.go @@ -1,7 +1,8 @@ package psql import ( - "git.nix13.pw/scuroneko/laniakea" + "ymgb/database" + "github.com/vinovest/sqlx" ) @@ -19,8 +20,8 @@ type AIRepository struct { func newAiRepository(db *sqlx.DB) AIRepository { return AIRepository{db} } -func NewAIRepository(db *laniakea.DatabaseContext) AIRepository { - return newAiRepository(db.PostgresSQL) +func NewAIRepository(db *database.Context) AIRepository { + return newAiRepository(db.Postgres) } func (rep AIRepository) GetModel(id string) (AIModel, error) { diff --git a/database/psql/fraction.go b/database/psql/fraction.go index fc00e36..902c085 100644 --- a/database/psql/fraction.go +++ b/database/psql/fraction.go @@ -1,7 +1,8 @@ package psql import ( - "git.nix13.pw/scuroneko/laniakea" + "ymgb/database" + "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -22,8 +23,8 @@ type FractionRepository struct { func newFractionRepository(db *sqlx.DB) FractionRepository { return FractionRepository{db} } -func NewFractionRepository(db *laniakea.DatabaseContext) FractionRepository { - return newFractionRepository(db.PostgresSQL) +func NewFractionRepository(db *database.Context) FractionRepository { + return newFractionRepository(db.Postgres) } func (rep FractionRepository) GetAll() ([]Fraction, error) { diff --git a/database/psql/groups.go b/database/psql/groups.go index 2ec1fe0..d5bdcf3 100644 --- a/database/psql/groups.go +++ b/database/psql/groups.go @@ -1,7 +1,8 @@ package psql import ( - "git.nix13.pw/scuroneko/laniakea" + "ymgb/database" + "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -25,8 +26,8 @@ type GroupRepository struct { func newGroupRepository(db *sqlx.DB) GroupRepository { return GroupRepository{db} } -func NewGroupRepository(db *laniakea.DatabaseContext) GroupRepository { - return newGroupRepository(db.PostgresSQL) +func NewGroupRepository(db *database.Context) GroupRepository { + return newGroupRepository(db.Postgres) } func (rep GroupRepository) GetAll() ([]Group, error) { diff --git a/database/psql/rp.go b/database/psql/rp.go index 38e56ff..736b77f 100644 --- a/database/psql/rp.go +++ b/database/psql/rp.go @@ -3,8 +3,8 @@ package psql import ( "database/sql" "errors" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "github.com/vinovest/sqlx" ) @@ -56,8 +56,8 @@ type RPRepository struct { func newRpRepository(db *sqlx.DB) RPRepository { return RPRepository{db} } -func NewRPRepository(db *laniakea.DatabaseContext) RPRepository { - return newRpRepository(db.PostgresSQL) +func NewRPRepository(db *database.Context) RPRepository { + return newRpRepository(db.Postgres) } func (rep RPRepository) GetOrCreateUser(id int64) (RPUser, error) { diff --git a/database/psql/shop.go b/database/psql/shop.go index 7f13b1d..34ccefa 100644 --- a/database/psql/shop.go +++ b/database/psql/shop.go @@ -1,7 +1,8 @@ package psql import ( - "git.nix13.pw/scuroneko/laniakea" + "ymgb/database" + "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -37,10 +38,10 @@ type ShopRepository struct { db *sqlx.DB } -func NewShopRepository(db *laniakea.DatabaseContext) ShopRepository { - return newShopRepository(db.PostgresSQL) -} func newShopRepository(db *sqlx.DB) ShopRepository { return ShopRepository{db} } +func NewShopRepository(db *database.Context) ShopRepository { + return newShopRepository(db.Postgres) +} func (rep ShopRepository) GetAllAuto() ([]ShopAuto, error) { auto := make([]ShopAuto, 0) diff --git a/database/psql/users.go b/database/psql/users.go index 9c57c49..10f9644 100644 --- a/database/psql/users.go +++ b/database/psql/users.go @@ -6,8 +6,8 @@ import ( "errors" "math" "time" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -56,8 +56,8 @@ type UserRepository struct { } func newUserRepository(db *sqlx.DB) UserRepository { return UserRepository{db} } -func NewUserRepository(db *laniakea.DatabaseContext) UserRepository { - return newUserRepository(db.PostgresSQL) +func NewUserRepository(db *database.Context) UserRepository { + return newUserRepository(db.Postgres) } func (rep UserRepository) GetOrCreate(tgId int, name string) (*User, error) { diff --git a/database/psql/waifus.go b/database/psql/waifus.go index cd31561..095037e 100644 --- a/database/psql/waifus.go +++ b/database/psql/waifus.go @@ -2,8 +2,8 @@ package psql import ( "database/sql" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -26,8 +26,9 @@ type WaifuRepository struct { db *sqlx.DB } -func NewWaifuRepository(db *laniakea.DatabaseContext) *WaifuRepository { - return &WaifuRepository{db: db.PostgresSQL} +func newWaifuRepository(db *sqlx.DB) *WaifuRepository { return &WaifuRepository{db} } +func NewWaifuRepository(db *database.Context) *WaifuRepository { + return newWaifuRepository(db.Postgres) } func (rep *WaifuRepository) GetAll() ([]*Waifu, error) { diff --git a/database/psql/works.go b/database/psql/works.go index d8dc65c..7452c84 100644 --- a/database/psql/works.go +++ b/database/psql/works.go @@ -1,7 +1,8 @@ package psql import ( - "git.nix13.pw/scuroneko/laniakea" + "ymgb/database" + "github.com/shopspring/decimal" "github.com/vinovest/sqlx" ) @@ -22,8 +23,8 @@ type WorkRepository struct { func newWorkRepository(db *sqlx.DB) WorkRepository { return WorkRepository{db} } -func NewWorkRepository(db *laniakea.DatabaseContext) WorkRepository { - return newWorkRepository(db.PostgresSQL) +func NewWorkRepository(db *database.Context) WorkRepository { + return newWorkRepository(db.Postgres) } func (rep WorkRepository) GetById(id int) (Work, error) { diff --git a/database/red/ai_chats.go b/database/red/ai_chats.go index 8cf9018..b6411f7 100644 --- a/database/red/ai_chats.go +++ b/database/red/ai_chats.go @@ -2,8 +2,8 @@ package red import ( "fmt" + "ymgb/database" - "git.nix13.pw/scuroneko/laniakea" "github.com/google/uuid" "github.com/redis/go-redis/v9" ) @@ -12,7 +12,7 @@ type AiRepository struct { client *redis.Client } -func NewAiRepository(db *laniakea.DatabaseContext) AiRepository { +func NewAiRepository(db *database.Context) AiRepository { return AiRepository{client: db.Redis} } diff --git a/database/red/rp_chats.go b/database/red/rp_chats.go index 017d07a..295f218 100644 --- a/database/red/rp_chats.go +++ b/database/red/rp_chats.go @@ -5,11 +5,11 @@ import ( "database/sql" "errors" "fmt" - "kurumibot/database/psql" - "kurumibot/utils" "strings" + "ymgb/database" + "ymgb/database/psql" + "ymgb/utils" - "git.nix13.pw/scuroneko/laniakea" "github.com/google/uuid" "github.com/redis/go-redis/v9" ) @@ -18,7 +18,7 @@ var ctx = context.Background() type RPRepository struct { client *redis.Client - db *laniakea.DatabaseContext + db *database.Context } type RPChat struct { @@ -35,7 +35,7 @@ type RPChat struct { Scenarios []psql.RPScenario } -func NewRPRepository(db *laniakea.DatabaseContext) RPRepository { +func NewRPRepository(db *database.Context) RPRepository { return RPRepository{db.Redis, db} } diff --git a/go.mod b/go.mod index 8221d24..f9440a9 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ -module kurumibot +module ymgb go 1.26.0 require ( git.nix13.pw/scuroneko/extypes v1.2.0 - git.nix13.pw/scuroneko/laniakea v0.7.1 + git.nix13.pw/scuroneko/laniakea v0.8.0-beta.3 git.nix13.pw/scuroneko/slog v1.0.2 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index 758b265..9cd3aa5 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= git.nix13.pw/scuroneko/extypes v1.2.0 h1:2n2hD6KsMAted+6MGhAyeWyli2Qzc9G2y+pQNB7C1dM= git.nix13.pw/scuroneko/extypes v1.2.0/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw= -git.nix13.pw/scuroneko/laniakea v0.7.1 h1:OIIsZ4qdgHevicOHsYTD+yviGIxvd30Wi6j56QptC3Q= -git.nix13.pw/scuroneko/laniakea v0.7.1/go.mod h1:ABjrmhKkTbhTwlMs+bLCr2e+ANnHbYTeidaicl2F0Z4= +git.nix13.pw/scuroneko/laniakea v0.8.0-beta.3 h1:ZXW6TEKmhrqSLHxtLX6JDZeUaeuO5R6qYMhNf01G0Ec= +git.nix13.pw/scuroneko/laniakea v0.8.0-beta.3/go.mod h1:oYJ4Bp+AsbNBP4clPBJ2ODnJ8oSTihBbi5XaTJa0hMc= git.nix13.pw/scuroneko/slog v1.0.2 h1:vZyUROygxC2d5FJHUQM/30xFEHY1JT/aweDZXA4rm2g= git.nix13.pw/scuroneko/slog v1.0.2/go.mod h1:3Qm2wzkR5KjwOponMfG7TcGSDjmYaFqRAmLvSPTuWJI= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= diff --git a/main.go b/main.go index fcb9a87..bddca40 100644 --- a/main.go +++ b/main.go @@ -3,8 +3,8 @@ package main import ( "git.nix13.pw/scuroneko/laniakea" - "kurumibot/database" - "kurumibot/plugins" + "ymgb/database" + "ymgb/plugins" "github.com/joho/godotenv" ) @@ -16,27 +16,29 @@ func main() { database.ConnectMongo() database.ConnectRedis() - bot := laniakea.NewBot(laniakea.LoadOptsFromEnv()) + bot := laniakea.NewBot[database.Context](laniakea.LoadOptsFromEnv()) defer bot.Close() bot = bot.ErrorTemplate("Во время выполнения команды произошла ошибка!\nСообщите об этом разработчику!\n\n%s") - bot = bot.DatabaseContext(&laniakea.DatabaseContext{ - PostgresSQL: database.PostgresDatabase, - MongoDB: database.MongoClient, - Redis: database.RedisClient, + bot = bot.DatabaseContext(&database.Context{ + Postgres: database.PostgresDatabase, + Mongo: database.MongoClient, + Redis: database.RedisClient, }) bot.AddDatabaseLogger(plugins.DatabaseLogger) bot.AddMiddleware(plugins.InitLogMiddleware()) - plugins.RegisterService(bot) - plugins.RegisterAdmin(bot) - plugins.RegisterLogs(bot) + bot.AddPlugins( + plugins.RegisterService(), + plugins.RegisterAdmin(), + plugins.RegisterLogs(), + plugins.RegisterEconomy(bot), + plugins.RegisterWaifus(), + plugins.RegisterRP(), + plugins.RegisterAi(), + plugins.RegisterFun(), + ) - plugins.RegisterEconomy(bot) //plugins.RegisterRelations(bot) - plugins.RegisterWaifus(bot) - plugins.RegisterRP(bot) - plugins.RegisterAi(bot) - plugins.RegisterFun(bot) if err := bot.AutoGenerateCommands(); err != nil { panic(err) diff --git a/plugins/admin.go b/plugins/admin.go index 68e72a7..552fb01 100644 --- a/plugins/admin.go +++ b/plugins/admin.go @@ -2,9 +2,10 @@ package plugins import ( "encoding/json" - "kurumibot/database/psql" "path/filepath" "strings" + "ymgb/database" + "ymgb/database/psql" "git.nix13.pw/scuroneko/laniakea" "git.nix13.pw/scuroneko/laniakea/tgapi" @@ -12,18 +13,18 @@ import ( "github.com/vinovest/sqlx" ) -func RegisterAdmin(b *laniakea.Bot) { - p := laniakea.NewPlugin("Admin") +func RegisterAdmin() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Admin") p.AddCommand(laniakea.NewCommand(uploadPhoto, "uploadPhoto").SkipCommandAutoGen()) p.AddCommand(laniakea.NewCommand(emojiId, "emojiId").SkipCommandAutoGen()) p.AddCommand(laniakea.NewCommand(getProxy, "proxy").SkipCommandAutoGen()) p.AddCommand(laniakea.NewCommand(execSql, "sql").SkipCommandAutoGen()) p.AddMiddleware(AdminMiddleware()) - b.AddPlugins(p) + return p } -func AdminMiddleware() laniakea.Middleware { - m := laniakea.NewMiddleware("AdminMiddleware", func(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool { +func AdminMiddleware() laniakea.Middleware[database.Context] { + m := laniakea.NewMiddleware("AdminMiddleware", func(ctx *laniakea.MsgContext, db *database.Context) bool { rep := psql.NewUserRepository(db) u, err := rep.GetById(ctx.FromID) if err != nil { @@ -34,12 +35,12 @@ func AdminMiddleware() laniakea.Middleware { return *m } -func execSql(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func execSql(ctx *laniakea.MsgContext, db *database.Context) { stmt := strings.Join(ctx.Args, " ") - stmt = db.PostgresSQL.Rebind(stmt) + stmt = db.Postgres.Rebind(stmt) var res []map[string]any - r, err := db.PostgresSQL.Query(stmt) + r, err := db.Postgres.Query(stmt) if err != nil { ctx.Error(err) return @@ -61,7 +62,7 @@ func execSql(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } ctx.Answerf("`%s`", data) } -func getProxy(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func getProxy(ctx *laniakea.MsgContext, _ *database.Context) { ruProxy := "tg://proxy?port=3128&secret=7qaZyfQN-IQ7ZMwrR_zWnHBvem9uLnJ1&server=185.231.245.25" fiProxy := "tg://proxy?port=3128&secret=7vmNtw_233xvIRFvImm2PLtvem9uLnJ1&server=46.243.6.125" kb := laniakea.NewInlineKeyboard(1) @@ -69,7 +70,7 @@ func getProxy(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { kb.AddUrlButtonStyle("🇫🇮Finland", laniakea.ButtonStylePrimary, fiProxy) ctx.Keyboard("Доступные прокси", kb) } -func emojiId(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func emojiId(ctx *laniakea.MsgContext, _ *database.Context) { var id string for _, e := range ctx.Msg.Entities { if e.Type != tgapi.MessageEntityCustomEmoji { @@ -80,7 +81,7 @@ func emojiId(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { } ctx.Answer(id) } -func uploadPhoto(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func uploadPhoto(ctx *laniakea.MsgContext, _ *database.Context) { ctx.SendAction(tgapi.ChatActionUploadPhoto) photoId := ctx.Msg.Photo.Last().FileID f, err := ctx.Api.GetFile(tgapi.GetFileP{FileId: photoId}) @@ -90,7 +91,7 @@ func uploadPhoto(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { } u := tgapi.NewUploader(ctx.Api) defer u.Close() - content, err := ctx.Bot.GetFileByLink(f.FilePath) + content, err := ctx.Api.GetFileByLink(f.FilePath) if err != nil { ctx.Error(err) return diff --git a/plugins/ai.go b/plugins/ai.go index 5addf3f..14e807c 100644 --- a/plugins/ai.go +++ b/plugins/ai.go @@ -1,21 +1,22 @@ package plugins import ( - "kurumibot/database/mdb" - "kurumibot/database/red" - "kurumibot/utils/ai" "strings" + "ymgb/database" + "ymgb/database/mdb" + "ymgb/database/red" + "ymgb/utils/ai" "git.nix13.pw/scuroneko/laniakea" ) -func RegisterAi(bot *laniakea.Bot) { - p := laniakea.NewPlugin("AI") +func RegisterAi() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("AI") p.AddCommand(p.NewCommand(gpt, "gpt").SkipCommandAutoGen()) - bot.AddPlugins(p) + return p } -func gpt(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func gpt(ctx *laniakea.MsgContext, db *database.Context) { q := strings.Join(ctx.Args, " ") api := ai.NewOpenAIAPI(ai.GPTBaseUrl, "", "anthropic/claude-sonnet-4") defer api.Close() diff --git a/plugins/economy.go b/plugins/economy.go index b017a28..04920cf 100644 --- a/plugins/economy.go +++ b/plugins/economy.go @@ -2,20 +2,21 @@ package plugins import ( "fmt" - "kurumibot/database/psql" - "kurumibot/utils" "math" "math/rand/v2" "strconv" "strings" "time" + "ymgb/database" + "ymgb/database/psql" + "ymgb/utils" "git.nix13.pw/scuroneko/laniakea" "github.com/shopspring/decimal" ) -func RegisterEconomy(bot *laniakea.Bot) { - p := laniakea.NewPlugin("Economy") +func RegisterEconomy(bot *laniakea.Bot[database.Context]) *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Economy") p.AddCommand(p.NewCommand(profile, "profile")) p.AddCommand(p.NewCommand(profile, "профиль").SkipCommandAutoGen()) p.AddCommand(p.NewCommand(work, "work")) @@ -33,14 +34,13 @@ func RegisterEconomy(bot *laniakea.Bot) { p.AddCommand(p.NewCommand(aboutGroup, "group")) p.AddCommand(p.NewCommand(aboutGroup, "о группе").SkipCommandAutoGen()) - bot.AddRunner(laniakea.NewRunner( + bot.AddRunner(*laniakea.NewRunner[database.Context]( "economy.PassiveIncome", passiveIncome, - ).Timeout(time.Minute).Build()) - - bot.AddPlugins(p) + ).Timeout(time.Minute)) + return p } -func passiveIncome(b *laniakea.Bot) error { +func passiveIncome(b *laniakea.Bot[database.Context]) error { ctx := b.GetDBContext() waifuRep := psql.NewWaifuRepository(ctx) userRep := psql.NewUserRepository(ctx) @@ -49,7 +49,7 @@ func passiveIncome(b *laniakea.Bot) error { if err != nil { return err } - b.Logger().Debugf("Loaded %d users\n", len(users)) + b.GetLogger().Debugf("Loaded %d users\n", len(users)) for _, user := range users { if user.Business == nil && user.Maid == nil && user.Miner == nil { @@ -76,7 +76,7 @@ func passiveIncome(b *laniakea.Bot) error { waifus, err := waifuRep.GetByUserId(user.ID) if err != nil { - b.Logger().Error(err) + b.GetLogger().Errorln(err) continue } for _, waifu := range waifus { @@ -96,16 +96,16 @@ func passiveIncome(b *laniakea.Bot) error { _, err = userRep.Update(&user) if err != nil { - b.Logger().Error(err) + b.GetLogger().Errorln(err) continue } - b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID)) + b.GetLogger().Debugln(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID)) } return nil } -func profile(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func profile(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewUserRepository(db) user, err := rep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName) if err != nil { @@ -158,7 +158,7 @@ func profile(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer(strings.Join(out, "\n")) } -func work(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func work(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewUserRepository(db) user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName) if err != nil { @@ -207,7 +207,7 @@ func work(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { )) } -func collect(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func collect(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewUserRepository(db) user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName) if err != nil { @@ -312,11 +312,11 @@ func collect(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer(strings.Join(out, "\n")) } -func code(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func code(ctx *laniakea.MsgContext, _ *database.Context) { // user, err := database.Get } -func vacancies(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func vacancies(ctx *laniakea.MsgContext, db *database.Context) { worksRep := psql.NewWorkRepository(db) works, err := worksRep.GetAll() @@ -336,7 +336,7 @@ func vacancies(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer(strings.Join(out, "\n")) } -func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func getAJob(ctx *laniakea.MsgContext, db *database.Context) { if len(ctx.Args) == 0 { ctx.Answer("Недостаточно аргументов") return @@ -372,7 +372,7 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer("Ты успешно устроился на работу!") } -func aboutGroup(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func aboutGroup(ctx *laniakea.MsgContext, db *database.Context) { userRep := psql.NewUserRepository(db) user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName) if err != nil { diff --git a/plugins/fun.go b/plugins/fun.go index 509b12d..d3dbfef 100644 --- a/plugins/fun.go +++ b/plugins/fun.go @@ -2,15 +2,16 @@ package plugins import ( "strings" + "ymgb/database" "git.nix13.pw/scuroneko/laniakea" ) -func RegisterFun(bot *laniakea.Bot) { - p := laniakea.NewPlugin("Fun") +func RegisterFun() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Fun") p.AddCommand(p.NewCommand(beautyFont, "bf")) p.AddCommand(p.NewCommand(beautyFontHeart, "bfh")) - bot.AddPlugins(p) + return p } var ligatures = map[string]string{ @@ -22,7 +23,7 @@ var ligatures = map[string]string{ "v": "𝑣", "w": "𝑤", "x": "𝑥", "y": "𝑦", "z": "𝑧", } -func beautyFont(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func beautyFont(ctx *laniakea.MsgContext, _ *database.Context) { m := strings.Join(ctx.Args, " ") out := "" for _, r := range m { @@ -36,7 +37,7 @@ func beautyFont(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer(out) } -func beautyFontHeart(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func beautyFontHeart(ctx *laniakea.MsgContext, _ *database.Context) { m := strings.Join(ctx.Args, " ") out := "" for _, r := range m { diff --git a/plugins/logs.go b/plugins/logs.go index 139c97a..a6320fd 100644 --- a/plugins/logs.go +++ b/plugins/logs.go @@ -4,28 +4,29 @@ import ( "bytes" "encoding/json" "fmt" - "kurumibot/database/mdb" - "kurumibot/utils" "strings" "time" + "ymgb/database" + "ymgb/database/mdb" + "ymgb/utils" "git.nix13.pw/scuroneko/extypes" "git.nix13.pw/scuroneko/laniakea" "git.nix13.pw/scuroneko/slog" ) -func RegisterLogs(bot *laniakea.Bot) { - p := laniakea.NewPlugin("Logs") +func RegisterLogs() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Logs") p.AddCommand(p.NewCommand(getLogs, "logs").SkipCommandAutoGen()) p.AddCommand(p.NewCommand(getMsgLogs, "msglogs").SkipCommandAutoGen()) p.AddMiddleware(AdminMiddleware()) - bot.AddPlugins(p) + return p } -func InitLogMiddleware() laniakea.Middleware { +func InitLogMiddleware() laniakea.Middleware[database.Context] { return *laniakea.NewMiddleware("LogMiddleware", logMiddleware).SetAsync(true) } -func getLogs(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func getLogs(ctx *laniakea.MsgContext, db *database.Context) { logs, err := mdb.GetConsoleLogs(db) if err != nil { ctx.Error(err) @@ -34,7 +35,7 @@ func getLogs(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { out := encodeLogs(logs) ctx.Answer(strings.Join(out, "")) } -func getMsgLogs(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func getMsgLogs(ctx *laniakea.MsgContext, db *database.Context) { logs, err := mdb.GetMessageLogs(db) if err != nil { ctx.Error(err) @@ -61,7 +62,7 @@ func encodeLogs[T comparable](logs extypes.Slice[T]) extypes.Slice[string] { return out } -func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool { +func logMiddleware(ctx *laniakea.MsgContext, db *database.Context) bool { if ctx.Msg == nil { return true } @@ -70,18 +71,18 @@ func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool SenderID: ctx.FromID, ChatID: ctx.Msg.Chat.ID, Text: ctx.Msg.Text, - TimeStamp: time.Now().Unix(), + TimeStamp: int64(ctx.Msg.Date), } err := mdb.WriteMessageLog(db, entry) if err != nil { - ctx.Bot.Logger().Errorln(err) + ctx.Error(err) } return true } type DatabaseWriter struct { slog.LoggerWriter - db *laniakea.DatabaseContext + db *database.Context } func (w *DatabaseWriter) Print(level slog.LogLevel, prefix string, traceback []*slog.MethodTraceback, messages ...any) error { @@ -102,6 +103,6 @@ func (w *DatabaseWriter) Print(level slog.LogLevel, prefix string, traceback []* err := mdb.WriteConsoleLog(w.db, entry) return err } -func DatabaseLogger(db *laniakea.DatabaseContext) slog.LoggerWriter { +func DatabaseLogger(db *database.Context) slog.LoggerWriter { return &DatabaseWriter{db: db} } diff --git a/plugins/relations.go b/plugins/relations.go index 744603e..5381bde 100644 --- a/plugins/relations.go +++ b/plugins/relations.go @@ -1,8 +1,12 @@ package plugins -import "git.nix13.pw/scuroneko/laniakea" +import ( + "ymgb/database" -func RegisterRelations(b *laniakea.Bot) { - p := laniakea.NewPlugin("Relations") - b.AddPlugins(p) + "git.nix13.pw/scuroneko/laniakea" +) + +func RegisterRelations() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Relations") + return p } diff --git a/plugins/rp.go b/plugins/rp.go index 8075859..83719c0 100644 --- a/plugins/rp.go +++ b/plugins/rp.go @@ -4,14 +4,15 @@ import ( "database/sql" "errors" "fmt" - "kurumibot/database/mdb" - "kurumibot/database/psql" - "kurumibot/database/red" - "kurumibot/utils" - "kurumibot/utils/ai" "log" "strconv" "strings" + "ymgb/database" + "ymgb/database/mdb" + "ymgb/database/psql" + "ymgb/database/red" + "ymgb/utils" + "ymgb/utils/ai" "git.nix13.pw/scuroneko/extypes" "git.nix13.pw/scuroneko/laniakea" @@ -19,8 +20,8 @@ import ( "github.com/google/uuid" ) -func RegisterRP(bot *laniakea.Bot) { - rp := laniakea.NewPlugin("RP") +func RegisterRP() *laniakea.Plugin[database.Context] { + rp := laniakea.NewPlugin[database.Context]("RP") rp.AddCommand(rp.NewCommand(rpUserPromptSet, "rpuserpset")) rp.AddCommand(rp.NewCommand(rpInfo, "rp").SetDescription("РП профиль пользователя")) rp.AddCommand(rp.NewCommand(rpInfo, "рп").SkipCommandAutoGen()) @@ -50,10 +51,10 @@ func RegisterRP(bot *laniakea.Bot) { rp.AddPayload(rp.NewCommand(compressSettingStage2, "rp.compress_setting_s2")) rp.AddPayload(rp.NewCommand(compressSetting, "rp.compress_setting")) - bot.AddPlugins(rp) + return rp } -func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpInfo(ctx *laniakea.MsgContext, db *database.Context) { userRep := psql.NewUserRepository(db) _, err := userRep.GetOrCreate(ctx.FromID, ctx.From.FirstName) if err != nil { @@ -135,7 +136,7 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } } -func rpWaifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpWaifuList(ctx *laniakea.MsgContext, db *database.Context) { waifuRep := psql.NewWaifuRepository(db) var waifus extypes.Slice[*psql.Waifu] @@ -176,7 +177,7 @@ func rpWaifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } -func rpWaifuSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpWaifuSet(ctx *laniakea.MsgContext, db *database.Context) { waifuId, err := strconv.Atoi(ctx.Args[0]) if err != nil { ctx.Error(err) @@ -201,7 +202,7 @@ func rpWaifuSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func rpPresetsList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpPresetsList(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewRPRepository(db) presets, err := rep.GetAllPresets() if err != nil { @@ -222,7 +223,7 @@ func rpPresetsList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } -func rpPresetSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpPresetSet(ctx *laniakea.MsgContext, db *database.Context) { if len(ctx.Args) == 0 || ctx.Args[0] == "" { return } @@ -249,7 +250,7 @@ func rpPresetSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func rpModelList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpModelList(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewAIRepository(db) models, err := rep.GetAllModels() if err != nil { @@ -268,7 +269,7 @@ func rpModelList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } -func rpModelSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpModelSet(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewRPRepository(db) user, err := rep.GetOrCreateUser(int64(ctx.FromID)) if err != nil { @@ -293,7 +294,7 @@ func rpModelSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpScenarioList(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewRPRepository(db) scenarios, err := rep.GetAllScenarios() if err != nil { @@ -309,7 +310,7 @@ func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.EditCallback("Список сценариев\n"+strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } -func rpSettingList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewRPRepository(db) settings, err := rep.GetAllSettings() if err != nil { @@ -327,7 +328,7 @@ func rpSettingList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func chatStat(ctx *laniakea.MsgContext, db *database.Context) { redisRpRep := red.NewRPRepository(db) chat, err := redisRpRep.GetChat(ctx.FromID) if err != nil { @@ -368,7 +369,7 @@ func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func newChatStage1(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func newChatStage1(ctx *laniakea.MsgContext, db *database.Context) { // Выбор сеттинга rep := psql.NewRPRepository(db) settings, err := rep.GetAllSettings() @@ -391,7 +392,7 @@ func newChatStage1(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } -func newChatStage2(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func newChatStage2(ctx *laniakea.MsgContext, db *database.Context) { // Выбор сценария if len(ctx.Args) == 0 { ctx.Error(fmt.Errorf("zero args len")) @@ -455,7 +456,7 @@ func newChatStage2(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { //ctx.AnswerCbQueryText(fmt.Sprintf("Ты выбрал сеттинг %s", setting.Name)) ctx.AnswerCbQuery() } -func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func newChat(ctx *laniakea.MsgContext, db *database.Context) { redisRpRep := red.NewRPRepository(db) psqlRpRep := psql.NewRPRepository(db) waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID) @@ -536,7 +537,7 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func rpUserPromptSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func rpUserPromptSet(ctx *laniakea.MsgContext, db *database.Context) { if len(ctx.Args) == 0 || ctx.Args[0] == "" { return } @@ -556,7 +557,7 @@ func rpUserPromptSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Answer("Описание пользователя было обновлено") } -func _getChatHistory(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) ([]ai.Message, error) { +func _getChatHistory(ctx *laniakea.MsgContext, db *database.Context) ([]ai.Message, error) { redRep := red.NewRPRepository(db) psqlRep := psql.NewRPRepository(db) waifuRep := psql.NewWaifuRepository(db) @@ -620,7 +621,7 @@ func _getChatHistory(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) ([] return messages, nil } -func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func generate(ctx *laniakea.MsgContext, db *database.Context) { redisRpRep := red.NewRPRepository(db) rpRep := psql.NewRPRepository(db) waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID) @@ -717,7 +718,7 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } } -func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func regenerateResponse(ctx *laniakea.MsgContext, db *database.Context) { ctx.AnswerCbQueryText("Запущена повторная генерация…") redRep := red.NewRPRepository(db) @@ -789,7 +790,7 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) ctx.EditCallback(laniakea.EscapeMarkdown(res.Choices[0].Message.Content), kb) } -func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func compress(ctx *laniakea.MsgContext, db *database.Context) { ctx.AnswerCbQueryText("Запущено сжатие чата…") _compress(ctx, db) kb := laniakea.NewInlineKeyboard(1) @@ -797,7 +798,7 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info") } -func _compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func _compress(ctx *laniakea.MsgContext, db *database.Context) { redisRpRep := red.NewRPRepository(db) waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID) if waifuId == 0 { @@ -902,7 +903,7 @@ var tokenMethodCount = []int{ 16, 32, 64, 128, 256, } -func compressSettingStage1(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func compressSettingStage1(ctx *laniakea.MsgContext, _ *database.Context) { kb := laniakea.NewInlineKeyboard(2) kb.AddCallbackButton("По сообщениям", "rp.compress_setting_s2", "messages") kb.AddCallbackButton("По токенам", "rp.compress_setting_s2", "tokens") @@ -917,7 +918,7 @@ func compressSettingStage1(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext ctx.EditCallback(strings.Join(out, "\n"), kb) } -func compressSettingStage2(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func compressSettingStage2(ctx *laniakea.MsgContext, _ *database.Context) { if len(ctx.Args) == 0 { return } @@ -942,7 +943,7 @@ func compressSettingStage2(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info") ctx.EditCallback(strings.Join(out, "\n"), kb) } -func compressSetting(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func compressSetting(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewRPRepository(db) user, err := rep.GetUser(int64(ctx.FromID)) if err != nil { diff --git a/plugins/service.go b/plugins/service.go index 5a8306b..6924f17 100644 --- a/plugins/service.go +++ b/plugins/service.go @@ -2,23 +2,24 @@ package plugins import ( "fmt" - "kurumibot/utils" "runtime" "strings" + "ymgb/database" + "ymgb/utils" "git.nix13.pw/scuroneko/laniakea" ) -func RegisterService(bot *laniakea.Bot) { - p := laniakea.NewPlugin("service") +func RegisterService() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("service") p.AddPayload(p.NewCommand(generalClose, "general.close")) p.AddCommand(p.NewCommand(about, "about")) p.AddCommand(p.NewCommand(about, "о боте").SkipCommandAutoGen()) - bot.AddPlugins(p) + return p } -func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func about(ctx *laniakea.MsgContext, _ *database.Context) { out := []string{ fmt.Sprintf("Версия Go: %s", runtime.Version()[2:]), fmt.Sprintf("Версия Laniakea: %s", laniakea.VersionString), @@ -32,7 +33,7 @@ func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { ctx.Keyboard(strings.Join(out, "\n"), kb) } -func generalClose(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func generalClose(ctx *laniakea.MsgContext, _ *database.Context) { ctx.CallbackDelete() ctx.AnswerCbQuery() } diff --git a/plugins/waifus.go b/plugins/waifus.go index b7138df..7e35a58 100644 --- a/plugins/waifus.go +++ b/plugins/waifus.go @@ -2,19 +2,20 @@ package plugins import ( "fmt" - "kurumibot/database/psql" - "kurumibot/utils" "log" "strconv" "strings" "time" + "ymgb/database" + "ymgb/database/psql" + "ymgb/utils" "git.nix13.pw/scuroneko/extypes" "git.nix13.pw/scuroneko/laniakea" ) -func RegisterWaifus(bot *laniakea.Bot) { - p := laniakea.NewPlugin("Waifus") +func RegisterWaifus() *laniakea.Plugin[database.Context] { + p := laniakea.NewPlugin[database.Context]("Waifus") p.AddCommand(p.NewCommand(myWaifu, "mywaifu")) p.AddCommand(p.NewCommand(myWaifu, "моивайфу").SkipCommandAutoGen()) @@ -33,10 +34,10 @@ func RegisterWaifus(bot *laniakea.Bot) { p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_buy")) p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_sell")) - bot.AddPlugins(p) + return p } -func myWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func myWaifu(ctx *laniakea.MsgContext, db *database.Context) { userRep := psql.NewUserRepository(db) user, err := userRep.GetOrCreate(ctx.FromID, ctx.From.FirstName) if err != nil { @@ -73,7 +74,7 @@ func myWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } } -func waifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func waifuList(ctx *laniakea.MsgContext, db *database.Context) { rep := psql.NewWaifuRepository(db) waifus, err := rep.GetAll() if err != nil { @@ -108,7 +109,7 @@ func waifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } } -func waifuSell(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func waifuSell(ctx *laniakea.MsgContext, db *database.Context) { const CantSellWaifu = "Не удалось продать вайфу" waifuId, err := strconv.Atoi(ctx.Args[0]) @@ -147,11 +148,11 @@ func waifuSell(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Keyboard(strings.Join(out, "\n"), kb) } -func buyWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func buyWaifu(ctx *laniakea.MsgContext, db *database.Context) { } -func waifuInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func waifuInfo(ctx *laniakea.MsgContext, db *database.Context) { if len(ctx.Args) != 1 { ctx.Answer("Не указан ID вайфу!") return @@ -198,7 +199,7 @@ func waifuInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.AnswerCbQuery() } -func waifuSearch(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { +func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) { userRep := psql.NewUserRepository(db) user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName) if err != nil { @@ -265,7 +266,7 @@ func waifuSearch(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } } -func waifuNotImplemented(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { +func waifuNotImplemented(ctx *laniakea.MsgContext, _ *database.Context) { kb := laniakea.NewInlineKeyboard(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list") ctx.EditCallback("Данная функция ещё не реализована", kb) }