scenario and waifu update

This commit is contained in:
2026-01-20 22:08:12 +03:00
parent b804e43351
commit 02590a2a46
3 changed files with 38 additions and 6 deletions

View File

@@ -21,6 +21,7 @@ func RegisterRP(bot *laniakea.Bot) {
rp = rp.Payload(selectWaifu, "rp.selwaifu")
rp = rp.Command(rpPresetsList, "rpplist")
rp = rp.Command(rpPresetSet, "rppset")
rp = rp.Command(rpScenarioList, "rpscenlist")
rp = rp.Command(newChat, "newchat")
rp = rp.Command(rpUserPromptGet, "rpuserpget")
rp = rp.Command(rpUserPromptSet, "rpuserpset")
@@ -43,6 +44,7 @@ func selectWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Answer(fmt.Sprintf("Была выбрана вайфу %d", waifuId))
}
func rpPresetsList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db.PostgresSQL)
presets, err := rep.GetAllPresets()
@@ -81,6 +83,20 @@ func rpPresetSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
}
ctx.Answer(fmt.Sprintf("Был выбран пресет %s", preset.Name))
}
func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db.PostgresSQL)
scenarios, err := rep.GetAllScenarios()
if err != nil {
ctx.Error(err)
return
}
out := make([]string, len(scenarios))
for i, scenario := range scenarios {
out[i] = fmt.Sprintf("%d) *%s*", scenario.ID, scenario.Name)
}
ctx.Answer(strings.Join(out, "\n"))
}
func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
waifuId := red.RPGetSelectedWaifu(db, ctx.FromID)
if waifuId == 0 {
@@ -94,8 +110,22 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
return
}
prompt := strings.Join(ctx.Args[1:], " ")
err = red.RPSetChatPrompt(db, ctx.FromID, waifuId, prompt)
scenarioId, err := strconv.Atoi(ctx.Args[0])
if err != nil {
ctx.Error(err)
return
}
rep := psql.NewRPRepository(db.PostgresSQL)
scenario, err := rep.GetScenario(scenarioId)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
ctx.Answerf("Сценарий %d не найден", scenarioId)
} else {
ctx.Error(err)
}
return
}
err = red.RPSetChatPrompt(db, ctx.FromID, waifuId, scenario.Prompt)
if err != nil {
ctx.Error(err)
return
@@ -105,8 +135,9 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err)
return
}
ctx.Answer("Был создан новый чат.")
ctx.Answer("Был создан новый чат")
}
func rpUserPromptGet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db.PostgresSQL)
user, err := rep.GetOrCreateUser(int64(ctx.FromID))