diff --git a/backend/gestion/db/db_notifications.go b/backend/gestion/db/db_notifications.go
index 05165ab7..45dc0b55 100644
--- a/backend/gestion/db/db_notifications.go
+++ b/backend/gestion/db/db_notifications.go
@@ -24,7 +24,7 @@ func (d *Database) NotifyClient(username string, commandID int, notifType, messa
Redis.LPush(RedisCtx, notifKey, notifJSON)
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
- if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
+ if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
if chatID, ok, err := d.GetClientTelegramChatID(username); err == nil && ok {
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("đź”” Notification\n\n%s", message))
}
@@ -50,7 +50,7 @@ func (d *Database) NotifyLivreur(username string, commandID int, notifType, mess
Redis.LPush(RedisCtx, notifKey, notifJSON)
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
- if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
+ if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
if chatID, ok, err := d.GetUserTelegramChatID(username); err == nil && ok {
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("đź”” Notification\n\n%s", message))
}
@@ -87,7 +87,7 @@ func (d *Database) NotifyAllAdminCabine(commandID int, clientUsername, deliveryA
Redis.LPush(RedisCtx, notifKey, notifJSON)
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
- if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
+ if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
capturedChatID := chatID
capturedMsg := msg
@@ -126,7 +126,7 @@ func (d *Database) NotifyAllAdminCabineAlert(alertID int, livreurUsername, alert
Redis.LPush(RedisCtx, notifKey, notifJSON)
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
- if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
+ if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
capturedChatID := chatID
capturedBody := body
diff --git a/backend/gestion/db/db_settings.go b/backend/gestion/db/db_settings.go
index 41fdaaa1..508df618 100644
--- a/backend/gestion/db/db_settings.go
+++ b/backend/gestion/db/db_settings.go
@@ -142,6 +142,8 @@ func (d *Database) GetSettings() (models.AppSettings, error) {
settings.TelegramBotToken = row.Value
case "telegram_bot_username":
settings.TelegramBotUsername = row.Value
+ case "telegram_notifications_enabled":
+ settings.TelegramNotificationsEnabled = row.Value == "true"
case "delivery_mode":
var mode models.DeliveryModeConfig
if err := json.Unmarshal([]byte(row.Value), &mode); err == nil {
@@ -223,6 +225,7 @@ func (d *Database) UpdateSettings(s models.AppSettings) error {
{"postal_zones", string(zonesJSON)},
{"telegram_bot_token", s.TelegramBotToken},
{"telegram_bot_username", s.TelegramBotUsername},
+ {"telegram_notifications_enabled", boolStr(s.TelegramNotificationsEnabled)},
{"delivery_mode", string(deliveryModeJSON)},
}
diff --git a/backend/gestion/handlers/settings.go b/backend/gestion/handlers/settings.go
index f4652039..c78a1aaf 100644
--- a/backend/gestion/handlers/settings.go
+++ b/backend/gestion/handlers/settings.go
@@ -40,9 +40,10 @@ func GetPublicSettings(c *gin.Context) {
"referral_enabled": settings.ReferralEnabled,
"referral_amount": settings.ReferralAmount,
"delivery_schedule": settings.DeliverySchedule,
- "crypto_payment_enabled": settings.CryptoPaymentEnabled,
- "crypto_only": settings.CryptoOnly,
- "nowpayments_currencies": settings.NowPaymentsCurrencies,
+ "crypto_payment_enabled": settings.CryptoPaymentEnabled,
+ "crypto_only": settings.CryptoOnly,
+ "nowpayments_currencies": settings.NowPaymentsCurrencies,
+ "telegram_notifications_enabled": settings.TelegramNotificationsEnabled,
})
}
@@ -79,6 +80,7 @@ func UpdateSettings(c *gin.Context) {
// Recharger le service Telegram si le token/username a changé
if services.TelegramBot != nil {
services.TelegramBot.Reload(req.TelegramBotToken, req.TelegramBotUsername)
+ services.TelegramBot.SetNotificationsEnabled(req.TelegramNotificationsEnabled)
if req.TelegramBotToken != "" {
log.Printf("✅ [SETTINGS] Service Telegram rechargé (username: %s)", req.TelegramBotUsername)
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
diff --git a/backend/gestion/main.go b/backend/gestion/main.go
index 346f0704..9bce433a 100644
--- a/backend/gestion/main.go
+++ b/backend/gestion/main.go
@@ -58,6 +58,7 @@ func main() {
if dbSettings, err := database.GetSettings(); err == nil {
telegramService.Reload(dbSettings.TelegramBotToken, dbSettings.TelegramBotUsername)
+ telegramService.SetNotificationsEnabled(dbSettings.TelegramNotificationsEnabled)
if dbSettings.TelegramBotToken != "" {
log.Printf("✅ [TELEGRAM] Config chargée depuis la DB (username: %s)", dbSettings.TelegramBotUsername)
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
diff --git a/backend/gestion/models/settings.go b/backend/gestion/models/settings.go
index d714b40b..933a601d 100644
--- a/backend/gestion/models/settings.go
+++ b/backend/gestion/models/settings.go
@@ -75,7 +75,8 @@ type AppSettings struct {
NowPaymentsCurrencies []string `json:"nowpayments_currencies"` // cryptos acceptées (ex: ["btc","eth","ltc"])
DeliverySchedule DeliverySchedule `json:"delivery_schedule"` // horaires de livraison par jour
PostalZones []PostalZone `json:"postal_zones"` // zones de livraison avec minimum de commande
- TelegramBotToken string `json:"telegram_bot_token"` // token du bot Telegram (BotFather)
- TelegramBotUsername string `json:"telegram_bot_username"` // username du bot (sans @)
- DeliveryMode DeliveryModeConfig `json:"delivery_mode"` // mode d'assignation des livreurs
+ TelegramBotToken string `json:"telegram_bot_token"` // token du bot Telegram (BotFather)
+ TelegramBotUsername string `json:"telegram_bot_username"` // username du bot (sans @)
+ TelegramNotificationsEnabled bool `json:"telegram_notifications_enabled"` // activer/désactiver les notifications Telegram
+ DeliveryMode DeliveryModeConfig `json:"delivery_mode"` // mode d'assignation des livreurs
}
diff --git a/backend/gestion/services/telegram.go b/backend/gestion/services/telegram.go
index f3a0042d..dd157f75 100644
--- a/backend/gestion/services/telegram.go
+++ b/backend/gestion/services/telegram.go
@@ -14,9 +14,10 @@ import (
var TelegramBot *TelegramService
type TelegramService struct {
- botToken string
- webhookSecret string
- BotUsername string
+ botToken string
+ webhookSecret string
+ BotUsername string
+ notificationsEnabled bool
}
func NewTelegramService() *TelegramService {
@@ -33,6 +34,14 @@ func (t *TelegramService) IsConfigured() bool {
return t.botToken != ""
}
+func (t *TelegramService) IsNotificationsEnabled() bool {
+ return t.notificationsEnabled
+}
+
+func (t *TelegramService) SetNotificationsEnabled(enabled bool) {
+ t.notificationsEnabled = enabled
+}
+
// Reload met à jour le token et le username (appelé après UpdateSettings)
func (t *TelegramService) Reload(token, username string) {
if token != "" {