many changes
This commit is contained in:
@@ -28,12 +28,7 @@ services:
|
||||
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
|
||||
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS}
|
||||
MONGO_INITDB_DATABASE: ${MONGO_NAME}
|
||||
healthcheck:
|
||||
test: [ "CMD", "mongosh", "--quiet", "admin", "--eval", "quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)" ]
|
||||
interval: 10s
|
||||
retries: 5
|
||||
timeout: 10s
|
||||
start_period: 10s
|
||||
GLIBC_TUNABLES: glibc.cpu.hwcaps=-SHSTK
|
||||
volumes:
|
||||
- ./scripts/mongo:/docker-entrypoint-initdb.d
|
||||
- mongo_data:/data/db
|
||||
@@ -43,12 +38,6 @@ services:
|
||||
- bot
|
||||
ports:
|
||||
- "6379:6379"
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "--raw", "ping"]
|
||||
interval: 5s
|
||||
retries: 5
|
||||
timeout: 10s
|
||||
start_period: 2s
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
|
||||
11
go.mod
11
go.mod
@@ -4,7 +4,7 @@ go 1.26.1
|
||||
|
||||
require (
|
||||
git.nix13.pw/scuroneko/extypes v1.2.1
|
||||
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.11
|
||||
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.16
|
||||
git.nix13.pw/scuroneko/slog v1.0.2
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/joho/godotenv v1.5.1
|
||||
@@ -15,13 +15,12 @@ require (
|
||||
go.mongodb.org/mongo-driver/v2 v2.5.0
|
||||
)
|
||||
|
||||
replace git.nix13.pw/scuroneko/laniakea v1.0.0-beta.11 => ./laniakea
|
||||
|
||||
//replace git.nix13.pw/scuroneko/laniakea v1.0.0-beta.16 => ./laniakea
|
||||
//replace git.nix13.pw/scuroneko/extypes v1.2.1 => ../go-extypes
|
||||
//replace git.nix13.pw/scuroneko/slog v1.0.2 => ../slog
|
||||
|
||||
require (
|
||||
github.com/alitto/pond/v2 v2.6.2 // indirect
|
||||
github.com/alitto/pond/v2 v2.7.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/fatih/color v1.18.0 // indirect
|
||||
@@ -37,7 +36,7 @@ require (
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
golang.org/x/crypto v0.48.0 // indirect
|
||||
golang.org/x/sync v0.19.0 // indirect
|
||||
golang.org/x/sys v0.41.0 // indirect
|
||||
golang.org/x/sys v0.42.0 // indirect
|
||||
golang.org/x/text v0.34.0 // indirect
|
||||
golang.org/x/time v0.14.0 // indirect
|
||||
golang.org/x/time v0.15.0 // indirect
|
||||
)
|
||||
|
||||
14
go.sum
14
go.sum
@@ -2,10 +2,12 @@ filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=
|
||||
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/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw=
|
||||
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.16 h1:QL3YGHL11p5For5Cm0I6riHsndBxT5vTHyqH3wtO0Xo=
|
||||
git.nix13.pw/scuroneko/laniakea v1.0.0-beta.16/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/go.mod h1:3Qm2wzkR5KjwOponMfG7TcGSDjmYaFqRAmLvSPTuWJI=
|
||||
github.com/alitto/pond/v2 v2.6.2 h1:Sphe40g0ILeM1pA2c2K+Th0DGU+pt0A/Kprr+WB24Pw=
|
||||
github.com/alitto/pond/v2 v2.6.2/go.mod h1:xkjYEgQ05RSpWdfSd1nM3OVv7TBhLdy7rMp3+2Nq+yE=
|
||||
github.com/alitto/pond/v2 v2.7.0 h1:c76L+yN916m/DRXjGCeUBHHu92uWnh/g1bwVk4zyyXg=
|
||||
github.com/alitto/pond/v2 v2.7.0/go.mod h1:xkjYEgQ05RSpWdfSd1nM3OVv7TBhLdy7rMp3+2Nq+yE=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
|
||||
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
|
||||
@@ -85,8 +87,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
|
||||
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
|
||||
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -95,8 +97,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
|
||||
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
|
||||
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
||||
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
|
||||
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
|
||||
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
|
||||
25
main.go
25
main.go
@@ -12,7 +12,6 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Println(laniakea.EscapeMarkdownV2("Загрузка..."))
|
||||
_ = godotenv.Load(".env", ".env.production", ".env.ai")
|
||||
|
||||
database.ConnectPostgres()
|
||||
@@ -20,22 +19,16 @@ func main() {
|
||||
database.ConnectRedis()
|
||||
|
||||
bot := laniakea.NewBot[database.Context](laniakea.LoadOptsFromEnv())
|
||||
defer func(bot *laniakea.Bot[database.Context]) {
|
||||
err := bot.Close()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}(bot)
|
||||
bot = bot.ErrorTemplate("Во время выполнения команды произошла ошибка!\nСообщите об этом разработчику!\n\n%s")
|
||||
bot = bot.DatabaseContext(&database.Context{
|
||||
defer func() {
|
||||
_ = bot.Close()
|
||||
}()
|
||||
bot = bot.ErrorTemplate(
|
||||
"Во время выполнения команды произошла ошибка!\nСообщите об этом разработчику!\n\n%s",
|
||||
).DatabaseContext(&database.Context{
|
||||
Postgres: database.PostgresDatabase,
|
||||
Mongo: database.MongoClient,
|
||||
Redis: database.RedisClient,
|
||||
})
|
||||
bot.AddDatabaseLoggerWriter(plugins.DatabaseLogger)
|
||||
bot.AddMiddleware(plugins.InitLogMiddleware())
|
||||
|
||||
bot.AddPlugins(
|
||||
}).AddDatabaseLoggerWriter(plugins.DatabaseLogger).AddMiddleware(plugins.InitLogMiddleware()).AddPlugins(
|
||||
plugins.RegisterService(),
|
||||
plugins.RegisterAdmin(),
|
||||
plugins.RegisterLogs(),
|
||||
@@ -47,10 +40,8 @@ func main() {
|
||||
plugins.RegisterProxy(),
|
||||
)
|
||||
|
||||
//plugins.RegisterRelations(bot)
|
||||
|
||||
if err := bot.AutoGenerateCommands(); err != nil {
|
||||
panic(err)
|
||||
log.Println(err)
|
||||
}
|
||||
bot.Run()
|
||||
}
|
||||
|
||||
@@ -17,10 +17,10 @@ import (
|
||||
|
||||
func RegisterAdmin() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Admin")
|
||||
p.AddCommand(laniakea.NewCommand(uploadPhoto, "uploadPhoto").SkipCommandAutoGen())
|
||||
p.AddCommand(laniakea.NewCommand(emojiId, "emojiId").SkipCommandAutoGen())
|
||||
p.AddCommand(laniakea.NewCommand(execSql, "sql").SkipCommandAutoGen())
|
||||
p.AddCommand(laniakea.NewCommand(test, "test").SkipCommandAutoGen())
|
||||
p.NewCommand(uploadPhoto, "uploadPhoto").SkipCommandAutoGen()
|
||||
p.NewCommand(emojiId, "emojiId").SkipCommandAutoGen()
|
||||
p.NewCommand(execSql, "sql").SkipCommandAutoGen()
|
||||
p.NewCommand(test, "test").SkipCommandAutoGen()
|
||||
|
||||
p.AddMiddleware(AdminMiddleware())
|
||||
return p
|
||||
@@ -75,7 +75,7 @@ func execSql(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Answerf("`%s`", data)
|
||||
ctx.AnswerfMarkdown("```json\n%s\n```", data)
|
||||
}
|
||||
|
||||
func emojiId(ctx *laniakea.MsgContext, _ *database.Context) {
|
||||
|
||||
@@ -13,8 +13,7 @@ import (
|
||||
|
||||
func RegisterAi() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("AI")
|
||||
p.AddCommand(p.NewCommand(gptTest, "gpt").SkipCommandAutoGen())
|
||||
//p.AddCommand(p.NewCommand(gptTest, "gpt2").SkipCommandAutoGen())
|
||||
p.NewCommand(gptTest, "gpt").SkipCommandAutoGen()
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
|
||||
func RegisterProxy() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Proxy")
|
||||
p.AddCommand(laniakea.NewCommand(getH2Link, "h2link"))
|
||||
p.AddCommand(laniakea.NewCommand(getProxy, "proxy"))
|
||||
p.NewCommand(getH2Link, "h2link")
|
||||
p.NewCommand(getProxy, "proxy")
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
@@ -17,22 +17,22 @@ import (
|
||||
|
||||
func RegisterEconomy(bot *laniakea.Bot[database.Context]) *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Economy")
|
||||
p.AddCommand(p.NewCommand(profile, "profile"))
|
||||
p.AddCommand(p.NewCommand(profile, "профиль").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(work, "work"))
|
||||
p.AddCommand(p.NewCommand(work, "работать").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(collect, "collect"))
|
||||
p.AddCommand(p.NewCommand(collect, "собрать").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(code, "code"))
|
||||
p.AddCommand(p.NewCommand(code, "код").SkipCommandAutoGen())
|
||||
p.NewCommand(profile, "profile")
|
||||
p.NewCommand(profile, "профиль")
|
||||
p.NewCommand(work, "work")
|
||||
p.NewCommand(work, "работать")
|
||||
p.NewCommand(collect, "collect")
|
||||
p.NewCommand(collect, "собрать")
|
||||
p.NewCommand(code, "code")
|
||||
p.NewCommand(code, "код")
|
||||
|
||||
p.AddCommand(p.NewCommand(vacancies, "vacancies"))
|
||||
p.AddCommand(p.NewCommand(vacancies, "вакансии").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(getAJob, "getajob"))
|
||||
p.AddCommand(p.NewCommand(getAJob, "устроиться").SkipCommandAutoGen())
|
||||
p.NewCommand(vacancies, "vacancies")
|
||||
p.NewCommand(vacancies, "вакансии")
|
||||
p.NewCommand(getAJob, "getajob")
|
||||
p.NewCommand(getAJob, "устроиться")
|
||||
|
||||
p.AddCommand(p.NewCommand(aboutGroup, "group"))
|
||||
p.AddCommand(p.NewCommand(aboutGroup, "о группе").SkipCommandAutoGen())
|
||||
p.NewCommand(aboutGroup, "group")
|
||||
p.NewCommand(aboutGroup, "о группе")
|
||||
|
||||
bot.AddRunner(*laniakea.NewRunner[database.Context](
|
||||
"economy.PassiveIncome", passiveIncome,
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
|
||||
func RegisterFun() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Fun")
|
||||
p.AddCommand(p.NewCommand(beautyFont, "bf"))
|
||||
p.AddCommand(p.NewCommand(beautyFontHeart, "bfh"))
|
||||
p.NewCommand(beautyFont, "bf")
|
||||
p.NewCommand(beautyFontHeart, "bfh")
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ import (
|
||||
|
||||
func RegisterLogs() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Logs")
|
||||
p.AddCommand(p.NewCommand(getLogs, "logs").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(getMsgLogs, "msglogs").SkipCommandAutoGen())
|
||||
p.NewCommand(getLogs, "logs").SkipCommandAutoGen()
|
||||
p.NewCommand(getMsgLogs, "msglogs").SkipCommandAutoGen()
|
||||
p.AddMiddleware(AdminMiddleware())
|
||||
return p
|
||||
}
|
||||
|
||||
@@ -26,34 +26,35 @@ import (
|
||||
|
||||
func RegisterRP() *laniakea.Plugin[database.Context] {
|
||||
rp := laniakea.NewPlugin[database.Context]("RP")
|
||||
rp.AddCommand(rp.NewCommand(rpUserPromptSet, "rpuserpset"))
|
||||
rp.AddCommand(rp.NewCommand(rpInfo, "rp").SetDescription("РП профиль пользователя"))
|
||||
rp.AddCommand(rp.NewCommand(rpInfo, "рп").SkipCommandAutoGen())
|
||||
rp.AddPayload(rp.NewCommand(rpInfo, "rp.info"))
|
||||
rp.AddPayload(rp.NewCommand(rpWaifuList, "rp.waifu_list"))
|
||||
rp.AddPayload(rp.NewCommand(rpWaifuSet, "rp.waifu_set"))
|
||||
rp.AddPayload(rp.NewCommand(rpPresetsList, "rp.preset_list"))
|
||||
rp.AddPayload(rp.NewCommand(rpPresetSet, "rp.preset_set"))
|
||||
rp.AddPayload(rp.NewCommand(rpModelList, "rp.model_list"))
|
||||
rp.AddPayload(rp.NewCommand(rpModelSet, "rp.model_set"))
|
||||
rp.AddPayload(rp.NewCommand(rpScenarioList, "rp.scenario_list"))
|
||||
rp.AddPayload(rp.NewCommand(rpSettingList, "rp.setting_list"))
|
||||
rp.AddPayload(rp.NewCommand(chatStat, "rp.chat_stat"))
|
||||
rp.AddPayload(rp.NewCommand(newChatStage1, "rp.new_chat_s1"))
|
||||
rp.AddPayload(rp.NewCommand(newChatStage2, "rp.new_chat_s2"))
|
||||
rp.AddPayload(rp.NewCommand(newChat, "rp.new_chat"))
|
||||
rp.AddCommand(rp.NewCommand(
|
||||
rp.NewCommand(rpUserPromptSet, "rpuserpset")
|
||||
rp.NewCommand(rpInfo, "rp").SetDescription("РП профиль пользователя")
|
||||
rp.NewCommand(rpInfo, "рп")
|
||||
|
||||
rp.NewPayload(rpInfo, "rp.info")
|
||||
rp.NewPayload(rpWaifuList, "rp.waifu_list")
|
||||
rp.NewPayload(rpWaifuSet, "rp.waifu_set")
|
||||
rp.NewPayload(rpPresetsList, "rp.preset_list")
|
||||
rp.NewPayload(rpPresetSet, "rp.preset_set")
|
||||
rp.NewPayload(rpModelList, "rp.model_list")
|
||||
rp.NewPayload(rpModelSet, "rp.model_set")
|
||||
rp.NewPayload(rpScenarioList, "rp.scenario_list")
|
||||
rp.NewPayload(rpSettingList, "rp.setting_list")
|
||||
rp.NewPayload(chatStat, "rp.chat_stat")
|
||||
rp.NewPayload(newChatStage1, "rp.new_chat_s1")
|
||||
rp.NewPayload(newChatStage2, "rp.new_chat_s2")
|
||||
rp.NewPayload(newChat, "rp.new_chat")
|
||||
rp.NewCommand(
|
||||
generate, "g",
|
||||
*laniakea.NewCommandArg("prompt", laniakea.CommandValueAnyType),
|
||||
).SetDescription("Генерация РП"))
|
||||
rp.AddCommand(rp.NewCommand(generate, "gen").SkipCommandAutoGen())
|
||||
rp.AddCommand(rp.NewCommand(generate, "г").SkipCommandAutoGen())
|
||||
rp.AddPayload(rp.NewCommand(compress, "rp.compress_chat"))
|
||||
rp.AddPayload(rp.NewCommand(regenerateResponse, "rp.regenerate"))
|
||||
).SetDescription("Генерация РП")
|
||||
rp.NewCommand(generate, "gen").SkipCommandAutoGen()
|
||||
rp.NewCommand(generate, "г").SkipCommandAutoGen()
|
||||
rp.NewPayload(compress, "rp.compress_chat")
|
||||
rp.NewPayload(regenerateResponse, "rp.regenerate")
|
||||
|
||||
rp.AddPayload(rp.NewCommand(compressSettingStage1, "rp.compress_setting_s1"))
|
||||
rp.AddPayload(rp.NewCommand(compressSettingStage2, "rp.compress_setting_s2"))
|
||||
rp.AddPayload(rp.NewCommand(compressSetting, "rp.compress_setting"))
|
||||
rp.NewPayload(compressSettingStage1, "rp.compress_setting_s1")
|
||||
rp.NewPayload(compressSettingStage2, "rp.compress_setting_s2")
|
||||
rp.NewPayload(compressSetting, "rp.compress_setting")
|
||||
|
||||
return rp
|
||||
}
|
||||
@@ -171,14 +172,14 @@ func rpWaifuList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
owner = waifu.Owner.Name
|
||||
}
|
||||
out[i] = fmt.Sprintf(
|
||||
"*%s* %d\\* из \"%s\" (владелец: %s)",
|
||||
"*%s* %d☆ из \"%s\" (владелец: %s)",
|
||||
waifu.Name, waifu.Rarity, waifu.Fandom, owner,
|
||||
)
|
||||
kb.AddCallbackButton(waifu.Name, "rp.waifu_set", waifu.ID)
|
||||
}
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info")
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
func rpWaifuSet(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
@@ -202,7 +203,7 @@ func rpWaifuSet(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
|
||||
ctx.EditCallbackf("Была выбрана вайфу %s", kb, waifu.Name)
|
||||
ctx.EditCallbackfMarkdown("Была выбрана вайфу *%s*", kb, waifu.Name)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
|
||||
@@ -217,7 +218,7 @@ func rpPresetsList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
for i, preset := range presets {
|
||||
out[i] = fmt.Sprintf(
|
||||
"*%s* - %s",
|
||||
"*%s* \\- %s",
|
||||
laniakea.EscapeMarkdownV2(preset.Name), preset.Description,
|
||||
)
|
||||
kb.AddCallbackButton(preset.Name, "rp.preset_set", preset.ID)
|
||||
@@ -265,12 +266,12 @@ func rpModelList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
out := make([]string, len(models))
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
for i, model := range models {
|
||||
out[i] = fmt.Sprintf("*%s* - размер контекста _%dK_", 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.AddLine()
|
||||
kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.info")
|
||||
ctx.EditCallbackMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
func rpModelSet(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
@@ -308,10 +309,10 @@ func rpScenarioList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
out := make([]string, len(scenarios))
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
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, scenario.Description)
|
||||
}
|
||||
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleDanger, "rp.info")
|
||||
ctx.EditCallbackMarkdown("Список сценариев\n"+laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)
|
||||
ctx.EditCallbackMarkdown("Список сценариев\n"+strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
@@ -324,11 +325,11 @@ func rpSettingList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
|
||||
out := make([]string, len(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, setting.Description)
|
||||
}
|
||||
kb := laniakea.NewInlineKeyboard(1)
|
||||
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
|
||||
ctx.EditCallbackMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
|
||||
@@ -387,13 +388,13 @@ func newChatStage1(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
}
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
for _, setting := range settings {
|
||||
out = append(out, fmt.Sprintf("*%s* - %s", setting.Name, setting.Description))
|
||||
out = append(out, fmt.Sprintf("*%s* \\- %s", setting.Name, setting.Description))
|
||||
kb.AddCallbackButton(setting.Name, "rp.new_chat_s2", setting.ID)
|
||||
}
|
||||
kb.AddCallbackButton("Без сеттинга", "rp.new_chat_s2", 0)
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.info")
|
||||
ctx.EditCallbackMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
func newChatStage2(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
@@ -536,7 +537,7 @@ func newChat(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
kb.AddCallbackButtonStyle("На главную", laniakea.ButtonStyleSuccess, "rp.info")
|
||||
kb.AddCallbackButtonStyle("Закрыть", laniakea.ButtonStyleDanger, "general.close")
|
||||
ctx.EditCallback("Был создан новый чат. Для общения используй `/г промпт`.", kb)
|
||||
ctx.EditCallbackMarkdown("Был создан новый чат\\. Для общения используй `/г промпт`", kb)
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
|
||||
@@ -989,11 +990,11 @@ func compressSettingStage1(ctx *laniakea.MsgContext, _ *database.Context) {
|
||||
|
||||
out := []string{
|
||||
"Выбери метод для определения сжатия",
|
||||
"*По сообщениям* — чат будет сжиматься после достижения определенного кол-ва сообщений в нём",
|
||||
"*По токенам* — чат будет сжиматься после достижения определенного кол-ва токенов в нём",
|
||||
"*По сообщениям* \\— чат будет сжиматься после достижения определенного кол-ва сообщений в нём",
|
||||
"*По токенам* \\— чат будет сжиматься после достижения определенного кол-ва токенов в нём",
|
||||
}
|
||||
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
func compressSettingStage2(ctx *laniakea.MsgContext, _ *database.Context) {
|
||||
if len(ctx.Args) == 0 {
|
||||
|
||||
@@ -14,32 +14,30 @@ func RegisterService() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("service")
|
||||
p.AddPayload(p.NewCommand(generalClose, "general.close"))
|
||||
|
||||
p.AddCommand(p.NewCommand(about, "about"))
|
||||
p.AddCommand(p.NewCommand(about, "о боте").SkipCommandAutoGen())
|
||||
p.NewCommand(about, "about")
|
||||
p.NewCommand(about, "о боте")
|
||||
return p
|
||||
}
|
||||
|
||||
func about(ctx *laniakea.MsgContext, _ *database.Context) {
|
||||
formatVersion := func() string {
|
||||
parts := strings.Split(laniakea.VersionString, "-")
|
||||
main := parts[0]
|
||||
if len(parts) > 1 {
|
||||
beta := strings.Join(strings.Split(parts[1], "."), " ")
|
||||
return main + " " + beta
|
||||
v := fmt.Sprintf("%d.%d.%d", laniakea.VersionMajor, laniakea.VersionMinor, laniakea.VersionPatch)
|
||||
if laniakea.VersionBeta > 0 {
|
||||
v += fmt.Sprintf(" Beta %d", laniakea.VersionBeta)
|
||||
}
|
||||
return main
|
||||
return v
|
||||
}
|
||||
out := []string{
|
||||
fmt.Sprintf("Версия Go: %s", runtime.Version()[2:]),
|
||||
fmt.Sprintf("Версия Laniakea: %s", formatVersion()),
|
||||
fmt.Sprintf("Время сборки: %s", utils.BuildTime),
|
||||
fmt.Sprintf("Git хеш: %s", utils.GitCommit),
|
||||
fmt.Sprintf("*Версия Go*: %s", runtime.Version()[2:]),
|
||||
fmt.Sprintf("*Версия Laniakea*: %s", formatVersion()),
|
||||
fmt.Sprintf("*Время сборки*: %s", utils.BuildTime),
|
||||
fmt.Sprintf("*Git хеш*: %s", utils.GitCommit),
|
||||
}
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
kb.AddUrlButtonStyle("Канал", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_news")
|
||||
kb.AddUrlButtonStyle("Чат", laniakea.ButtonStylePrimary, "https://t.me/ym_gbot_chat")
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
ctx.KeyboardMarkdown(laniakea.EscapePunctuation(strings.Join(out, "\n")), kb)
|
||||
}
|
||||
|
||||
func generalClose(ctx *laniakea.MsgContext, _ *database.Context) {
|
||||
|
||||
@@ -2,7 +2,6 @@ package plugins
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -17,22 +16,22 @@ import (
|
||||
func RegisterWaifus() *laniakea.Plugin[database.Context] {
|
||||
p := laniakea.NewPlugin[database.Context]("Waifus")
|
||||
|
||||
p.AddCommand(p.NewCommand(myWaifu, "mywaifu"))
|
||||
p.AddCommand(p.NewCommand(myWaifu, "моивайфу").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(waifuList, "wlist"))
|
||||
p.AddCommand(p.NewCommand(waifuList, "waifulist"))
|
||||
p.AddCommand(p.NewCommand(waifuList, "влист").SkipCommandAutoGen())
|
||||
p.AddCommand(p.NewCommand(waifuList, "вайфулист").SkipCommandAutoGen())
|
||||
p.NewCommand(myWaifu, "mywaifu").SetDescription("Список твоих вайфу")
|
||||
p.NewCommand(myWaifu, "моивайфу")
|
||||
p.NewCommand(waifuList, "wlist").SetDescription("Список всех вайфу")
|
||||
p.NewCommand(waifuList, "waifulist").SkipCommandAutoGen()
|
||||
p.NewCommand(waifuList, "влист")
|
||||
p.NewCommand(waifuList, "вайфулист")
|
||||
|
||||
p.AddPayload(p.NewCommand(myWaifu, "waifu.my"))
|
||||
p.AddPayload(p.NewCommand(waifuList, "waifu.list"))
|
||||
p.AddPayload(p.NewCommand(waifuSell, "waifu.sell"))
|
||||
p.AddPayload(p.NewCommand(buyWaifu, "waifu.buy"))
|
||||
p.AddPayload(p.NewCommand(waifuInfo, "waifu.info"))
|
||||
p.AddPayload(p.NewCommand(waifuSearch, "waifu.search"))
|
||||
p.NewPayload(myWaifu, "waifu.my")
|
||||
p.NewPayload(waifuList, "waifu.list")
|
||||
p.NewPayload(waifuSell, "waifu.sell")
|
||||
p.NewPayload(buyWaifu, "waifu.buy")
|
||||
p.NewPayload(waifuInfo, "waifu.info")
|
||||
p.NewPayload(waifuSearch, "waifu.search")
|
||||
|
||||
p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_buy"))
|
||||
p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_sell"))
|
||||
p.NewPayload(waifuNotImplemented, "waifu.confirm_buy")
|
||||
p.NewPayload(waifuNotImplemented, "waifu.confirm_sell")
|
||||
|
||||
return p
|
||||
}
|
||||
@@ -58,7 +57,7 @@ func myWaifu(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
"Список твоих вайфу:",
|
||||
}
|
||||
for _, w := range waifus {
|
||||
s := fmt.Sprintf("*%s* из \"*%s*\" (%d☆, ID: %d)", w.Name, w.Fandom, w.Rarity, w.ID)
|
||||
s := fmt.Sprintf("*%s* из \"*%s*\" \\(%d☆, ID: %d\\)", w.Name, w.Fandom, w.Rarity, w.ID)
|
||||
out = append(out, s)
|
||||
kb.AddCallbackButton(w.Name, "waifu.info", w.ID)
|
||||
}
|
||||
@@ -68,9 +67,9 @@ func myWaifu(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
kb.AddLine()
|
||||
kb.AddCallbackButton("Все вайфу", "waifu.list")
|
||||
if ctx.CallbackMsgId > 0 {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
ctx.KeyboardMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +90,7 @@ func waifuList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
} else {
|
||||
owner = w.Owner.Name
|
||||
}
|
||||
out[i] = fmt.Sprintf("*%s* из \"*%s*\" (%d☆, ID: %d) Владелец: *%s*", w.Name, w.Fandom, w.Rarity, w.ID, owner)
|
||||
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()
|
||||
@@ -100,12 +99,12 @@ func waifuList(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
if ctx.CallbackMsgId > 0 {
|
||||
if len(ctx.Msg.Photo) > 0 {
|
||||
ctx.CallbackDelete()
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
ctx.KeyboardMarkdown(strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
} else {
|
||||
ctx.Keyboard(strings.Join(out, "\n"), kb)
|
||||
ctx.KeyboardMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,8 +173,8 @@ func waifuInfo(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
out := []string{
|
||||
fmt.Sprintf("*%s* из \"*%s*\"", waifu.Name, waifu.Fandom),
|
||||
fmt.Sprintf("Редкость: %d☆", waifu.Rarity),
|
||||
fmt.Sprintf("Бонус к деньгам: x%.2f", waifu.MoneyBonus.InexactFloat64()),
|
||||
fmt.Sprintf("Бонус к опыту: x%.2f", waifu.ExpBonus.InexactFloat64()),
|
||||
laniakea.EscapePunctuation(fmt.Sprintf("Бонус к деньгам: x%.2f", waifu.MoneyBonus.InexactFloat64())),
|
||||
laniakea.EscapePunctuation(fmt.Sprintf("Бонус к опыту: x%.2f", waifu.ExpBonus.InexactFloat64())),
|
||||
fmt.Sprintf("Рыночная стоимость: %s¥", utils.DecimalComma(&waifu.MarketPrice)),
|
||||
}
|
||||
kb := laniakea.NewInlineKeyboard(2)
|
||||
@@ -191,10 +190,9 @@ func waifuInfo(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
kb.AddCallbackButton("Мои вайфу", "waifu.my")
|
||||
if len(waifu.Image) > 0 {
|
||||
ctx.CallbackDelete()
|
||||
log.Println(waifu.Image)
|
||||
ctx.AnswerPhotoKeyboard(waifu.Image, strings.Join(out, "\n"), kb)
|
||||
ctx.AnswerPhotoKeyboardMarkdown(waifu.Image, strings.Join(out, "\n"), kb)
|
||||
} else {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
ctx.AnswerCbQuery()
|
||||
}
|
||||
@@ -209,7 +207,7 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
|
||||
kb := laniakea.NewInlineKeyboard(2).AddCallbackButton("Мои вайфу", "waifu.my").AddCallbackButton("Все вайфу", "waifu.list")
|
||||
if time.Now().Before(user.WaifuSearchTime.Add(time.Hour * 4)) {
|
||||
ctx.EditCallback("Вайфу можно искать раз в 4 часа.", kb)
|
||||
ctx.EditCallback("Вайфу можно искать раз в 4 часа", kb)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -220,13 +218,13 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
return
|
||||
}
|
||||
if count == 0 {
|
||||
ctx.EditCallback("Не осталось свободных вайфу... :(\nПопробуй позже или купи на рынке!", kb)
|
||||
ctx.EditCallbackMarkdown("Не осталось свободных вайфу… :\\(\nПопробуй позже или купи на рынке\\!", kb)
|
||||
return
|
||||
}
|
||||
|
||||
rand := utils.RandRange(0, 100)
|
||||
if 10 < rand && rand < 90 {
|
||||
ctx.EditCallback("Ты ничего не нашел!", kb)
|
||||
ctx.EditCallback("Ты ничего не нашёл\\!", kb)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -245,7 +243,7 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
}
|
||||
|
||||
if len(freeWaifus) == 0 {
|
||||
ctx.EditCallback("Ты ничего не нашел!", kb)
|
||||
ctx.EditCallback("Ты ничего не нашёл\\!", kb)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -260,9 +258,9 @@ func waifuSearch(ctx *laniakea.MsgContext, db *database.Context) {
|
||||
fmt.Sprintf("Рыночная стоимость: %s¥", utils.DecimalComma(&waifu.MarketPrice)),
|
||||
}
|
||||
if len(waifu.Image) > 0 {
|
||||
ctx.AnswerPhoto(waifu.Image, strings.Join(out, "\n"))
|
||||
ctx.AnswerPhotoMarkdown(waifu.Image, strings.Join(out, "\n"))
|
||||
} else {
|
||||
ctx.EditCallback(strings.Join(out, "\n"), kb)
|
||||
ctx.EditCallbackMarkdown(strings.Join(out, "\n"), kb)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user