package telegram

import (
	tele "gopkg.in/telebot.v3"
)

// isAdmin 检查用户是否为管理员（配置文件或数据库）
func (b *Bot) isAdmin(userID int64) bool {
	return b.cfg.IsAdmin(userID) || b.storage.IsAdmin(userID)
}

func (b *Bot) AdminMiddleware() tele.MiddlewareFunc {
	return func(next tele.HandlerFunc) tele.HandlerFunc {
		return func(c tele.Context) error {
			// 群组中的非命令消息，非管理员直接忽略不回复
			if c.Chat().Type != tele.ChatPrivate {
				msg := c.Message()
				if msg != nil && !msg.IsService() && (msg.Text == "" || msg.Text[0] != '/') {
					if !b.isAdmin(c.Sender().ID) {
						return nil // 静默忽略
					}
				}
			}

			if !b.isAdmin(c.Sender().ID) {
				return c.Reply("⛔ 无权限访问")
			}
			return next(c)
		}
	}
}

// SuperAdminMiddleware 超级管理员中间件（仅配置文件中的管理员）
func (b *Bot) SuperAdminMiddleware() tele.MiddlewareFunc {
	return func(next tele.HandlerFunc) tele.HandlerFunc {
		return func(c tele.Context) error {
			if !b.cfg.IsSuperAdmin(c.Sender().ID) {
				return c.Reply("⛔ 需要超级管理员权限")
			}
			return next(c)
		}
	}
}
