Skip to content

Commit 63b9b00

Browse files
committed
更好的权限管理
1 parent da5fd25 commit 63b9b00

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

bot/handlers_admin.go

+12-18
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func setAdmin(ctx context.Context, bot *telego.Bot, message telego.Message) {
3232
telegram.ReplyMessage(bot, message, "获取管理员信息失败: "+err.Error())
3333
return
3434
}
35-
if userAdmin != nil && !userAdmin.SuperAdmin {
35+
if userAdmin == nil || !userAdmin.SuperAdmin {
3636
telegram.ReplyMessage(bot, message, "你没有权限设置管理员")
3737
return
3838
}
@@ -124,6 +124,10 @@ func setAdmin(ctx context.Context, bot *telego.Bot, message telego.Message) {
124124
}
125125

126126
func deletePicture(ctx context.Context, bot *telego.Bot, message telego.Message) {
127+
if !CheckPermissionInGroup(ctx, message, types.PermissionDeleteArtwork) {
128+
telegram.ReplyMessage(bot, message, "你没有删除图片的权限")
129+
return
130+
}
127131
var channelMessageID int
128132
cmd, _, args := telegoutil.ParseCommand(message.Text)
129133
if message.ReplyToMessage == nil {
@@ -146,10 +150,6 @@ func deletePicture(ctx context.Context, bot *telego.Bot, message telego.Message)
146150
channelMessageID = originChannel.MessageID
147151
}
148152
if cmd == "del" {
149-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionDeleteArtwork) {
150-
telegram.ReplyMessage(bot, message, "你没有删除图片的权限")
151-
return
152-
}
153153
picture, err := service.GetPictureByMessageID(ctx, channelMessageID)
154154
if err != nil {
155155
telegram.ReplyMessage(bot, message, "获取图片信息失败: "+err.Error())
@@ -168,10 +168,6 @@ func deletePicture(ctx context.Context, bot *telego.Bot, message telego.Message)
168168
}
169169
return
170170
}
171-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionDeleteArtwork) {
172-
telegram.ReplyMessage(bot, message, "你没有删除作品的权限")
173-
return
174-
}
175171
artwork, err := service.GetArtworkByMessageID(ctx, channelMessageID)
176172
if err != nil {
177173
telegram.ReplyMessage(bot, message, "获取作品信息失败: "+err.Error())
@@ -200,17 +196,17 @@ func deletePicture(ctx context.Context, bot *telego.Bot, message telego.Message)
200196
}
201197

202198
func fetchArtwork(ctx context.Context, bot *telego.Bot, message telego.Message) {
203-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionFetchArtwork) {
199+
if CheckPermissionInGroup(ctx, message, types.PermissionFetchArtwork) {
204200
telegram.ReplyMessage(bot, message, "你没有拉取作品的权限")
205201
return
206202
}
207-
208203
go fetcher.FetchOnce(context.TODO(), config.Cfg.Fetcher.Limit)
209204
telegram.ReplyMessage(bot, message, "开始拉取作品了")
210205
}
211206

212207
func postArtwork(ctx context.Context, bot *telego.Bot, query telego.CallbackQuery) {
213-
if !service.CheckAdminPermission(ctx, query.From.ID, types.PermissionPostArtwork) {
208+
if !service.CheckAdminPermission(ctx, query.From.ID, types.PermissionPostArtwork) &&
209+
!service.CheckAdminPermission(ctx, query.Message.GetChat().ID, types.PermissionPostArtwork) {
214210
bot.AnswerCallbackQuery(&telego.AnswerCallbackQueryParams{
215211
CallbackQueryID: query.ID,
216212
Text: "你没有发布作品的权限",
@@ -287,7 +283,7 @@ func postArtwork(ctx context.Context, bot *telego.Bot, query telego.CallbackQuer
287283
if asR18 {
288284
artwork.R18 = true
289285
}
290-
if err := fetcher.PostAndCreateArtwork(ctx, artwork, bot, storage.GetStorage(), query.From.ID); err != nil {
286+
if err := fetcher.PostAndCreateArtwork(ctx, artwork, bot, storage.GetStorage(), query.Message.GetChat().ID); err != nil {
291287
Logger.Errorf("发布失败: %s", err)
292288
bot.EditMessageCaption(&telego.EditMessageCaptionParams{
293289
ChatID: telegoutil.ID(query.Message.GetChat().ID),
@@ -335,11 +331,10 @@ func processPictures(ctx context.Context, bot *telego.Bot, message telego.Messag
335331
}
336332

337333
func setArtworkR18(ctx context.Context, bot *telego.Bot, message telego.Message) {
338-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionEditArtwork) {
334+
if !CheckPermissionInGroup(ctx, message, types.PermissionEditArtwork) {
339335
telegram.ReplyMessage(bot, message, "你没有编辑作品的权限")
340336
return
341337
}
342-
343338
messageOrigin, ok := telegram.GetMessageOriginChannelArtworkPost(ctx, bot, message)
344339
if !ok {
345340
telegram.ReplyMessage(bot, message, "请回复一条频道的图片消息")
@@ -360,11 +355,10 @@ func setArtworkR18(ctx context.Context, bot *telego.Bot, message telego.Message)
360355
}
361356

362357
func setArtworkTags(ctx context.Context, bot *telego.Bot, message telego.Message) {
363-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionEditArtwork) {
358+
if !CheckPermissionInGroup(ctx, message, types.PermissionEditArtwork) {
364359
telegram.ReplyMessage(bot, message, "你没有编辑作品的权限")
365360
return
366361
}
367-
368362
messageOrigin, ok := telegram.GetMessageOriginChannelArtworkPost(ctx, bot, message)
369363
if !ok {
370364
telegram.ReplyMessage(bot, message, "请回复一条频道的图片消息")
@@ -421,7 +415,7 @@ func setArtworkTags(ctx context.Context, bot *telego.Bot, message telego.Message
421415
}
422416

423417
func batchPostArtwork(ctx context.Context, bot *telego.Bot, message telego.Message) {
424-
if !service.CheckAdminPermission(ctx, message.From.ID, types.PermissionPostArtwork) {
418+
if !CheckPermissionInGroup(ctx, message, types.PermissionPostArtwork) {
425419
telegram.ReplyMessage(bot, message, "你没有发布作品的权限")
426420
return
427421
}

cmd/version.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
)
88

99
const (
10-
Version string = "0.7.17"
10+
Version string = "0.7.18"
1111
)
1212

1313
var VersionCmd = &cobra.Command{

0 commit comments

Comments
 (0)