2512-есть Maintenance режим, но бот всё равно отвечает фульно

This commit is contained in:
2026-01-25 06:46:05 +03:00
parent 817e958646
commit 7d2ffb54b5
7 changed files with 120 additions and 9 deletions

View File

@@ -17,7 +17,7 @@ import (
)
// AuthMiddleware проверяет initData от Telegram
func AuthMiddleware(accountRepo account.Repository, botToken string) gin.HandlerFunc {
func AuthMiddleware(accountRepo account.Repository, botToken string, maintenanceMode bool, devIDs []int64) gin.HandlerFunc {
return func(c *gin.Context) {
// 1. Извлекаем данные авторизации
authHeader := c.GetHeader("Authorization")
@@ -55,6 +55,21 @@ func AuthMiddleware(accountRepo account.Repository, botToken string) gin.Handler
return
}
// Проверка режима обслуживания: если включен, разрешаем доступ только разработчикам
if maintenanceMode {
isDev := false
for _, devID := range devIDs {
if tgID == devID {
isDev = true
break
}
}
if !isDev {
c.AbortWithStatusJSON(503, gin.H{"error": "maintenance_mode", "message": "Сервис на обслуживании"})
return
}
}
// 4. Ищем пользователя в БД
user, err := accountRepo.GetUserByTelegramID(tgID)
if err != nil {

View File

@@ -928,6 +928,25 @@ func (bot *Bot) renderDeleteServerMenu(c tele.Context) error {
return c.EditOrSend("⚙️ <b>Управление серверами</b>\n\nЗдесь вы можете удалить сервер или пригласить сотрудников.", menu, tele.ModeHTML)
}
// NotifyDevs отправляет фото разработчикам для отладки
func (bot *Bot) NotifyDevs(devIDs []int64, photoPath string, serverName string, serverID string) {
// Формируем подпись для фото
caption := fmt.Sprintf("🛠 **Debug Capture**\nServer: %s (`%s`)\nFile: %s", serverName, serverID, photoPath)
// В цикле отправляем фото каждому разработчику
for _, id := range devIDs {
photo := &tele.Photo{
File: tele.FromDisk(photoPath),
Caption: caption,
}
// Отправляем фото пользователю
_, err := bot.b.Send(&tele.User{ID: id}, photo)
if err != nil {
logger.Log.Error("Failed to send debug photo", zap.Int64("userID", id), zap.Error(err))
}
}
}
func parseUUID(s string) uuid.UUID {
id, _ := uuid.Parse(s)
return id