From f8f3a6c15ff14bd360aab979cdd862a0f3d418bc Mon Sep 17 00:00:00 2001 From: ScuroNeko Date: Mon, 2 Feb 2026 16:36:35 +0300 Subject: [PATCH] some fixes --- database/psql/groups.go | 3 ++- plugins/rp.go | 33 ++++++++++++++++++++++++++------- scripts/postgres/02-users.sql | 19 ++++++++++--------- scripts/postgres/04-waifus.sql | 4 ++-- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/database/psql/groups.go b/database/psql/groups.go index 787169e..70112e6 100644 --- a/database/psql/groups.go +++ b/database/psql/groups.go @@ -8,8 +8,9 @@ import ( type Group struct { ID int Name string - IsAdmin bool `db:"is_admin"` IsVip bool `db:"is_vip"` + IsPremium bool `db:"is_premium"` + IsAdmin bool `db:"is_admin"` IsTester bool `db:"is_tester"` Multiplier decimal.Decimal Sale decimal.Decimal diff --git a/plugins/rp.go b/plugins/rp.go index 116466e..b8be416 100644 --- a/plugins/rp.go +++ b/plugins/rp.go @@ -125,7 +125,20 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { func rpWaifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { waifuRep := psql.NewWaifuRepository(db) - waifus, err := waifuRep.GetByUserId(ctx.FromID) + waifus := make([]*psql.Waifu, 0) + var err error + + userRep := psql.NewUserRepository(db) + user, err := userRep.GetOrCreate(ctx.FromID, ctx.From.FirstName) + if err != nil { + ctx.Error(err) + return + } + if user.Group.IsPremium { + waifus, err = waifuRep.GetAll() + } else { + waifus, err = waifuRep.GetByUserId(ctx.FromID) + } if err != nil { ctx.Error(err) return @@ -665,14 +678,15 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) return } - // 0(system), 1, 2, ..., N-2(user, count-3), N-1(agent, count-2), N(system, count-1) - answerToDelete := history[count-2] - err = mdb.DeleteChatEntry(db, answerToDelete) - if err != nil { - ctx.Error(err) + if len(messages) == count { + ctx.Bot.Logger().Errorln("len(messages) == count. ") return } + // 0(system), 1, 2, ..., N-2(user, count-3), N-1(agent, count-2), N(system, count-1) + answerToDelete := history[count-2] + userReq := messages[count-2] + psqlRep := psql.NewRPRepository(db) rpUser, err := psqlRep.GetOrCreateUser(int64(ctx.FromID)) if err != nil { @@ -680,7 +694,6 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) return } - userReq := messages[count-2] api := ai.NewOpenAIAPI(ai.GPTBaseUrl, "", rpUser.Model.Key) defer api.Close() @@ -693,6 +706,12 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) return } + err = mdb.DeleteChatEntry(db, answerToDelete) + if err != nil { + ctx.Error(err) + return + } + m.Delete() kb := laniakea.NewInlineKeyboard(1) kb.AddCallbackButton("Перегенерировать", "rp.regenerate", count) diff --git a/scripts/postgres/02-users.sql b/scripts/postgres/02-users.sql index 485e68a..746626a 100644 --- a/scripts/postgres/02-users.sql +++ b/scripts/postgres/02-users.sql @@ -1,8 +1,9 @@ CREATE TABLE groups ( id serial NOT NULL PRIMARY KEY, name text, - is_admin boolean DEFAULT false NOT NULL, is_vip boolean DEFAULT false NOT NULL, + is_premium boolean DEFAULT false NOT NULL, + is_admin boolean DEFAULT false NOT NULL, multiplier numeric DEFAULT 1 NOT NULL, sale double precision DEFAULT 1 NOT NULL, max_multigen integer DEFAULT 2 NOT NULL, @@ -43,14 +44,14 @@ CREATE UNIQUE INDEX users_uindex ON users(id); CREATE UNIQUE INDEX groups_uindex ON groups(id); BEGIN TRANSACTION; -INSERT INTO groups VALUES (1, '✨Пользователь✨', false, false, 1.0, 1, 3, false, 3); -INSERT INTO groups VALUES (3, '👾Премиум🌟', false, true, 5, 0.75, 7, false, 3); -INSERT INTO groups VALUES (2, '🔮VIP🔮', false, true, 2.5, 0.9, 5, false, 3); -INSERT INTO groups VALUES (4, '💎Админ💎', true, true, 10, 0.6, 10, true, 3); -INSERT INTO groups VALUES (5, '💰🔱СОЗДАТЕЛЬ🔱💰', true, true, 20, 0.5, 10, true, 3); -INSERT INTO groups VALUES (6, '⚠Тостер⚠', false, true, 3, 0.85, 3, true, 3); -INSERT INTO groups VALUES (1488, '📚Экономист📈', false, true, 14.88, 0.6, 3, false, 3); -INSERT INTO groups VALUES (1337, '🏳‍🌈ToP GaY In ThE WorlD🏳‍🌈🌈', false, true, 13.37, 0.7, 3, false, 3); +INSERT INTO groups VALUES (1, '✨Пользователь✨', false, false, false, 1.0, 1, 3, false, 3); +INSERT INTO groups VALUES (2, '🔮VIP🔮', true, false, false, 2.5, 0.9, 5, false, 3); +INSERT INTO groups VALUES (3, '👾Премиум🌟', true, true, false, 5, 0.75, 7, false, 3); +INSERT INTO groups VALUES (4, '💎Админ💎', true, true, true, 10, 0.6, 10, true, 3); +INSERT INTO groups VALUES (5, '💰🔱СОЗДАТЕЛЬ🔱💰', true, true, true, 20, 0.5, 10, true, 3); +INSERT INTO groups VALUES (6, '⚠Тостер⚠', true, false, false, 3, 0.85, 3, true, 3); +INSERT INTO groups VALUES (1488, '📚Экономист📈', true, true, false, 14.88, 0.6, 3, false, 3); +INSERT INTO groups VALUES (1337, '🏳‍🌈ToP GaY In ThE WorlD🏳‍🌈🌈', true, true, false, 13.37, 0.7, 3, false, 3); ALTER SEQUENCE groups_id_seq RESTART WITH 7; INSERT INTO users VALUES (314834933, 999999999, 'scuroneko', 5, 1, 0, 1, '0001-01-01 00:00:00.000000', 5, 15, 6, 14, '0001-01-01 00:00:00.000000', 999999.000000, 0, null, 'Привет', 0, null, 0, 0, 0.000000, '0001-01-01 00:00:00.000000'); diff --git a/scripts/postgres/04-waifus.sql b/scripts/postgres/04-waifus.sql index 9421fe9..104db31 100644 --- a/scripts/postgres/04-waifus.sql +++ b/scripts/postgres/04-waifus.sql @@ -15,10 +15,10 @@ CREATE UNIQUE INDEX waifus_uindex ON waifus(id); 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 (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', 'Зарянка — это изящная и скромная певица-галовианка, обладающая волнующим голосом, характерными для её расы великолепными нимбами и ушными перьями, а также внешностью, призванной привлекать внимание; её рост составляет около 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 (4, null, 'Джейн Доу', 5, 2.0, 2.0, 10000000000000, 'Zenless Zone Zero', 'AgACAgIAAxkBAAIL1WlvLNu3lH8OEEN00XPePRDQnmloAAJkEGsbA6N5SwEK4RXuMK-yAQADAgADcwADOAQ', 'Джейн Доу — это молодая женщина ростом 170 см, принадлежащая к расе тиренов, что проявляется в наличии у нее серых крысиных ушей и хвоста, а также в ее остроте, ловкости и изменении внешности в бою. Обычно ее представляют как симпатичную, с чертами крысы, но очень проворную и меняющую свой облик. Одежда: Темный (черный/темно-серый) верх (жакет/куртка) с красными или бордовыми деталями, короткая юбка, высокие сапоги, порванные чулки. Ключевые черты характера: двойственность: Кажется одновременно коварной и заботливой, жёсткой и флиртующей. Манипулятивность и интеллект: Эксперт в психологии преступников, использует обман и притворство. Загадочность: Её прошлое и настоящее имя неизвестны, она дает разные ответы, создавая образ неуловимой личности. Ночной образ жизни: Наиболее активна в сумерках и ночью, «сова». Остроумие и игривость: Любит дразнить других и устраивать розыгрыши. Скрытая забота: Несмотря на цинизм, искренне переживает за жизнь невинных людей. Профессионализм: В бою невероятно свирепа и проворна, использует свою ловкость и знание уязвимостей врагов.'); 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, 314834933, 'Клоринда', 5, 2.0, 2.0, 10000000000000, 'Genshin Impact', 'AgACAgIAAxkBAAIL2GlvLRyWLv6LGH6pJ71xn-6KoCF2AAJoEGsbA6N5SzBJlZ4WM9sGAQADAgADcwADOAQ', 'Клоринда — высокая девушка с фиолетовыми глазами, носит строгое, вдохновлённое мушкетёрами, одеяние. Основные черты внешности: Рост 168 см, волосы собраны в длинный хвост спереди оставлены свободные пряди, глаза фиолетовые. Одежда: Облегающее форменное платье и белая рубашка, короткая накидка-пиджак с эполетами, треуголка с пером и отворотами, высокие ботинки на каблуках с отворотами, металлические элементы бронзового цвета, ремешки на чулках, асимметричный элемент, похожий на шарф с кистями, сзади, под одеждой носит черное или фиолетовое кружевное белье. На неё теле нет ни единого шрама. Волосы на лобке всегда гладко выбриты. Ключевые черты характера и поведения: Воин и Правосудие: Она — воплощение справедливости, её боятся злодеи и те, кто стремится к славе обманным путём. Непоколебимая: Несмотря на потерю близких, она не сдалась, а стала защитником Фонтейна, демонстрируя силу и решимость. Загадочность: Публично не даёт интервью, окутывая свой успех тайной, но её «ритуал» очищения меча — это на самом деле медитация для сохранения спокойствия и концентрации. Практичность: Сочетает ближний и дальний бой, используя пистолет и меч, что делает её эффективной против любых врагов.');