"Get that shit outta my master."

This commit is contained in:
2026-03-16 10:43:22 +03:00
parent d4afebd20f
commit 9a34d05572
8 changed files with 53 additions and 55 deletions

4
go.mod
View File

@@ -4,7 +4,7 @@ go 1.26.1
require ( require (
git.nix13.pw/scuroneko/extypes v1.2.1 git.nix13.pw/scuroneko/extypes v1.2.1
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.20 git.nix13.pw/scuroneko/laniakea v1.0.0-beta.21
git.nix13.pw/scuroneko/slog v1.0.2 git.nix13.pw/scuroneko/slog v1.0.2
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0
github.com/joho/godotenv v1.5.1 github.com/joho/godotenv v1.5.1
@@ -15,7 +15,7 @@ require (
go.mongodb.org/mongo-driver/v2 v2.5.0 go.mongodb.org/mongo-driver/v2 v2.5.0
) )
//replace git.nix13.pw/scuroneko/laniakea v1.0.0-beta.20 => ./laniakea //replace git.nix13.pw/scuroneko/laniakea v1.0.0-beta.21 => ./laniakea
//replace git.nix13.pw/scuroneko/extypes v1.2.1 => ../go-extypes //replace git.nix13.pw/scuroneko/extypes v1.2.1 => ../go-extypes
//replace git.nix13.pw/scuroneko/slog v1.0.2 => ../slog //replace git.nix13.pw/scuroneko/slog v1.0.2 => ../slog

4
go.sum
View File

@@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=
filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
git.nix13.pw/scuroneko/extypes v1.2.1 h1:IYrOjnWKL2EAuJYtYNa+luB1vBe6paE8VY/YD+5/RpQ= git.nix13.pw/scuroneko/extypes v1.2.1 h1:IYrOjnWKL2EAuJYtYNa+luB1vBe6paE8VY/YD+5/RpQ=
git.nix13.pw/scuroneko/extypes v1.2.1/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw= git.nix13.pw/scuroneko/extypes v1.2.1/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw=
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.20 h1:UrKFl0Nk73NmUODnUumxtiBgAByXaOqRQlQT55AK/dk= git.nix13.pw/scuroneko/laniakea v1.0.0-beta.21 h1:bit6fm6xtwoDh3BTjKduzyg++4BLiiQ392NmxnSr5lI=
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.20/go.mod h1:M8jwm195hzAl9bj9Bkl95WfHmWvuBX6micsdtOs/gmE= git.nix13.pw/scuroneko/laniakea v1.0.0-beta.21/go.mod h1:M8jwm195hzAl9bj9Bkl95WfHmWvuBX6micsdtOs/gmE=
git.nix13.pw/scuroneko/slog v1.0.2 h1:vZyUROygxC2d5FJHUQM/30xFEHY1JT/aweDZXA4rm2g= git.nix13.pw/scuroneko/slog v1.0.2 h1:vZyUROygxC2d5FJHUQM/30xFEHY1JT/aweDZXA4rm2g=
git.nix13.pw/scuroneko/slog v1.0.2/go.mod h1:3Qm2wzkR5KjwOponMfG7TcGSDjmYaFqRAmLvSPTuWJI= git.nix13.pw/scuroneko/slog v1.0.2/go.mod h1:3Qm2wzkR5KjwOponMfG7TcGSDjmYaFqRAmLvSPTuWJI=
github.com/alitto/pond/v2 v2.7.0 h1:c76L+yN916m/DRXjGCeUBHHu92uWnh/g1bwVk4zyyXg= github.com/alitto/pond/v2 v2.7.0 h1:c76L+yN916m/DRXjGCeUBHHu92uWnh/g1bwVk4zyyXg=

View File

@@ -38,7 +38,7 @@ func main() {
plugins.RegisterAi(), plugins.RegisterAi(),
plugins.RegisterFun(), plugins.RegisterFun(),
plugins.RegisterProxy(), plugins.RegisterProxy(),
) ).SetPayloadType(laniakea.BotPayloadJson)
if err := bot.AutoGenerateCommands(); err != nil { if err := bot.AutoGenerateCommands(); err != nil {
log.Println(err) log.Println(err)

View File

@@ -27,7 +27,7 @@ func getH2Link(ctx *laniakea.MsgContext, db *database.Context) {
func getProxy(ctx *laniakea.MsgContext, _ *database.Context) { func getProxy(ctx *laniakea.MsgContext, _ *database.Context) {
ruProxy := "tg://proxy?port=3128&secret=7qaZyfQN-IQ7ZMwrR_zWnHBvem9uLnJ1&server=185.231.245.25" ruProxy := "tg://proxy?port=3128&secret=7qaZyfQN-IQ7ZMwrR_zWnHBvem9uLnJ1&server=185.231.245.25"
fiProxy := "tg://proxy?port=3128&secret=7vmNtw_233xvIRFvImm2PLtvem9uLnJ1&server=46.243.6.125" fiProxy := "tg://proxy?port=3128&secret=7vmNtw_233xvIRFvImm2PLtvem9uLnJ1&server=46.243.6.125"
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddUrlButtonStyle("🇷🇺Russia", laniakea.ButtonStylePrimary, ruProxy) kb.AddUrlButtonStyle("🇷🇺Russia", laniakea.ButtonStylePrimary, ruProxy)
kb.AddUrlButtonStyle("🇫🇮Finland", laniakea.ButtonStylePrimary, fiProxy) kb.AddUrlButtonStyle("🇫🇮Finland", laniakea.ButtonStylePrimary, fiProxy)
ctx.Keyboard("Доступные прокси", kb) ctx.Keyboard("Доступные прокси", kb)

View File

@@ -73,7 +73,7 @@ func rpInfo(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
if count == 0 { if count == 0 {
kb := laniakea.NewInlineKeyboard(1).AddCallbackButton("Закрыть", "general.close") kb := laniakea.NewInlineKeyboardJson(1).AddCallbackButton("Закрыть", "general.close")
ctx.Keyboard("Для доступа к этой команде нужно иметь хотя бы одну вайфу", kb) ctx.Keyboard("Для доступа к этой команде нужно иметь хотя бы одну вайфу", kb)
return return
} }
@@ -121,7 +121,7 @@ func rpInfo(ctx *laniakea.MsgContext, db *database.Context) {
"Что бы установить описание персонажа, используй `/rpuserpset \"описание персонажа\"` без кавычек.", "Что бы установить описание персонажа, используй `/rpuserpset \"описание персонажа\"` без кавычек.",
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
kb.AddCallbackButton("Статистика чата", "rp.chat_stat") kb.AddCallbackButton("Статистика чата", "rp.chat_stat")
kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list") kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list")
kb.AddCallbackButton("Сменить пресет", "rp.preset_list") kb.AddCallbackButton("Сменить пресет", "rp.preset_list")
@@ -165,14 +165,14 @@ func rpWaifuList(ctx *laniakea.MsgContext, db *database.Context) {
}) })
out := make([]string, len(waifus)) out := make([]string, len(waifus))
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
for i, waifu := range waifus { for i, waifu := range waifus {
owner := "нет" owner := "нет"
if waifu.OwnerID.Valid && waifu.Owner != nil { if waifu.OwnerID.Valid && waifu.Owner != nil {
owner = waifu.Owner.Name owner = waifu.Owner.Name
} }
out[i] = fmt.Sprintf( out[i] = fmt.Sprintf(
"*%s* %d☆ из \"%s\" (владелец: %s)", "*%s* %d☆ из \"%s\" \\(владелец: %s\\)",
waifu.Name, waifu.Rarity, waifu.Fandom, owner, waifu.Name, waifu.Rarity, waifu.Fandom, owner,
) )
kb.AddCallbackButton(waifu.Name, "rp.waifu_set", waifu.ID) kb.AddCallbackButton(waifu.Name, "rp.waifu_set", waifu.ID)
@@ -201,7 +201,7 @@ func rpWaifuSet(ctx *laniakea.MsgContext, db *database.Context) {
ctx.Error(err) ctx.Error(err)
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
ctx.EditCallbackfMarkdown("Была выбрана вайфу *%s*", kb, waifu.Name) ctx.EditCallbackfMarkdown("Была выбрана вайфу *%s*", kb, waifu.Name)
ctx.AnswerCbQuery() ctx.AnswerCbQuery()
@@ -215,11 +215,11 @@ func rpPresetsList(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
out := make([]string, len(presets)) out := make([]string, len(presets))
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
for i, preset := range presets { for i, preset := range presets {
out[i] = fmt.Sprintf( out[i] = fmt.Sprintf(
"*%s* \\- %s", "*%s* \\- %s",
laniakea.EscapeMarkdownV2(preset.Name), preset.Description, laniakea.EscapeMarkdownV2(preset.Name), laniakea.EscapePunctuation(preset.Description),
) )
kb.AddCallbackButton(preset.Name, "rp.preset_set", preset.ID) kb.AddCallbackButton(preset.Name, "rp.preset_set", preset.ID)
} }
@@ -249,7 +249,7 @@ func rpPresetSet(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStylePrimary, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStylePrimary, "rp.info")
ctx.EditCallbackf("Был выбран пресет %s", kb, preset.Name) ctx.EditCallbackf("Был выбран пресет %s", kb, preset.Name)
ctx.AnswerCbQuery() ctx.AnswerCbQuery()
@@ -264,7 +264,7 @@ func rpModelList(ctx *laniakea.MsgContext, db *database.Context) {
} }
out := make([]string, len(models)) out := make([]string, len(models))
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
for i, model := range models { for i, model := range models {
out[i] = fmt.Sprintf("*%s* \\- размер контекста _%dK_", laniakea.EscapeMarkdownV2(model.Name), model.ContextSize) out[i] = fmt.Sprintf("*%s* \\- размер контекста _%dK_", laniakea.EscapeMarkdownV2(model.Name), model.ContextSize)
kb.AddCallbackButton(model.Name, "rp.model_set", model.ID) kb.AddCallbackButton(model.Name, "rp.model_set", model.ID)
@@ -293,7 +293,7 @@ func rpModelSet(ctx *laniakea.MsgContext, db *database.Context) {
ctx.Error(err) ctx.Error(err)
return return
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
ctx.EditCallback(fmt.Sprintf("Была установлена модель %s", model.Name), kb) ctx.EditCallback(fmt.Sprintf("Была установлена модель %s", model.Name), kb)
ctx.AnswerCbQuery() ctx.AnswerCbQuery()
@@ -307,12 +307,12 @@ func rpScenarioList(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
out := make([]string, len(scenarios)) out := make([]string, len(scenarios))
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
for i, scenario := range scenarios { for i, scenario := range scenarios {
out[i] = fmt.Sprintf("*%s* \\- %s\n", scenario.Name, scenario.Description) out[i] = fmt.Sprintf("*%s* \\- %s\n", scenario.Name, laniakea.EscapePunctuation(scenario.Description))
} }
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info")
ctx.EditCallbackMarkdown("Список сценариев\n"+strings.Join(out, "\n"), kb) ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
ctx.AnswerCbQuery() ctx.AnswerCbQuery()
} }
func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) { func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) {
@@ -325,9 +325,9 @@ func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) {
out := make([]string, len(settings)) out := make([]string, len(settings))
for i, setting := range settings { for i, setting := range settings {
out[i] = fmt.Sprintf("*%s* \\- %s\n", setting.Name, setting.Description) out[i] = fmt.Sprintf("*%s* \\- %s\n", setting.Name, laniakea.EscapePunctuation(setting.Description))
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb) ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
ctx.AnswerCbQuery() ctx.AnswerCbQuery()
@@ -346,7 +346,7 @@ func chatStat(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("Сжать чат", laniakea.ButtonStyleSuccess, "rp.compress_chat") kb.AddCallbackButtonStyle("Сжать чат", laniakea.ButtonStyleSuccess, "rp.compress_chat")
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info")
out := []string{ out := []string{
@@ -362,7 +362,7 @@ func chatStat(ctx *laniakea.MsgContext, db *database.Context) {
if scenario.ID == 0 { if scenario.ID == 0 {
continue continue
} }
scenarioNames[i] = fmt.Sprintf("%s (ID: %d)", scenario.Name, scenario.ID) scenarioNames[i] = fmt.Sprintf("%s \\(ID: %d\\)", scenario.Name, scenario.ID)
} }
out = append(out, fmt.Sprintf("*Выбранные сценарии*: %s", strings.Join(scenarioNames, ", "))) out = append(out, fmt.Sprintf("*Выбранные сценарии*: %s", strings.Join(scenarioNames, ", ")))
} }
@@ -386,9 +386,9 @@ func newChatStage1(ctx *laniakea.MsgContext, db *database.Context) {
out := []string{ out := []string{
"Выбери сеттинг для чата", "Выбери сеттинг для чата",
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
for _, setting := range settings { for _, setting := range settings {
out = append(out, fmt.Sprintf("*%s* \\- %s", setting.Name, setting.Description)) out = append(out, fmt.Sprintf("*%s* \\- %s", setting.Name, laniakea.EscapePunctuation(setting.Description)))
kb.AddCallbackButton(setting.Name, "rp.new_chat_s2", setting.ID) kb.AddCallbackButton(setting.Name, "rp.new_chat_s2", setting.ID)
} }
kb.AddCallbackButton("Без сеттинга", "rp.new_chat_s2", 0) kb.AddCallbackButton("Без сеттинга", "rp.new_chat_s2", 0)
@@ -421,10 +421,8 @@ func newChatStage2(ctx *laniakea.MsgContext, db *database.Context) {
selectedScenariosIds = utils.Map(ctx.Args[1:], utils.StringToInt) selectedScenariosIds = utils.Map(ctx.Args[1:], utils.StringToInt)
} }
out := []string{ var out []string
"Выбери сценарий:", kb := laniakea.NewInlineKeyboardJson(2)
}
kb := laniakea.NewInlineKeyboard(2)
var scenariosIds extypes.Slice[int] var scenariosIds extypes.Slice[int]
for _, scenario := range scenarios { for _, scenario := range scenarios {
isSelected := selectedScenariosIds.Index(scenario.ID) >= 0 isSelected := selectedScenariosIds.Index(scenario.ID) >= 0
@@ -434,7 +432,7 @@ func newChatStage2(ctx *laniakea.MsgContext, db *database.Context) {
prefix = "✅" prefix = "✅"
style = laniakea.ButtonStyleSuccess style = laniakea.ButtonStyleSuccess
} }
out = append(out, fmt.Sprintf("%s*%s* - %s", prefix, scenario.Name, scenario.Description)) out = append(out, fmt.Sprintf("%s*%s* \\- %s", prefix, scenario.Name, laniakea.EscapePunctuation(scenario.Description)))
if isSelected { if isSelected {
scenariosIds = selectedScenariosIds.Remove(scenario.ID) scenariosIds = selectedScenariosIds.Remove(scenario.ID)
} else { } else {
@@ -452,7 +450,7 @@ func newChatStage2(ctx *laniakea.MsgContext, db *database.Context) {
kb.AddCallbackButtonStyle("Создать", laniakea.ButtonStyleSuccess, "rp.new_chat", utils.AppendToInt(settingId, selectedScenariosIds)...) kb.AddCallbackButtonStyle("Создать", laniakea.ButtonStyleSuccess, "rp.new_chat", utils.AppendToInt(settingId, selectedScenariosIds)...)
kb.AddLine() kb.AddLine()
kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.new_chat_s1") kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.new_chat_s1")
ctx.EditCallbackMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb) ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
//setting, err := rep.GetSetting(settingId) //setting, err := rep.GetSetting(settingId)
//if err != nil { //if err != nil {
@@ -534,7 +532,7 @@ func newChat(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
kb.AddCallbackButtonStyle("Закрыть", laniakea.ButtonStyleDanger, "general.close") kb.AddCallbackButtonStyle("Закрыть", laniakea.ButtonStyleDanger, "general.close")
ctx.EditCallbackMarkdown("Был создан новый чат\\. Для общения используй `/г промпт`", kb) ctx.EditCallbackMarkdown("Был создан новый чат\\. Для общения используй `/г промпт`", kb)
@@ -653,7 +651,7 @@ func generate(ctx *laniakea.MsgContext, db *database.Context) {
} }
userMessage := strings.TrimSpace(strings.Join(ctx.Args, " ")) userMessage := strings.TrimSpace(strings.Join(ctx.Args, " "))
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("Отменить", laniakea.ButtonStyleDanger, "rp.cancel") kb.AddCallbackButtonStyle("Отменить", laniakea.ButtonStyleDanger, "rp.cancel")
m := ctx.Keyboard("Генерация запущена...", kb) m := ctx.Keyboard("Генерация запущена...", kb)
ctx.SendAction(tgapi.ChatActionTyping) ctx.SendAction(tgapi.ChatActionTyping)
@@ -768,7 +766,7 @@ func generate(ctx *laniakea.MsgContext, db *database.Context) {
ctx.Error(err) ctx.Error(err)
} }
kb = laniakea.NewInlineKeyboard(1) kb = laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("🔄 Перегенерировать 🔄", laniakea.ButtonStyleSuccess, "rp.regenerate", counter+2) kb.AddCallbackButtonStyle("🔄 Перегенерировать 🔄", laniakea.ButtonStyleSuccess, "rp.regenerate", counter+2)
ctx.Keyboard(answerContent, kb) ctx.Keyboard(answerContent, kb)
@@ -859,7 +857,7 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("🔄 Перегенерировать 🔄", laniakea.ButtonStyleSuccess, "rp.regenerate", count) kb.AddCallbackButtonStyle("🔄 Перегенерировать 🔄", laniakea.ButtonStyleSuccess, "rp.regenerate", count)
ctx.EditCallback(res.Choices[0].Message.Content, kb) ctx.EditCallback(res.Choices[0].Message.Content, kb)
} }
@@ -868,7 +866,7 @@ func compress(ctx *laniakea.MsgContext, db *database.Context) {
ctx.AnswerCbQueryText("Запущено сжатие чата…") ctx.AnswerCbQueryText("Запущено сжатие чата…")
m := ctx.Answer("Запущено сжатие чата…") m := ctx.Answer("Запущено сжатие чата…")
_compress(ctx, db) _compress(ctx, db)
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButton("Назад", "rp.chat_stat") kb.AddCallbackButton("Назад", "rp.chat_stat")
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info")
m.Delete() m.Delete()
@@ -982,7 +980,7 @@ var tokenMethodCount = []int{
} }
func compressSettingStage1(ctx *laniakea.MsgContext, _ *database.Context) { func compressSettingStage1(ctx *laniakea.MsgContext, _ *database.Context) {
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
kb.AddCallbackButton("По сообщениям", "rp.compress_setting_s2", "messages") kb.AddCallbackButton("По сообщениям", "rp.compress_setting_s2", "messages")
kb.AddCallbackButton("По токенам", "rp.compress_setting_s2", "tokens") kb.AddCallbackButton("По токенам", "rp.compress_setting_s2", "tokens")
kb.AddCallbackButton("Отключить", "rp.compress_setting", "none", 0) kb.AddCallbackButton("Отключить", "rp.compress_setting", "none", 0)
@@ -1005,7 +1003,7 @@ func compressSettingStage2(ctx *laniakea.MsgContext, _ *database.Context) {
"При выборе маленьких значений, чат будет сжиматься чаще, что замедляет вывод сообщений.", "При выборе маленьких значений, чат будет сжиматься чаще, что замедляет вывод сообщений.",
"При выборе слишком больших значений, некоторые детали могут теряться.", "При выборе слишком больших значений, некоторые детали могут теряться.",
} }
kb := laniakea.NewInlineKeyboard(3) kb := laniakea.NewInlineKeyboardJson(3)
switch method { switch method {
case "messages": case "messages":
out = append(out, "Выбери количество сообщений, после которых будет происходить сжатие чата") out = append(out, "Выбери количество сообщений, после которых будет происходить сжатие чата")
@@ -1045,7 +1043,7 @@ func compressSetting(ctx *laniakea.MsgContext, db *database.Context) {
if err != nil { if err != nil {
ctx.Error(err) ctx.Error(err)
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStylePrimary, "rp.info") kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStylePrimary, "rp.info")
ctx.EditCallback("Настройки сжатия были обновлены", kb) ctx.EditCallback("Настройки сжатия были обновлены", kb)
} }

View File

@@ -34,7 +34,7 @@ func about(ctx *laniakea.MsgContext, _ *database.Context) {
fmt.Sprintf("*Git хеш*: %s", utils.GitCommit), fmt.Sprintf("*Git хеш*: %s", utils.GitCommit),
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
kb.AddUrlButtonStyle("Канал", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_news") kb.AddUrlButtonStyle("Канал", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_news")
kb.AddUrlButtonStyle("Чат", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_chat") kb.AddUrlButtonStyle("Чат", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_chat")
ctx.KeyboardMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb) ctx.KeyboardMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)

View File

@@ -51,7 +51,7 @@ func myWaifu(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
out := []string{ out := []string{
fmt.Sprintf("%s, %s!", user.Greeting, user.Name), fmt.Sprintf("%s, %s!", user.Greeting, user.Name),
"Список твоих вайфу:", "Список твоих вайфу:",
@@ -82,7 +82,7 @@ func waifuList(ctx *laniakea.MsgContext, db *database.Context) {
} }
out := make([]string, len(waifus)) out := make([]string, len(waifus))
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
for i, w := range waifus { for i, w := range waifus {
var owner string var owner string
if w.Owner == nil { if w.Owner == nil {
@@ -140,7 +140,7 @@ func waifuSell(ctx *laniakea.MsgContext, db *database.Context) {
fmt.Sprintf("Цена продажи составляет %s", utils.DecimalComma(&waifu.MarketPrice)), fmt.Sprintf("Цена продажи составляет %s", utils.DecimalComma(&waifu.MarketPrice)),
} }
kb := laniakea.NewInlineKeyboard(1) kb := laniakea.NewInlineKeyboardJson(1)
kb.AddCallbackButton("Продать", "waifu.confirm_sell", waifu.ID) kb.AddCallbackButton("Продать", "waifu.confirm_sell", waifu.ID)
kb.AddCallbackButton("Отмена", "waifu.info", waifu.ID) kb.AddCallbackButton("Отмена", "waifu.info", waifu.ID)
ctx.CallbackDelete() ctx.CallbackDelete()
@@ -177,7 +177,7 @@ func waifuInfo(ctx *laniakea.MsgContext, db *database.Context) {
laniakea.EscapePunctuation(fmt.Sprintf("Бонус к опыту: x%.2f", waifu.ExpBonus.InexactFloat64())), laniakea.EscapePunctuation(fmt.Sprintf("Бонус к опыту: x%.2f", waifu.ExpBonus.InexactFloat64())),
fmt.Sprintf("Рыночная стоимость: %s¥", utils.DecimalComma(&waifu.MarketPrice)), fmt.Sprintf("Рыночная стоимость: %s¥", utils.DecimalComma(&waifu.MarketPrice)),
} }
kb := laniakea.NewInlineKeyboard(2) kb := laniakea.NewInlineKeyboardJson(2)
if !waifu.OwnerID.Valid { if !waifu.OwnerID.Valid {
kb.AddCallbackButton("Купить", "waifu.buy", waifu.ID) kb.AddCallbackButton("Купить", "waifu.buy", waifu.ID)
} }
@@ -209,7 +209,7 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
return return
} }
kb := laniakea.NewInlineKeyboard(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list") kb := laniakea.NewInlineKeyboardJson(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list")
if time.Now().Before(user.WaifuSearchTime.Add(time.Hour * 4)) { if time.Now().Before(user.WaifuSearchTime.Add(time.Hour * 4)) {
ctx.EditCallback("Вайфу можно искать раз в 4 часа", kb) ctx.EditCallback("Вайфу можно искать раз в 4 часа", kb)
return return
@@ -269,6 +269,6 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
} }
func waifuNotImplemented(ctx *laniakea.MsgContext, _ *database.Context) { func waifuNotImplemented(ctx *laniakea.MsgContext, _ *database.Context) {
kb := laniakea.NewInlineKeyboard(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list") kb := laniakea.NewInlineKeyboardJson(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list")
ctx.EditCallback("Данная функция ещё не реализована", kb) ctx.EditCallback("Данная функция ещё не реализована", kb)
} }

View File

@@ -12,14 +12,14 @@ CREATE TABLE groups (
); );
CREATE TABLE users ( CREATE TABLE users (
id int8 NOT NULL PRIMARY KEY, id INT8 NOT NULL PRIMARY KEY,
balance decimal(20,0) NOT NULL DEFAULT 0, balance DECIMAL(20,0) NOT NULL DEFAULT 0,
name text NOT NULL, name TEXT NOT NULL,
group_id int NOT NULL DEFAULT 1 REFERENCES groups(id), group_id INT NOT NULL DEFAULT 1 REFERENCES groups(id),
level int DEFAULT 1, level INT DEFAULT 1,
exp int DEFAULT 0, exp DECIMAL(20, 0) DEFAULT 0,
work_id int NOT NULL DEFAULT 1 REFERENCES works(id), work_id INT NOT NULL DEFAULT 1 REFERENCES works(id),
work_time timestamp DEFAULT now(), work_time TIMESTAMP DEFAULT now(),
auto_id int DEFAULT NULL, auto_id int DEFAULT NULL,
business_id int DEFAULT NULL, business_id int DEFAULT NULL,
@@ -35,7 +35,7 @@ CREATE TABLE users (
fraction_id int DEFAULT NULL, fraction_id int DEFAULT NULL,
money_income decimal(20, 0) DEFAULT 0, money_income decimal(20, 0) DEFAULT 0,
exp_income int DEFAULT 0, exp_income decimal(20, 0) DEFAULT 0,
btc_income decimal(16, 6) DEFAULT 0, btc_income decimal(16, 6) DEFAULT 0,
waifu_search_time timestamp DEFAULT now() waifu_search_time timestamp DEFAULT now()