From fb81f401b7448be9fc333a09d3a27ed23b1c291e Mon Sep 17 00:00:00 2001 From: ScuroNeko Date: Thu, 22 Jan 2026 17:11:53 +0300 Subject: [PATCH] some fix --- plugins/rp.go | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/plugins/rp.go b/plugins/rp.go index b64aa47..0b6a796 100644 --- a/plugins/rp.go +++ b/plugins/rp.go @@ -24,7 +24,6 @@ func RegisterRP(bot *laniakea.Bot) { rp.Payload(rpPresetsList, "rp.preset_list") rp.Payload(rpPresetSet, "rp.preset_set") rp.Payload(rpScenarioList, "rp.scenario_list") - rp.Payload(rpScenarioSet, "rp.scenario_set") rp.Payload(chatStat, "rp.tokens") rp.Payload(newChat, "rp.new_chat") @@ -33,6 +32,8 @@ func RegisterRP(bot *laniakea.Bot) { rp.Command(generate, "g", "gen", "г") rp.Payload(compress, "rp.compress_chat") + rp.Payload(generalClose, "general.close") + bot.AddPlugins(rp.Build()) } @@ -52,16 +53,14 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { fmt.Sprintf("Привет, %s!", ctx.From.FirstName), fmt.Sprintf("Выбранная вайфу: %s", waifu.Name), fmt.Sprintf("Выбранный пресет: %s", "_TODO_"), - fmt.Sprintf("Выбранный сценарий: %s", "_TODO_"), fmt.Sprintf("Твое описание персонажа: %s", rpUser.UserPrompt), } kb := laniakea.NewInlineKeyboard(1) kb.AddCallbackButton("Статистика чата", "rp.tokens") kb.AddCallbackButton("Сменить пресет", "rp.preset_list") - kb.AddCallbackButton("Выбрать сценарий", "rp.scenario_list") kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list") - kb.AddCallbackButton("Новый чат", "rp.new_chat") + kb.AddCallbackButton("Новый чат", "rp.scenario_list") if ctx.CallbackMsgId > 0 { ctx.EditCallback(strings.Join(out, "\n"), kb) } else { @@ -164,13 +163,13 @@ func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { kb := laniakea.NewInlineKeyboard(2) for i, scenario := range scenarios { out[i] = fmt.Sprintf("%d) *%s*\n%s\n", scenario.ID, scenario.Name, scenario.Description) - kb.AddCallbackButton(scenario.Name, "rp.scenario_set", scenario.ID) + kb.AddCallbackButton(scenario.Name, "rp.new_chat", scenario.ID) } + kb.AddCallbackButton("Без сценария", "rp.new_chat", 0) kb.AddLine() kb.AddCallbackButton("На главную", "rp.info") - ctx.EditCallback(strings.Join(out, "\n"), kb) + ctx.EditCallback("Выбери сценарий"+strings.Join(out, "\n"), kb) } -func rpScenarioSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {} func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { redisRpRep := red.NewRPRepository(db) @@ -223,21 +222,24 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Error(err) return } - rep := psql.NewRPRepository(db) - scenario, err := rep.GetScenario(scenarioId) - if err != nil { - if errors.Is(err, sql.ErrNoRows) { - ctx.Answerf("Сценарий %d не найден", scenarioId) - } else { - ctx.Error(err) + if scenarioId > 0 { + rep := psql.NewRPRepository(db) + scenario, err := rep.GetScenario(scenarioId) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + ctx.Answerf("Сценарий №%d не найден", scenarioId) + } else { + ctx.Error(err) + } + return + } + err = redisRpRep.SetChatPrompt(ctx.FromID, waifuId, scenario.Prompt) + if err != nil { + ctx.Error(err) + return } - return - } - err = redisRpRep.SetChatPrompt(ctx.FromID, waifuId, scenario.Prompt) - if err != nil { - ctx.Error(err) - return } + err = redisRpRep.SetCounter(ctx.FromID, waifuId, 0) if err != nil { ctx.Error(err) @@ -248,7 +250,9 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { ctx.Error(err) return } - ctx.Answer("Был создан новый чат") + kb := laniakea.NewInlineKeyboard(2) + kb.AddCallbackButton("На главную", "rp.info").AddCallbackButton("Закрыть", "general.close") + ctx.EditCallback("Был создан новый чат", kb) } func rpUserPromptGet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { @@ -455,3 +459,7 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } m.Edit("Сжатие завершено") } + +func generalClose(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { + ctx.CallbackDelete() +}