Files
YaeMikoBot/plugins/admin.go
2026-02-04 17:30:34 +03:00

63 lines
1.4 KiB
Go

package plugins
import (
"kurumibot/database/psql"
"path/filepath"
"git.nix13.pw/scuroneko/laniakea"
)
func RegisterAdmin(b *laniakea.Bot) {
p := laniakea.NewPlugin("Admin")
p.Command(uploadPhoto, "uploadPhoto")
p.Command(test, "test")
p.Middleware(laniakea.NewPluginMiddleware(func(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) bool {
rep := psql.NewUserRepository(db)
u, err := rep.GetById(ctx.FromID)
if err != nil {
return false
}
return u.Group.IsAdmin
}))
b.AddPlugins(p.Build())
}
func test(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
ctx.Answer("Ok")
}
func uploadPhoto(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
}
if !user.Group.IsAdmin {
return
}
photoId := ctx.Msg.Photo.Last().FileID
f, err := ctx.Bot.GetFile(&laniakea.GetFileP{FileId: photoId})
if err != nil {
ctx.Error(err)
return
}
u := laniakea.NewUploader(ctx.Bot)
content, err := ctx.Bot.GetFileByLink(f.FilePath)
if err != nil {
ctx.Error(err)
return
}
filename := filepath.Base(f.FilePath)
msg, err := u.UploadPhoto(laniakea.NewUploaderFile(filename, content), laniakea.SendPhotoBaseP{
ChatID: ctx.Msg.Chat.ID,
Caption: ctx.Msg.Caption,
})
if err != nil {
ctx.Error(err)
return
}
ctx.Answer(laniakea.EscapeMarkdown(msg.Photo.Last().FileID))
}