diff --git a/go.mod b/go.mod index 59a56c6..77a14ce 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module kurumibot go 1.25.7 require ( - git.nix13.pw/scuroneko/extypes v1.0.5 - git.nix13.pw/scuroneko/laniakea v0.4.0 + git.nix13.pw/scuroneko/extypes v1.1.0 + git.nix13.pw/scuroneko/laniakea v0.4.4-1 git.nix13.pw/scuroneko/slog v1.0.2 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 @@ -16,8 +16,8 @@ require ( ) //replace ( -// //git.nix13.pw/scuroneko/extypes v1.0.5 => ../go-extypes -// //git.nix13.pw/scuroneko/laniakea v0.4.0 => ./laniakea +// //git.nix13.pw/scuroneko/extypes v1.1.0 => ../go-extypes +// //git.nix13.pw/scuroneko/laniakea v0.4.4 => ./laniakea // //git.nix13.pw/scuroneko/slog v1.0.2 => ../slog //) @@ -25,16 +25,17 @@ require ( 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 - github.com/klauspost/compress v1.18.3 // indirect + github.com/klauspost/compress v1.18.4 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/muir/sqltoken v0.2.1 // indirect + github.com/muir/list v1.2.1 // indirect + github.com/muir/sqltoken v0.3.0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.2.0 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect - golang.org/x/crypto v0.47.0 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect ) diff --git a/go.sum b/go.sum index 125db8e..a04021e 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -git.nix13.pw/scuroneko/extypes v1.0.5 h1:P/cz59g2yOCk0kLrqzae8cGKnjG9EQ+1tK0SoJhzgJo= -git.nix13.pw/scuroneko/extypes v1.0.5/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw= -git.nix13.pw/scuroneko/laniakea v0.4.0 h1:9U0Ro+yA5viI303KGx9HSCxvpFf9aWj+xYUaZUQUHk4= -git.nix13.pw/scuroneko/laniakea v0.4.0/go.mod h1:g4NsbbsRW2/JpVEqjldzf3hoP+rJtDRVtZQD6K7ma+g= +git.nix13.pw/scuroneko/extypes v1.1.0 h1:kdAraybAqQgVhArVkVfrIi7KVEX8HgTr8mzbIZAAAqg= +git.nix13.pw/scuroneko/extypes v1.1.0/go.mod h1:uZVs8Yo3RrYAG9dMad6qR6lsYY67t+459D9c65QAYAw= +git.nix13.pw/scuroneko/laniakea v0.4.4-1 h1:vakfENNCABXj+Rripss1QiwCl1EVIgh4DtdDW41bD5s= +git.nix13.pw/scuroneko/laniakea v0.4.4-1/go.mod h1:lE6WFg6BhAzdjsxV4EAT1ZQMYBkjOkjhiyA9GwaQZ/U= 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/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= @@ -26,8 +26,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= -github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= github.com/lib/pq v1.11.1 h1:wuChtj2hfsGmmx3nf1m7xC2XpK6OtelS2shMY+bGMtI= github.com/lib/pq v1.11.1/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= @@ -36,8 +36,10 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/muir/sqltoken v0.2.1 h1:19KvJrCj9aOMfU921hjnizWPlQmPTe+tb36zupOY2FA= -github.com/muir/sqltoken v0.2.1/go.mod h1:sSlj5M0VqQ4OuedmxwWs1TmzzRXaH3DLf5ukzg6meIo= +github.com/muir/list v1.2.1 h1:lmF8fz2B1WbXkzHr/Eh0oWPJArDBzWqIifOwbA4gWSo= +github.com/muir/list v1.2.1/go.mod h1:v0l2f997MxCohQlD7PTejJqyYKwFVz/i3mTpDl4LAf0= +github.com/muir/sqltoken v0.3.0 h1:3xbcqr80f3IA4OlwkOpdIHC4DTu6gsi1TwMqgYL4Dpg= +github.com/muir/sqltoken v0.3.0/go.mod h1:+OSmbGI22QcVZ6DCzlHT8EAzEq/mqtqedtPP91Le+3A= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4= @@ -61,8 +63,8 @@ go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -77,16 +79,16 @@ 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.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +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/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= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 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.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +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/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= diff --git a/plugins/admin.go b/plugins/admin.go index f7c4c43..c7b2d85 100644 --- a/plugins/admin.go +++ b/plugins/admin.go @@ -10,6 +10,7 @@ import ( func RegisterAdmin(b *laniakea.Bot) { p := laniakea.NewPlugin("Admin") p.Command(uploadPhoto, "uploadPhoto") + p.Command(emojiId, "emojiId") p.Command(test, "test") p.Middleware(AdminMiddleware()) @@ -31,6 +32,17 @@ func AdminMiddleware() *laniakea.PluginMiddleware { func test(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { ctx.Answer("Ok") } +func emojiId(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { + var id string + for _, e := range ctx.Msg.Entities { + if e.Type != laniakea.MessageEntityCustomEmoji { + continue + } + id = e.CustomEmojiID + break + } + ctx.Answer(id) +} func uploadPhoto(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { ctx.SendAction(laniakea.ChatActionUploadPhoto) photoId := ctx.Msg.Photo.Last().FileID @@ -40,6 +52,7 @@ func uploadPhoto(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) { return } u := laniakea.NewUploader(ctx.Api) + defer u.Close() content, err := ctx.Bot.GetFileByLink(f.FilePath) if err != nil { ctx.Error(err) diff --git a/plugins/rp.go b/plugins/rp.go index 7281826..134b419 100644 --- a/plugins/rp.go +++ b/plugins/rp.go @@ -117,7 +117,7 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { kb.AddCallbackButton("Настройки сжатия", "rp.compress_setting_s1") kb.AddCallbackButton("Новый чат", "rp.new_chat_s1") kb.AddLine() - kb.AddCallbackButton("Закрыть", "general.close") + kb.AddCallbackButtonStyle("Закрыть", laniakea.ButtonStyleDanger, "general.close") if ctx.CallbackMsgId > 0 { ctx.EditCallback(strings.Join(out, "\n"), kb) @@ -390,7 +390,7 @@ func newChatStage1(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } kb.AddCallbackButton("Без сеттинга", "rp.new_chat_s2", 0) kb.AddLine() - kb.AddCallbackButton("Назад", "rp.info") + kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.info") ctx.EditCallback(strings.Join(out, "\n"), kb) ctx.AnswerCbQuery() } @@ -445,7 +445,7 @@ func newChatStage2(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } kb.AddCallbackButton("Продолжить", "rp.new_chat", utils.AppendToInt(settingId, selectedScenariosIds)...) kb.AddLine() - kb.AddCallbackButton("Назад", "rp.new_chat_s1") + kb.AddCallbackButtonStyle("Назад", laniakea.ButtonStyleDanger, "rp.new_chat_s1") ctx.EditCallback(strings.Join(out, "\n"), kb) //setting, err := rep.GetSetting(settingId) @@ -534,9 +534,10 @@ func newChat(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { if err != nil { ctx.Error(err) } - + kb := laniakea.NewInlineKeyboard(2) - kb.AddCallbackButton("На главную", "rp.info").AddCallbackButton("Закрыть", "general.close") + kb.AddCallbackButton("На главную", "rp.info") + kb.AddCallbackButtonStyle("Закрыть", laniakea.ButtonStyleDanger, "general.close") ctx.EditCallback("Был создан новый чат. Для общения используй `/г промпт`.", kb) ctx.AnswerCbQuery() } @@ -646,7 +647,8 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { } userMessage := strings.TrimSpace(strings.Join(ctx.Args, " ")) - kb := laniakea.NewInlineKeyboard(1).AddCallbackButton("Отменить", "rp.cancel") + kb := laniakea.NewInlineKeyboard(1) + kb.AddCallbackButtonStyle("Отменить", laniakea.ButtonStyleDanger, "rp.cancel") m := ctx.Keyboard("Генерация запущена...", kb) ctx.SendAction(laniakea.ChatActionTyping) api := ai.NewOpenAIAPI(ai.GPTBaseUrl, "", rpUser.Model.Key) @@ -693,7 +695,8 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { m.Delete() kb = laniakea.NewInlineKeyboard(1) - kb.AddCallbackButton("🔄Перегенерировать", "rp.regenerate", counter+2) + kb.AddCallbackButtonStyle("🔄 Перегенерировать 🔄", laniakea.ButtonStyleSuccess, "rp.regenerate", counter+2) + //kb.AddButton(laniakea.NewInlineKbButton("Тест").SetStyle(laniakea.ButtonStyleSuccess).SetIconCustomEmojiId("5375155835846534814").SetCallbackData("rp.test")) ctx.Keyboard(laniakea.EscapeMarkdown(answerContent), kb) // Auto compress @@ -743,7 +746,7 @@ func regenerateResponse(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) } if messages.Len() == count { - ctx.Bot.Logger().Errorln("len(messages) == count. ") + ctx.Bot.Logger().Errorln("len(messages) == count") return }