From 685cd12713c82c90aa9edaef0873858fd4f66a1e Mon Sep 17 00:00:00 2001 From: ScuroNeko Date: Thu, 29 Jan 2026 23:05:19 +0300 Subject: [PATCH] compress wip --- plugins/rp.go | 66 +++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/plugins/rp.go b/plugins/rp.go index eead133..100046c 100644 --- a/plugins/rp.go +++ b/plugins/rp.go @@ -7,7 +7,6 @@ import ( "kurumibot/database/mdb" "kurumibot/database/psql" "kurumibot/database/red" - "kurumibot/utils" "kurumibot/utils/ai" "strconv" "strings" @@ -602,17 +601,49 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { compressMethod := rpUser.CompressMethod if compressMethod == "messages" { if counter+2 >= rpUser.CompressLimit { - compress(ctx, db) + m := ctx.EditCallback("Запущено сжатие чата…", nil) + _compress(ctx, db) + m.Delete() } - } else if compressMethod == "token" { + } else if compressMethod == "tokens" { if tokens >= rpUser.CompressLimit*1000 { - compress(ctx, db) + m := ctx.EditCallback("Запущено сжатие чата…", nil) + _compress(ctx, db) + m.Delete() } } } func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { m := ctx.EditCallback("Запущено сжатие чата…", nil) + _compress(ctx, db) + m.Delete() + return + //chatId = uuid.New().String() + //err = redisRpRep.SetChatId(ctx.FromID, waifuId, chatId) + //if err != nil { + // ctx.Error(err) + // return + //} + // + //err = mdb.UpdateChatHistory(db, chatId, "assistant", compressedHistory) + //if err != nil { + // ctx.Error(err) + //} + //offset := utils.Min(len(history), 20) + //for _, m := range history[len(history)-offset:] { + // err = mdb.UpdateChatHistory(db, chatId, m.Role, m.Message) + // if err != nil { + // ctx.Error(err) + // } + //} + //kb := laniakea.NewInlineKeyboard(1) + //kb = kb.AddCallbackButton("Назад", "rp.chat_stat") + //kb = kb.AddCallbackButton("На главную", "rp.info") + //ctx.EditCallback("Сжатие завершено", kb) +} + +func _compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { redisRpRep := red.NewRPRepository(db) waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID) if waifuId == 0 { @@ -648,36 +679,13 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Error(err) } if len(res.Choices) == 0 { - m.Edit("Не удалось сжать чат") + ctx.Answer("Не удалось сжать чат") return } compressedHistory := strings.TrimSpace(res.Choices[0].Message.Content) compressedHistory = strings.ReplaceAll(compressedHistory, "*", "") - m.Edit(compressedHistory) - return - chatId = uuid.New().String() - err = redisRpRep.SetChatId(ctx.FromID, waifuId, chatId) - if err != nil { - ctx.Error(err) - return - } - - err = mdb.UpdateChatHistory(db, chatId, "assistant", compressedHistory) - if err != nil { - ctx.Error(err) - } - offset := utils.Min(len(history), 20) - for _, m := range history[len(history)-offset:] { - err = mdb.UpdateChatHistory(db, chatId, m.Role, m.Message) - if err != nil { - ctx.Error(err) - } - } - kb := laniakea.NewInlineKeyboard(1) - kb = kb.AddCallbackButton("Назад", "rp.chat_stat") - kb = kb.AddCallbackButton("На главную", "rp.info") - ctx.EditCallback("Сжатие завершено", kb) + ctx.Answer(compressedHistory) } var messagesMethodCount = []int{