This commit is contained in:
2026-01-13 17:20:50 +03:00
parent 9bd5354250
commit cec3a35d83
7 changed files with 82 additions and 55 deletions

View File

@@ -19,7 +19,7 @@ func RegisterTestRP(bot *laniakea.Bot) {
rp = rp.Command(selectWaifu, "rpwaifu", "рпвайфу")
rp = rp.Payload(selectWaifu, "rp.selwaifu")
rp = rp.Command(newChat, "newchat")
rp = rp.Command(generate, "g", "gen")
rp = rp.Command(generate, "g", "gen", "г")
bot.AddPlugins(rp.Build())
}
@@ -30,16 +30,30 @@ func selectWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err)
return
}
err = red.RPSetSelectedWaifu(db, uint(ctx.FromID), uint(waifuId))
err = red.RPSetSelectedWaifu(db, ctx.FromID, waifuId)
if err != nil {
ctx.Error(err)
return
}
ctx.Answer(fmt.Sprintf("Была выбрана вайфу %d", waifuId))
}
func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
err := red.SaveChatId(db, uint(ctx.FromID), uuid.New().String())
waifuId := red.RPGetSelectedWaifu(db, ctx.FromID)
if waifuId == 0 {
ctx.Answer("Не выбрана вайфу")
return
}
chatId := uuid.New()
err := red.RPSetChatId(db, ctx.FromID, waifuId, chatId.String())
if err != nil {
ctx.Error(err)
return
}
prompt := strings.Join(ctx.Args[1:], " ")
err = red.RPSetChatPrompt(db, ctx.FromID, waifuId, prompt)
if err != nil {
ctx.Error(err)
return
@@ -48,14 +62,14 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
}
func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
waifuId := red.RPGetSelectedWaifu(db, uint(ctx.FromID))
waifuId := red.RPGetSelectedWaifu(db, ctx.FromID)
if waifuId == 0 {
ctx.Answer("Не выбрана вайфу")
return
}
chatId := red.GetChatId(db, uint(ctx.FromID))
chatId := red.RPGetChatId(db, ctx.FromID, waifuId)
if chatId == "" {
err := red.SaveChatId(db, uint(ctx.FromID), uuid.New().String())
err := red.RPSetChatId(db, ctx.FromID, waifuId, uuid.New().String())
if err != nil {
ctx.Error(err)
return
@@ -70,14 +84,15 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
{
Role: "system",
Content: fmt.Sprintf(
"%s %s",
"%s %s %s",
ai.FormatPrompt(ai.PreHistoryPrompt, waifu.Name, ctx.Msg.From.FirstName),
fmt.Sprintf("Вот краткое описание твоего персонажа: %s", waifu.RpPrompt),
red.RPGetChatPrompt(db, ctx.FromID, waifuId),
),
},
}
api := ai.NewOpenAIAPI(ai.CosmoRPUrl, os.Getenv("PAWAN_KEY"), "cosmorp-2.5-it")
api := ai.NewOpenAIAPI(ai.CosmoRPUrl, os.Getenv("PAWAN_KEY"), "cosmorp-2.5")
history, err := mdb.GetChatHistory(db, chatId)
if err != nil {
ctx.Error(err)