scenario and waifu update
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user