laniakea v0.6

This commit is contained in:
2026-02-18 14:06:58 +03:00
parent dd83373689
commit 57fb633893
12 changed files with 101 additions and 75 deletions

View File

@@ -14,16 +14,16 @@ import (
func RegisterAdmin(b *laniakea.Bot) {
p := laniakea.NewPlugin("Admin")
p.Command(uploadPhoto, "uploadPhoto")
p.Command(emojiId, "emojiId")
p.Command(getProxy, "proxy")
p.Command(execSql, "sql")
p.AddCommand(laniakea.NewCommand(uploadPhoto, "uploadPhoto").SkipCommandAutoGen())
p.AddCommand(laniakea.NewCommand(emojiId, "emojiId").SkipCommandAutoGen())
p.AddCommand(laniakea.NewCommand(getProxy, "proxy").SkipCommandAutoGen())
p.AddCommand(laniakea.NewCommand(execSql, "sql").SkipCommandAutoGen())
p.AddMiddleware(AdminMiddleware())
b.AddPlugins(p.Build())
b.AddPlugins(p)
}
func AdminMiddleware() *laniakea.PluginMiddleware {
m := laniakea.NewPluginMiddleware(func(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool {
func AdminMiddleware() laniakea.Middleware {
m := laniakea.NewMiddleware("AdminMiddleware", func(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool {
rep := psql.NewUserRepository(db)
u, err := rep.GetById(ctx.FromID)
if err != nil {
@@ -31,7 +31,7 @@ func AdminMiddleware() *laniakea.PluginMiddleware {
}
return u.Group.IsAdmin
})
return m
return *m
}
func execSql(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {

View File

@@ -11,8 +11,8 @@ import (
func RegisterAi(bot *laniakea.Bot) {
p := laniakea.NewPlugin("AI")
p.Command(gpt, "gpt")
bot.AddPlugins(p.Build())
p.AddCommand(p.NewCommand(gpt, "gpt").SkipCommandAutoGen())
bot.AddPlugins(p)
}
func gpt(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {

View File

@@ -15,22 +15,29 @@ import (
)
func RegisterEconomy(bot *laniakea.Bot) {
economy := laniakea.NewPlugin("Economy")
economy.Command(profile, "profile", "профиль")
economy.Command(work, "work", "работать")
economy.Command(collect, "collect", "собрать")
economy.Command(code, "code", "код")
p := laniakea.NewPlugin("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())
economy.Command(vacancies, "vacancies", "вакансии")
economy.Command(getAJob, "getajob", "устроиться")
p.AddCommand(p.NewCommand(vacancies, "vacancies"))
p.AddCommand(p.NewCommand(vacancies, "вакансии").SkipCommandAutoGen())
p.AddCommand(p.NewCommand(getAJob, "getajob"))
p.AddCommand(p.NewCommand(getAJob, "устроиться").SkipCommandAutoGen())
economy.Command(aboutGroup, "group", "о группе")
p.AddCommand(p.NewCommand(aboutGroup, "group"))
p.AddCommand(p.NewCommand(aboutGroup, "о группе").SkipCommandAutoGen())
bot.AddRunner(laniakea.NewRunner(
"economy.PassiveIncome", passiveIncome,
).Timeout(time.Minute).Build())
bot.AddPlugins(economy.Build())
bot.AddPlugins(p)
}
func passiveIncome(b *laniakea.Bot) error {
@@ -383,12 +390,15 @@ func aboutGroup(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
if group.IsVip {
out = append(out, "🎏Доступ к ВИП функциям: ✅")
}
if group.IsPremium {
out = append(out, "🎏Доступ к премиум функциям: ✅")
}
if group.IsTester {
out = append(out, "🔓Бета-тестер: ✅")
}
if group.IsAdmin {
out = append(out, "🖥️Доступ к админ функциям: ✅")
}
if group.IsVip {
out = append(out, "🔓Бета-тестер: ✅")
}
ctx.Answer(strings.Join(out, "\n"))
}

View File

@@ -8,9 +8,9 @@ import (
func RegisterFun(bot *laniakea.Bot) {
p := laniakea.NewPlugin("Fun")
p.Command(beautyFont, "bf")
p.Command(beautyFontHeart, "bfh")
bot.AddPlugins(p.Build())
p.AddCommand(p.NewCommand(beautyFont, "bf"))
p.AddCommand(p.NewCommand(beautyFontHeart, "bfh"))
bot.AddPlugins(p)
}
var ligatures = map[string]string{

View File

@@ -16,13 +16,13 @@ import (
func RegisterLogs(bot *laniakea.Bot) {
p := laniakea.NewPlugin("Logs")
p.Command(getLogs, "logs")
p.Command(getMsgLogs, "msglogs")
p.AddCommand(p.NewCommand(getLogs, "logs").SkipCommandAutoGen())
p.AddCommand(p.NewCommand(getMsgLogs, "msglogs").SkipCommandAutoGen())
p.AddMiddleware(AdminMiddleware())
bot.AddPlugins(p.Build())
bot.AddPlugins(p)
}
func InitLogMiddleware() laniakea.Middleware {
return laniakea.NewMiddleware("LogMiddleware", logMiddleware).SetAsync(true).Build()
return *laniakea.NewMiddleware("LogMiddleware", logMiddleware).SetAsync(true)
}
func getLogs(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
@@ -61,9 +61,9 @@ func encodeLogs[T comparable](logs extypes.Slice[T]) extypes.Slice[string] {
return out
}
func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool {
if ctx.Msg == nil {
return
return true
}
entry := &mdb.MessageLogEntry{
MessageID: ctx.Msg.MessageID,
@@ -76,6 +76,7 @@ func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
if err != nil {
ctx.Bot.Logger().Errorln(err)
}
return true
}
type DatabaseWriter struct {

View File

@@ -4,5 +4,5 @@ import "git.nix13.pw/scuroneko/laniakea"
func RegisterRelations(b *laniakea.Bot) {
p := laniakea.NewPlugin("Relations")
b.AddPlugins(p.Build())
b.AddPlugins(p)
}

View File

@@ -21,30 +21,36 @@ import (
func RegisterRP(bot *laniakea.Bot) {
rp := laniakea.NewPlugin("RP")
rp.Command(rpUserPromptSet, "rpuserpset")
rp.Command(rpInfo, "rp", "рп")
rp.Payload(rpInfo, "rp.info")
rp.Payload(rpWaifuList, "rp.waifu_list")
rp.Payload(rpWaifuSet, "rp.waifu_set")
rp.Payload(rpPresetsList, "rp.preset_list")
rp.Payload(rpPresetSet, "rp.preset_set")
rp.Payload(rpModelList, "rp.model_list")
rp.Payload(rpModelSet, "rp.model_set")
rp.Payload(rpScenarioList, "rp.scenario_list")
rp.Payload(rpSettingList, "rp.setting_list")
rp.Payload(chatStat, "rp.chat_stat")
rp.Payload(newChatStage1, "rp.new_chat_s1")
rp.Payload(newChatStage2, "rp.new_chat_s2")
rp.Payload(newChat, "rp.new_chat")
rp.Command(generate, "g", "gen", "г")
rp.Payload(compress, "rp.compress_chat")
rp.Payload(regenerateResponse, "rp.regenerate")
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(
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"))
rp.Payload(compressSettingStage1, "rp.compress_setting_s1")
rp.Payload(compressSettingStage2, "rp.compress_setting_s2")
rp.Payload(compressSetting, "rp.compress_setting")
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"))
bot.AddPlugins(rp.Build())
bot.AddPlugins(rp)
}
func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
@@ -899,6 +905,7 @@ func compressSettingStage1(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext
kb := laniakea.NewInlineKeyboard(2)
kb.AddCallbackButton("По сообщениям", "rp.compress_setting_s2", "messages")
kb.AddCallbackButton("По токенам", "rp.compress_setting_s2", "tokens")
kb.AddCallbackButton("Отключить", "rp.compress_setting", "none", 0)
kb.AddLine().AddCallbackButton("На главную", "rp.info")
out := []string{

View File

@@ -11,10 +11,11 @@ import (
func RegisterService(bot *laniakea.Bot) {
p := laniakea.NewPlugin("service")
p.Payload(generalClose, "general.close")
p.AddPayload(p.NewCommand(generalClose, "general.close"))
p.Command(about, "about", "о боте")
bot.AddPlugins(p.Build())
p.AddCommand(p.NewCommand(about, "about"))
p.AddCommand(p.NewCommand(about, "о боте").SkipCommandAutoGen())
bot.AddPlugins(p)
}
func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {

View File

@@ -14,22 +14,26 @@ import (
)
func RegisterWaifus(bot *laniakea.Bot) {
waifus := laniakea.NewPlugin("Waifus")
p := laniakea.NewPlugin("Waifus")
waifus.Command(myWaifu, "mywaifu", "моивайфу")
waifus.Command(waifuList, "wlist", "waifulist", "влист", "вайфулист")
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())
waifus.Payload(myWaifu, "waifu.my")
waifus.Payload(waifuList, "waifu.list")
waifus.Payload(waifuSell, "waifu.sell")
waifus.Payload(buyWaifu, "waifu.buy")
waifus.Payload(waifuInfo, "waifu.info")
waifus.Payload(waifuSearch, "waifu.search")
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"))
waifus.Payload(waifuNotImplemented, "waifu.confirm_buy")
waifus.Payload(waifuNotImplemented, "waifu.confirm_sell")
p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_buy"))
p.AddPayload(p.NewCommand(waifuNotImplemented, "waifu.confirm_sell"))
bot.AddPlugins(waifus.Build())
bot.AddPlugins(p)
}
func myWaifu(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {