refactoring, fixes and laniakea v0.8

This commit is contained in:
2026-02-19 14:02:25 +03:00
parent 0804398b6c
commit c9a5a81643
30 changed files with 219 additions and 190 deletions

View File

@@ -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 {