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

@@ -33,6 +33,7 @@ type RPRepository struct {
func NewRPRepository(db *sqlx.DB) *RPRepository {
return &RPRepository{db: db}
}
func (rep *RPRepository) GetOrCreateUser(id int64) (*RPUser, error) {
user, err := rep.GetUser(id)
if errors.Is(err, sql.ErrNoRows) {
@@ -91,6 +92,6 @@ func (rep *RPRepository) GetAllScenarios() ([]*RPScenarios, error) {
}
func (rep *RPRepository) GetScenario(id int) (*RPScenarios, error) {
scenario := new(RPScenarios)
err := rep.db.Select(scenario, "SELECT * FROM rp_scenarios WHERE id=$1;", id)
err := rep.db.Get(scenario, "SELECT * FROM rp_scenarios WHERE id=$1;", id)
return scenario, err
}

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))

View File

@@ -16,12 +16,12 @@ CREATE INDEX waifus_index ON waifus(fandom, owner_id);
BEGIN TRANSACTION;
INSERT INTO waifus VALUES (1,314834933, 'Яэ Мико',5,2.00,2.00,10000000000000,'Genshin Impact','AgACAgIAAxkBAAIDcWlmSJkt21sUDXnOQHRDbDfth-lUAALgD2sbmScwS0VleT_h7f0qAQADAgADeQADOAQ', 'Яэ Мико — высокая женщина-кицунэ (лисочеловека). Основные черты внешности:Волосы: Длинные, светло-лиловые, розовеющие к концам, часто собранные на макушке.Глаза: Нежно-пурпурные или фиолетовые, с ярким красным макияжем у внешних уголков, как у лисы.Уши: Лисьи, розовые.Кожа: Светлая.Рост: Высокая, около 165.1 см.Одежда:Наряд: Белый традиционный костюм жрицы (хакуи) с красными элементами.Аксессуары: Золотой головной убор (часто в виде цветка), золотые серьги с пурпурными камнями.Обувь: Белые сандалии с красной подошвой.Образ:В целом, образ Яэ Мико сочетает в себе черты хитрой и игривой лисы-ёкай и утонченности жрицы, что отражается в её ярких чертах и элегантной одежде.Она известна своим хитрым, непредсказуемым и элегантным характером, сочетающим мудрость древнего духа-кицунэ с озорной натурой и любовью к манипуляциям и розыгрышам, но при этом она остается верной подругой и влиятельной личностью, управляющей издательством \"Яэ\". Она умна, любит интриги, но её настоящие чувства, проявляются через поступки, а не слова.');
INSERT INTO waifus VALUES (2, null, 'Зарянка', 5, 2.0, 2.0, 10000000000000, 'Honkai: Star rail', 'AgACAgIAAxkBAAIDaWlmRp7AdVif-UGg3_fa0jgJtVA6AAIu7TEbaHsZS7HGDnXa8gXJAQADAgADcwADOAQ', 'Зарянка (Robin) в Honkai: Star Rail — это изящная и скромная певица-галовианка с Пенаконии, обладающая волнующим голосом, характерными для её расы великолепными нимбами и ушными перьями, а также внешностью, призванной привлекать внимание; её рост составляет около 173,5 см, она использует силу Гармонии для музыки и резонанса. \nКлючевые черты внешности:\nРаса: Галовианка (Пенакония).\nВозраст: 20-25 лет (биологический).\nРост: 173.5 см.\nОсобенности: Великолепные нимбы, ушные перья, волнующий голос.\nРоль: Певица, известная во всей вселенной.\nЭлемент: Физический.\nПуть: Гармония. \nОписание в игре:\nВнешний вид: Изящная, скромная девушка из Галовианцев с Пенаконии.\nТалант: Использует силу Гармонии, чтобы передавать свою музыку и резонировать со всеми формами жизни, от фанатов до других существ.\nВдохновение: Имя отсылает к реальной птице малиновке, известной своим ярким оперением. \nВ целом, Зарянка — это яркий и запоминающийся персонаж, чья внешность сочетает изящество, элементы её расы (нимбы, перья) и стиль, подобающий знаменитой певице из мира Honkai: Star Rail.');
INSERT INTO waifus VALUES (2, null, 'Зарянка', 5, 2.0, 2.0, 10000000000000, 'Honkai: Star rail', 'AgACAgIAAxkBAAIDaWlmRp7AdVif-UGg3_fa0jgJtVA6AAIu7TEbaHsZS7HGDnXa8gXJAQADAgADcwADOAQ', 'Зарянка — это изящная и скромная певица-галовианка, обладающая волнующим голосом, характерными для её расы великолепными нимбами и ушными перьями, а также внешностью, призванной привлекать внимание; её рост составляет около 173,5 см, она использует силу Гармонии для музыки и резонанса. Ключевые черты внешности: Раса: Галовианка (Пенакония). Возраст: 20-25 лет (биологический). Рост: 173.5 см. Особенности: Великолепные нимбы, ушные перья, волнующий голос. Роль: Певица, известная во всей вселенной. Элемент: Физический. Путь: Гармония. Описание в игре: Внешний вид: Изящная, скромная девушка из Галовианцев с Пенаконии. Талант: Использует силу Гармонии, чтобы передавать свою музыку и резонировать со всеми формами жизни, от фанатов до других существ. Вдохновение: Имя отсылает к реальной птице малиновке, известной своим ярким оперением. Характер персонажа (Зарянка) Личность: Изящная, скромная певица-галовианка родом с Пенаконии. Символизм: Птичка Зарянка символизирует справедливость и добро, отважно защищающую их, что отражено в её сюжете, где она «умирает» и «возрождается» в грёзах. У неё есть брат Воскресенье');
INSERT INTO waifus VALUES (3, null, 'Мияби', 5, 2.0, 2.0, 10000000000000, 'Zenless Zone Zero', 'AgACAgIAAxkBAAIL02lvK79Y9o8XK0KaIcuMMlEQ5JG6AAJdEGsbA6N5S0Zuc2c6S3giAQADAgADcwADOAQ ', '');
INSERT INTO waifus VALUES (4, null, 'Джейн Доу', 5, 2.0, 2.0, 10000000000000, 'Zenless Zone Zero', 'AgACAgIAAxkBAAIL1WlvLNu3lH8OEEN00XPePRDQnmloAAJkEGsbA6N5SwEK4RXuMK-yAQADAgADcwADOAQ', '');
INSERT INTO waifus VALUES (5, null, 'Элизия', 5, 2.0, 2.0, 10000000000000, 'Honkai: Star rail', 'AgACAgIAAxkBAAIL1mlvLPQpjTnZ4Ok1KjERIFdByLryAAJlEGsbA6N5SxUEOOHNFSCdAQADAgADcwADOAQ', '');
INSERT INTO waifus VALUES (6, null, 'Светлячок', 5, 2.0, 2.0, 10000000000000, 'Honkai: Star rail', 'AgACAgIAAxkBAAIL12lvLReROZAH1gKY-IL57U5ElUBcAAJnEGsbA6N5S5HV_my-RbTqAQADAgADcwADOAQ', '');
INSERT INTO waifus VALUES (7, null, 'Клоринда', 5, 2.0, 2.0, 10000000000000, 'Genshin Impact', 'AgACAgIAAxkBAAIL2GlvLRyWLv6LGH6pJ71xn-6KoCF2AAJoEGsbA6N5SzBJlZ4WM9sGAQADAgADcwADOAQ', '');
INSERT INTO waifus VALUES (7, null, 'Клоринда', 5, 2.0, 2.0, 10000000000000, 'Genshin Impact', 'AgACAgIAAxkBAAIL2GlvLRyWLv6LGH6pJ71xn-6KoCF2AAJoEGsbA6N5SzBJlZ4WM9sGAQADAgADcwADOAQ', 'Клоринда — высокая девушка с фиолетовыми глазами, носит строгое, вдохновлённое мушкетёрами, одеяние. Основные черты внешности: Рост 168 см, волосы собраны в длинный хвост спереди оставлены свободные пряди, глаза фиолетовые. Одежда: Облегающее форменное платье и белая рубашка, короткая накидка-пиджак с эполетами, треуголка с пером и отворотами, высокие ботинки на каблуках с отворотами, металлические элементы бронзового цвета, ремешки на чулках, асимметричный элемент, похожий на шарф с кистями, сзади. Ключевые черты характера и поведения: Воин и Правосудие: Она — воплощение справедливости, её боятся злодеи и те, кто стремится к славе обманным путём. Непоколебимая: Несмотря на потерю близких, она не сдалась, а стала защитником Фонтейна, демонстрируя силу и решимость. Загадочность: Публично не даёт интервью, окутывая свой успех тайной, но её «ритуал» очищения меча — это на самом деле медитация для сохранения спокойствия и концентрации. Практичность: Сочетает ближний и дальний бой, используя пистолет и меч, что делает её эффективной против любых врагов.');
INSERT INTO waifus VALUES (8, null, 'Райден Эи', 5, 2.0, 2.0, 10000000000000, 'Genshin Impact', 'AgACAgIAAxkBAAIL2WlvLSYSdHFkdTm1txud3qJ7mV4dAAJpEGsbA6N5S3hLErFkYwWuAQADAgADcwADOAQ', '');
INSERT INTO waifus VALUES (9, null, 'Марин Китагава', 5, 2.0, 2.0, 10000000000000, 'Эта фарфоровая кукла влюбилась', '', '');
INSERT INTO waifus VALUES (10, null, 'Надзана Нанакуса', 5, 2.0, 2.0, 10000000000000, 'Песнь ночных сов', '', '');