- /music skip, pause, resume, stop, repeat, remove, move (DJ role) - /config view, clear, toggletwitch, streamers, beta-features (server owner) - /slvl status, remove-reward; /moderation bans, timeouts; /security history - /beta is now the bot owner's DM-only command: set, off, servers, remove-server, status - betasettings service and repo methods, with integration tests Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
// Package betasettings is where the beta server, the Beta Tester role and the
|
|
// servers that opted in to beta features are read and changed. The bot polls
|
|
// the same tables, so a change here reaches the beta gate within 30 seconds.
|
|
package betasettings
|
|
|
|
import (
|
|
"context"
|
|
|
|
"velox-bot/internal/db/repos/settingsrepo"
|
|
)
|
|
|
|
type Service struct {
|
|
settings *settingsrepo.Repo
|
|
}
|
|
|
|
func New(settings *settingsrepo.Repo) *Service {
|
|
return &Service{settings: settings}
|
|
}
|
|
|
|
// Get returns the beta server and role as ID strings ("" when not set).
|
|
func (s *Service) Get(ctx context.Context) (guildID, roleID string, err error) {
|
|
return s.settings.GetBetaSettings(ctx)
|
|
}
|
|
|
|
func (s *Service) SetServer(ctx context.Context, guildID, roleID, updatedBy int64) error {
|
|
return s.settings.SetBetaServer(ctx, guildID, roleID, updatedBy)
|
|
}
|
|
|
|
func (s *Service) OptedIn(ctx context.Context) ([]string, error) {
|
|
return s.settings.ListBetaGuilds(ctx)
|
|
}
|
|
|
|
func (s *Service) IsOptedIn(ctx context.Context, guildID int64) (bool, error) {
|
|
return s.settings.IsBetaGuild(ctx, guildID)
|
|
}
|
|
|
|
func (s *Service) SetOptedIn(ctx context.Context, guildID, by int64, on bool) error {
|
|
return s.settings.SetBetaGuild(ctx, guildID, by, on)
|
|
}
|