setting and scenario in chat stat
This commit is contained in:
@@ -29,16 +29,12 @@ func RegisterRP(bot *laniakea.Bot) {
|
||||
rp.Payload(rpScenarioList, "rp.scenario_list")
|
||||
rp.Payload(rpSettingList, "rp.setting_list")
|
||||
rp.Payload(chatStat, "rp.chat_stat")
|
||||
|
||||
rp.Payload(newChatStage1, "rp.new_chat_s1")
|
||||
rp.Payload(newChatStage2, "rp.new_chat_s2")
|
||||
rp.Payload(newChat, "rp.new_chat")
|
||||
|
||||
rp.Command(rpUserPromptGet, "rpuserpget")
|
||||
rp.Command(rpUserPromptSet, "rpuserpset")
|
||||
rp.Command(generate, "g", "gen", "г")
|
||||
rp.Payload(compress, "rp.compress_chat")
|
||||
|
||||
rp.Payload(generalClose, "general.close")
|
||||
|
||||
bot.AddPlugins(rp.Build())
|
||||
@@ -95,7 +91,7 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
fmt.Sprintf("*Выбранная вайфу*: %s", waifu.Name),
|
||||
fmt.Sprintf("*Выбранный пресет*: %s", laniakea.EscapeMarkdown(rpUser.Preset.Name)),
|
||||
fmt.Sprintf("*Выбранная модель*: %s", rpUser.Model.Name),
|
||||
fmt.Sprintf("*Твое описание персонажа*: %s", rpUser.UserPrompt),
|
||||
fmt.Sprintf("*Твоё описание персонажа*: %s", rpUser.UserPrompt),
|
||||
}
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
@@ -283,12 +279,8 @@ func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
}
|
||||
chatId := redisRpRep.GetChatId(ctx.FromID, waifuId)
|
||||
if chatId == "" {
|
||||
chatId = uuid.New().String()
|
||||
err := redisRpRep.SetChatId(ctx.FromID, waifuId, chatId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Answer("Нет активного чата")
|
||||
return
|
||||
}
|
||||
messageCount, err := mdb.GetChatHistorySize(db, chatId)
|
||||
if err != nil {
|
||||
@@ -306,6 +298,24 @@ func chatStat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
fmt.Sprintf("*Кол-во сообщений*: %d", messageCount),
|
||||
fmt.Sprintf("*Кол-во токенов*: %d", tokens),
|
||||
}
|
||||
psqlRpRep := psql.NewRPRepository(db)
|
||||
scenarioId := redisRpRep.GetChatScenarioID(ctx.FromID, waifuId)
|
||||
if scenarioId > 0 {
|
||||
scenario, err := psqlRpRep.GetScenario(scenarioId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
out = append(out, fmt.Sprintf("*Выбранный сценарий*: %s (ID: %d)", scenario.Name, scenario.ID))
|
||||
}
|
||||
|
||||
settingId := redisRpRep.GetChatSettingID(ctx.FromID, waifuId)
|
||||
if settingId > 0 {
|
||||
setting, err := psqlRpRep.GetSetting(settingId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
out = append(out, fmt.Sprintf("*Выбранный сеттинг*: %s (ID: %d)", setting.Name, setting.ID))
|
||||
}
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
|
||||
@@ -423,34 +433,28 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
}
|
||||
}
|
||||
|
||||
err = redisRpRep.SetChatSettingID(ctx.FromID, waifuId, settingId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
err = redisRpRep.SetChatScenarioID(ctx.FromID, waifuId, scenarioId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
|
||||
err = redisRpRep.SetCounter(ctx.FromID, waifuId, 0)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
err = redisRpRep.SetChatTokens(ctx.FromID, waifuId, 0)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
kb.AddCallbackButton("На главную", "rp.info").AddCallbackButton("Закрыть", "general.close")
|
||||
ctx.EditCallback(`Был создан новый чат.\nДля общения используй "/г промпт"`, kb)
|
||||
ctx.EditCallback("Был создан новый чат. Для общения используй `/г промпт`.", kb)
|
||||
}
|
||||
|
||||
func rpUserPromptGet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewRPRepository(db)
|
||||
user, err := rep.GetOrCreateUser(int64(ctx.FromID))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
if user.UserPrompt == "" {
|
||||
ctx.Answer("У тебя нет описания")
|
||||
return
|
||||
}
|
||||
ctx.Answerf("Вот твое РП описание пользователя\n%s", user.UserPrompt)
|
||||
}
|
||||
func rpUserPromptSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
if len(ctx.Args) == 0 || ctx.Args[0] == "" {
|
||||
return
|
||||
@@ -468,37 +472,29 @@ func rpUserPromptSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Answer("Описание пользователя было обновлено.")
|
||||
ctx.Answer("Описание пользователя было обновлено")
|
||||
}
|
||||
|
||||
func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
redisRpRep := red.NewRPRepository(db)
|
||||
rpRep := psql.NewRPRepository(db)
|
||||
rpUser, err := rpRep.GetOrCreateUser(int64(ctx.FromID))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID)
|
||||
if waifuId == 0 {
|
||||
ctx.Answer("Не выбрана вайфу")
|
||||
return
|
||||
}
|
||||
chatId := redisRpRep.GetChatId(ctx.FromID, waifuId)
|
||||
if chatId == "" {
|
||||
chatId = uuid.New().String()
|
||||
err := redisRpRep.SetChatId(ctx.FromID, waifuId, chatId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifu, err := waifuRep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
rpUser, err := rpRep.GetOrCreateUser(int64(ctx.FromID))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
preset, err := rpRep.GetUserPreset(rpUser)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
@@ -524,6 +520,11 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
Content: ai.FormatPrompt(preset.PostHistory, waifu.Name, ctx.From.FirstName),
|
||||
}
|
||||
|
||||
chatId, err := redisRpRep.GetOrCreateChatId(ctx.FromID, waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
history, err := mdb.GetChatHistory(db, chatId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
@@ -589,14 +590,10 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
ctx.Answer("Не выбрана вайфу")
|
||||
return
|
||||
}
|
||||
chatId := redisRpRep.GetChatId(ctx.FromID, waifuId)
|
||||
if chatId == "" {
|
||||
chatId = uuid.New().String()
|
||||
err := redisRpRep.SetChatId(ctx.FromID, waifuId, chatId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
chatId, err := redisRpRep.GetOrCreateChatId(ctx.FromID, waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
history, err := mdb.GetChatHistory(db, chatId)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user