залил

This commit is contained in:
2026-04-15 08:00:15 +03:00
commit 5549b3545e
51 changed files with 8073 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
package notifications
import (
"stream-bot/internal/audio" // вместо player
"stream-bot/internal/db"
"sync"
)
type Manager struct {
mu sync.RWMutex
settings map[string]*db.NotificationSetting
}
func NewManager() (*Manager, error) {
m := &Manager{
settings: make(map[string]*db.NotificationSetting),
}
if err := m.load(); err != nil {
return nil, err
}
return m, nil
}
func (m *Manager) load() error {
settings, err := db.GetAllNotificationSettings()
if err != nil {
return err
}
m.mu.Lock()
defer m.mu.Unlock()
for _, s := range settings {
m.settings[s.EventName] = &s
}
return nil
}
func (m *Manager) PlayEvent(eventName string) error {
m.mu.RLock()
setting, ok := m.settings[eventName]
m.mu.RUnlock()
if !ok || !setting.Enabled || setting.SoundFile == "" {
return nil
}
// Используем audio.PlayWithVolume с громкостью из настроек
return audio.PlayWithVolume(setting.SoundFile, setting.Volume)
}
func (m *Manager) UpdateSetting(ns *db.NotificationSetting) error {
if err := db.SaveNotificationSetting(ns); err != nil {
return err
}
m.mu.Lock()
m.settings[ns.EventName] = ns
m.mu.Unlock()
return nil
}
func (m *Manager) GetAll() []db.NotificationSetting {
m.mu.RLock()
defer m.mu.RUnlock()
result := make([]db.NotificationSetting, 0, len(m.settings))
for _, v := range m.settings {
result = append(result, *v)
}
return result
}