all database switched to repository model. some other fixes and features
This commit is contained in:
@@ -13,8 +13,9 @@ func RegisterAdmin(b *laniakea.Bot) {
|
||||
b.AddPlugins(p.Build())
|
||||
}
|
||||
|
||||
func uploadPhoto(msgContext *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(msgContext.FromID, msgContext.Msg.From.FirstName)
|
||||
func uploadPhoto(msgContext *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewUserRepository(db)
|
||||
user, err := rep.GetOrCreate(msgContext.FromID, msgContext.Msg.From.FirstName)
|
||||
if err != nil {
|
||||
msgContext.Error(err)
|
||||
return
|
||||
|
||||
@@ -30,7 +30,7 @@ func RegisterEconomy(bot *laniakea.Bot) {
|
||||
|
||||
economy = economy.Command(about, "about", "о боте")
|
||||
|
||||
go passiveIncome(bot)
|
||||
//go passiveIncome(bot)
|
||||
|
||||
bot.AddPlugins(economy.Build())
|
||||
}
|
||||
@@ -45,67 +45,68 @@ func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
ctx.Answer(strings.Join(out, "\n"))
|
||||
}
|
||||
|
||||
func passiveIncome(b *laniakea.Bot) {
|
||||
for {
|
||||
time.Sleep(time.Minute * 5)
|
||||
//func passiveIncome(b *laniakea.Bot) {
|
||||
// for {
|
||||
// time.Sleep(time.Minute * 5)
|
||||
//
|
||||
// users, err := psql.GetAllUsers()
|
||||
// if err != nil {
|
||||
// b.Logger().Error(err)
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// for _, user := range users {
|
||||
// if user.Business == nil && user.Maid == nil && user.Miner == nil {
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// moneyIncome := decimal.NewFromInt(0)
|
||||
// expIncome := decimal.NewFromInt(0)
|
||||
// btcIncome := decimal.NewFromInt(0)
|
||||
//
|
||||
// if user.Business != nil {
|
||||
// moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
// if user.Maid != nil {
|
||||
// expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
// if user.Miner != nil {
|
||||
// btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
|
||||
// }
|
||||
//
|
||||
// waifus, err := psql.GetUserWaifus(user.ID)
|
||||
// if err != nil {
|
||||
// b.Logger().Error(err)
|
||||
// continue
|
||||
// }
|
||||
// for _, waifu := range waifus {
|
||||
// moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
|
||||
// expIncome = expIncome.Mul(waifu.ExpBonus)
|
||||
// btcIncome = btcIncome.Mul(waifu.MoneyBonus)
|
||||
// }
|
||||
//
|
||||
// expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
// moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
// btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
//
|
||||
// user.ExpIncome += int(expIncome.IntPart())
|
||||
// user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
|
||||
// user.BtcIncome = user.BtcIncome.Add(btcIncome)
|
||||
// user.IncomeTime = time.Now().Add(-time.Hour * 2)
|
||||
// psql.UpdateUser(user)
|
||||
//
|
||||
// b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
users, err := psql.GetAllUsers()
|
||||
if err != nil {
|
||||
b.Logger().Error(err)
|
||||
continue
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
if user.Business == nil && user.Maid == nil && user.Miner == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
|
||||
continue
|
||||
}
|
||||
|
||||
moneyIncome := decimal.NewFromInt(0)
|
||||
expIncome := decimal.NewFromInt(0)
|
||||
btcIncome := decimal.NewFromInt(0)
|
||||
|
||||
if user.Business != nil {
|
||||
moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
if user.Maid != nil {
|
||||
expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
if user.Miner != nil {
|
||||
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
|
||||
waifus, err := psql.GetUserWaifus(user.ID)
|
||||
if err != nil {
|
||||
b.Logger().Error(err)
|
||||
continue
|
||||
}
|
||||
for _, waifu := range waifus {
|
||||
moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
|
||||
expIncome = expIncome.Mul(waifu.ExpBonus)
|
||||
btcIncome = btcIncome.Mul(waifu.MoneyBonus)
|
||||
}
|
||||
|
||||
expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
|
||||
|
||||
user.ExpIncome += int(expIncome.IntPart())
|
||||
user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
|
||||
user.BtcIncome = user.BtcIncome.Add(btcIncome)
|
||||
user.IncomeTime = time.Now().Add(-time.Hour * 2)
|
||||
psql.UpdateUser(user)
|
||||
|
||||
b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func profile(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
func profile(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewUserRepository(db)
|
||||
user, err := rep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -156,8 +157,9 @@ func profile(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
ctx.Answer(strings.Join(out, "\n"))
|
||||
}
|
||||
|
||||
func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
|
||||
func work(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewUserRepository(db)
|
||||
user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -178,7 +180,8 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
// Count money
|
||||
moneyToAdd := work.MoneyIncome.Mul(user.Group.Multiplier)
|
||||
|
||||
waifus, err := psql.GetUserWaifus(user.ID)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifus, err := waifuRep.GetByUserId(user.ID)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -191,7 +194,7 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user.Balance = user.Balance.Add(moneyToAdd)
|
||||
user.WorkTime = time.Now().Add(-time.Hour * 3)
|
||||
user.Level, _ = psql.CountLevel(user.Exp)
|
||||
_, err = psql.UpdateUser(user)
|
||||
_, err = rep.Update(user)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -203,8 +206,9 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
))
|
||||
}
|
||||
|
||||
func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
|
||||
func collect(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewUserRepository(db)
|
||||
user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -240,7 +244,8 @@ func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
|
||||
}
|
||||
|
||||
waifus, err := psql.GetUserWaifus(user.ID)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifus, err := waifuRep.GetByUserId(user.ID)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -287,7 +292,11 @@ func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user.BTC = user.BTC.Add(btcIncome)
|
||||
user.IncomeTime = time.Now()
|
||||
|
||||
psql.UpdateUser(user)
|
||||
_, err = rep.Update(user)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
out := []string{
|
||||
fmt.Sprintf("Ты собрал %s.", strings.Join(incomeText, ", ")),
|
||||
@@ -306,8 +315,9 @@ func code(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
// user, err := database.Get
|
||||
}
|
||||
|
||||
func vacancies(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
works, err := psql.GetAllWorks()
|
||||
func vacancies(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
worksRep := psql.NewWorkRepository(db)
|
||||
works, err := worksRep.GetAll()
|
||||
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
@@ -331,7 +341,9 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
userRep := psql.NewUserRepository(db)
|
||||
workRep := psql.NewWorkRepository(db)
|
||||
user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -341,7 +353,7 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
work, err := psql.GetWorkById(workId)
|
||||
work, err := workRep.GetById(workId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -351,12 +363,17 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
user.WorkID = workId
|
||||
psql.UpdateUser(user)
|
||||
_, err = userRep.Update(user)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Answer("Ты успешно устроился на работу!")
|
||||
}
|
||||
|
||||
func aboutGroup(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
func aboutGroup(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
userRep := psql.NewUserRepository(db)
|
||||
user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
|
||||
@@ -41,7 +41,8 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rpRepRed := red.NewRPRepository(db)
|
||||
rpRepPsql := psql.NewRPRepository(db)
|
||||
waifuId := rpRepRed.GetSelectedWaifu(ctx.FromID)
|
||||
waifu, err := psql.GetWaifuById(waifuId)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifu, err := waifuRep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
@@ -51,9 +52,9 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
}
|
||||
out := []string{
|
||||
fmt.Sprintf("Привет, %s!", ctx.From.FirstName),
|
||||
fmt.Sprintf("Выбранная вайфу: %s", waifu.Name),
|
||||
fmt.Sprintf("Выбранный пресет: %s", "_TODO_"),
|
||||
fmt.Sprintf("Твое описание персонажа: %s", rpUser.UserPrompt),
|
||||
fmt.Sprintf("*Выбранная вайфу*: %s", waifu.Name),
|
||||
fmt.Sprintf("*Выбранный пресет*: %s", laniakea.EscapeMarkdown(rpUser.Preset.Name)),
|
||||
fmt.Sprintf("*Твое описание персонажа*: %s", rpUser.UserPrompt),
|
||||
}
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
@@ -69,7 +70,8 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
}
|
||||
|
||||
func rpWaifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
waifus, err := psql.GetUserWaifus(ctx.FromID)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifus, err := waifuRep.GetByUserId(ctx.FromID)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -98,7 +100,8 @@ func rpWaifuSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
//rpRepPsql := psql.NewRPRepository(db)
|
||||
waifu, err := psql.GetWaifuById(waifuId)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifu, err := waifuRep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
@@ -304,7 +307,8 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
}
|
||||
waifu, err := psql.GetWaifuById(waifuId)
|
||||
waifuRep := psql.NewWaifuRepository(db)
|
||||
waifu, err := waifuRep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
|
||||
1
plugins/service.go
Normal file
1
plugins/service.go
Normal file
@@ -0,0 +1 @@
|
||||
package plugins
|
||||
@@ -14,33 +14,32 @@ import (
|
||||
func RegisterWaifus(bot *laniakea.Bot) {
|
||||
waifus := laniakea.NewPlugin("Waifus")
|
||||
|
||||
waifus.Command(sellWaifu, "sellwaifu")
|
||||
|
||||
waifus.Command(myWaifu, "mywaifu", "моивайфу")
|
||||
waifus.Command(myWaifu, "waifu.my")
|
||||
|
||||
waifus.Command(waifuList, "wlist", "waifulist", "влист", "вайфулист")
|
||||
|
||||
waifus.Payload(myWaifu, "waifu.my")
|
||||
waifus.Payload(waifuList, "waifu.list")
|
||||
|
||||
waifus.Command(waifuInfo, "winfo", "waifuinfo", "винфо")
|
||||
waifus.Payload(waifuSell, "waifu.sell")
|
||||
waifus.Payload(buyWaifu, "waifu.buy")
|
||||
waifus.Payload(waifuInfo, "waifu.info")
|
||||
|
||||
waifus.Command(waifuSearch, "wsearch", "waifusearch", "впоиск")
|
||||
waifus.Payload(waifuSearch, "waifu.search")
|
||||
|
||||
waifus.Payload(waifuNotImplemented, "waifu.confirm_buy")
|
||||
waifus.Payload(waifuNotImplemented, "waifu.confirm_sell")
|
||||
|
||||
bot.AddPlugins(waifus.Build())
|
||||
}
|
||||
|
||||
func myWaifu(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetUser(ctx.FromID)
|
||||
func myWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
userRep := psql.NewUserRepository(db)
|
||||
user, err := userRep.GetOrCreate(ctx.FromID, ctx.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
waifus, err := psql.GetUserWaifus(user.ID)
|
||||
rep := psql.NewWaifuRepository(db)
|
||||
waifus, err := rep.GetByUserId(user.ID)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -59,6 +58,8 @@ func myWaifu(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButton("Искать", "waifu.search")
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButton("Все вайфу", "waifu.list")
|
||||
if ctx.CallbackMsgId > 0 {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
@@ -66,19 +67,16 @@ func myWaifu(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
}
|
||||
}
|
||||
|
||||
func sellWaifu(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
|
||||
}
|
||||
|
||||
func waifuList(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
waifus, err := psql.GetAllWaifus()
|
||||
func waifuList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
rep := psql.NewWaifuRepository(db)
|
||||
waifus, err := rep.GetAll()
|
||||
if err != nil {
|
||||
ctx.Answer(err.Error())
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
out := make([]string, len(waifus))
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
for i, w := range waifus {
|
||||
var owner string
|
||||
if w.Owner == nil {
|
||||
@@ -89,15 +87,65 @@ func waifuList(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
out[i] = fmt.Sprintf("*%s* из \"*%s*\" (%d☆, ID: %d) Владелец: *%s*", w.Name, w.Fandom, w.Rarity, w.ID, owner)
|
||||
kb.AddCallbackButton(w.Name, "waifu.info", w.ID)
|
||||
}
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButton("Мои вайфу", "waifu.my")
|
||||
|
||||
if ctx.CallbackMsgId > 0 {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
if len(ctx.Msg.Photo) > 0 {
|
||||
ctx.CallbackDelete()
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
} else {
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
}
|
||||
|
||||
func waifuInfo(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
func waifuSell(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
const CantSellWaifu = "Не удалось продать вайфу"
|
||||
|
||||
waifuId, err := strconv.Atoi(ctx.Args[0])
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
rep := psql.NewWaifuRepository(db)
|
||||
waifu, err := rep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
// Убедились что ид владельца совпадает с отправителем
|
||||
if waifu.Owner == nil {
|
||||
ctx.Answer(CantSellWaifu)
|
||||
return
|
||||
}
|
||||
if waifu.Owner.ID != ctx.FromID {
|
||||
ctx.Answer(CantSellWaifu)
|
||||
return
|
||||
}
|
||||
|
||||
out := []string{
|
||||
fmt.Sprintf("Ты собираешься продать %s на рынок.", waifu.Name),
|
||||
"Это действие нельзя будет отменить!",
|
||||
fmt.Sprintf("Цена продажи составляет %s", utils.DecimalComma(&waifu.MarketPrice)),
|
||||
}
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
kb.AddCallbackButton("Продать", "waifu.confirm_sell", waifu.ID)
|
||||
kb.AddCallbackButton("Отмена", "waifu.info", waifu.ID)
|
||||
ctx.CallbackDelete()
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
|
||||
func buyWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
|
||||
}
|
||||
|
||||
func waifuInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
if len(ctx.Args) != 1 {
|
||||
ctx.Answer("Не указан ID вайфу!")
|
||||
return
|
||||
@@ -109,7 +157,8 @@ func waifuInfo(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
|
||||
waifu, err := psql.GetWaifuById(waifuId)
|
||||
rep := psql.NewWaifuRepository(db)
|
||||
waifu, err := rep.GetById(waifuId)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -122,21 +171,28 @@ func waifuInfo(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
fmt.Sprintf("Бонус к опыту: x%.2f", waifu.ExpBonus.InexactFloat64()),
|
||||
fmt.Sprintf("Рыночная стоимость: %s¥", utils.DecimalComma(&waifu.MarketPrice)),
|
||||
}
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
if !waifu.OwnerID.Valid {
|
||||
kb.AddCallbackButton("Купить", "waifu.confirm_buy")
|
||||
kb.AddCallbackButton("Купить", "waifu.buy", waifu.ID)
|
||||
}
|
||||
if waifu.OwnerID.Valid && waifu.OwnerID.Int64 == int64(ctx.FromID) {
|
||||
kb.AddCallbackButton("Продать", "waifu.sell", waifu.ID)
|
||||
}
|
||||
|
||||
kb.AddCallbackButton("Назад", "waifu.list")
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButton("Все вайфу", "waifu.list")
|
||||
kb.AddCallbackButton("Мои вайфу", "waifu.my")
|
||||
if len(waifu.Image) > 0 {
|
||||
ctx.AnswerPhoto(waifu.Image, strings.Join(out, "\n"))
|
||||
ctx.CallbackDelete()
|
||||
ctx.AnswerPhotoKeyboard(waifu.Image, strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
}
|
||||
|
||||
func waifuSearch(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
func waifuSearch(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||
userRep := psql.NewUserRepository(db)
|
||||
user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -148,7 +204,8 @@ func waifuSearch(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
return
|
||||
}
|
||||
|
||||
count, err := psql.GetFreeWaifusCount()
|
||||
rep := psql.NewWaifuRepository(db)
|
||||
count, err := rep.GetFreeCount()
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
@@ -172,7 +229,7 @@ func waifuSearch(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
|
||||
rarity = 4
|
||||
}
|
||||
|
||||
freeWaifus, err = psql.GetFreeWaifusWithRarity(rarity)
|
||||
freeWaifus, err = rep.GetFreeByRarity(rarity)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user