This commit is contained in:
2026-01-22 17:11:53 +03:00
parent 1ef0bd503a
commit fb81f401b7

View File

@@ -24,7 +24,6 @@ func RegisterRP(bot *laniakea.Bot) {
rp.Payload(rpPresetsList, "rp.preset_list") rp.Payload(rpPresetsList, "rp.preset_list")
rp.Payload(rpPresetSet, "rp.preset_set") rp.Payload(rpPresetSet, "rp.preset_set")
rp.Payload(rpScenarioList, "rp.scenario_list") rp.Payload(rpScenarioList, "rp.scenario_list")
rp.Payload(rpScenarioSet, "rp.scenario_set")
rp.Payload(chatStat, "rp.tokens") rp.Payload(chatStat, "rp.tokens")
rp.Payload(newChat, "rp.new_chat") rp.Payload(newChat, "rp.new_chat")
@@ -33,6 +32,8 @@ func RegisterRP(bot *laniakea.Bot) {
rp.Command(generate, "g", "gen", "г") rp.Command(generate, "g", "gen", "г")
rp.Payload(compress, "rp.compress_chat") rp.Payload(compress, "rp.compress_chat")
rp.Payload(generalClose, "general.close")
bot.AddPlugins(rp.Build()) 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!", ctx.From.FirstName),
fmt.Sprintf("Выбранная вайфу: %s", waifu.Name), fmt.Sprintf("Выбранная вайфу: %s", waifu.Name),
fmt.Sprintf("Выбранный пресет: %s", "_TODO_"), fmt.Sprintf("Выбранный пресет: %s", "_TODO_"),
fmt.Sprintf("Выбранный сценарий: %s", "_TODO_"),
fmt.Sprintf("Твое описание персонажа: %s", rpUser.UserPrompt), fmt.Sprintf("Твое описание персонажа: %s", rpUser.UserPrompt),
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboard(1)
kb.AddCallbackButton("Статистика чата", "rp.tokens") kb.AddCallbackButton("Статистика чата", "rp.tokens")
kb.AddCallbackButton("Сменить пресет", "rp.preset_list") kb.AddCallbackButton("Сменить пресет", "rp.preset_list")
kb.AddCallbackButton("Выбрать сценарий", "rp.scenario_list")
kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list") kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list")
kb.AddCallbackButton("Новый чат", "rp.new_chat") kb.AddCallbackButton("Новый чат", "rp.scenario_list")
if ctx.CallbackMsgId > 0 { if ctx.CallbackMsgId > 0 {
ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.EditCallback(strings.Join(out, "\n"), kb)
} else { } else {
@@ -164,13 +163,13 @@ func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboard(2)
for i, scenario := range scenarios { for i, scenario := range scenarios {
out[i] = fmt.Sprintf("%d) *%s*\n%s\n", scenario.ID, scenario.Name, scenario.Description) 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.AddLine()
kb.AddCallbackButton("На главную", "rp.info") 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) { func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
redisRpRep := red.NewRPRepository(db) redisRpRep := red.NewRPRepository(db)
@@ -223,21 +222,24 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err) ctx.Error(err)
return return
} }
rep := psql.NewRPRepository(db) if scenarioId > 0 {
scenario, err := rep.GetScenario(scenarioId) rep := psql.NewRPRepository(db)
if err != nil { scenario, err := rep.GetScenario(scenarioId)
if errors.Is(err, sql.ErrNoRows) { if err != nil {
ctx.Answerf("Сценарий %d не найден", scenarioId) if errors.Is(err, sql.ErrNoRows) {
} else { ctx.Answerf("Сценарий №%d не найден", scenarioId)
ctx.Error(err) } 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) err = redisRpRep.SetCounter(ctx.FromID, waifuId, 0)
if err != nil { if err != nil {
ctx.Error(err) ctx.Error(err)
@@ -248,7 +250,9 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err) ctx.Error(err)
return 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) { func rpUserPromptGet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
@@ -455,3 +459,7 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
} }
m.Edit("Сжатие завершено") m.Edit("Сжатие завершено")
} }
func generalClose(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
ctx.CallbackDelete()
}