package processor import ( "fmt" "houston/internal/processor/action" "houston/model/incident" "github.com/slack-go/slack/socketmode" "go.uber.org/zap" ) type SlashCommandProcessor struct { logger *zap.Logger socketModeClient *socketmode.Client slashCommandAction *action.SlashCommandAction } func NewSlashCommandProcessor(logger *zap.Logger, socketModeClient *socketmode.Client, incidentService *incident.Repository) *SlashCommandProcessor { return &SlashCommandProcessor{ logger: logger, socketModeClient: socketModeClient, slashCommandAction: action.NewSlashCommandAction(incidentService, logger, socketModeClient), } } func (scp *SlashCommandProcessor) ProcessSlashCommand(event socketmode.Event) { defer func() { if r := recover(); r != nil { scp.logger.Error(fmt.Sprintf("[SCP] Exception occurred: %v", r.(error))) } }() scp.slashCommandAction.PerformAction(&event) }