34 lines
944 B
Go
34 lines
944 B
Go
package processor
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/slack-go/slack/socketmode"
|
|
"go.uber.org/zap"
|
|
"houston/internal/processor/action"
|
|
"houston/pkg/postgres/service/incident"
|
|
)
|
|
|
|
type SlashCommandProcessor struct {
|
|
logger *zap.Logger
|
|
socketModeClient *socketmode.Client
|
|
slashCommandAction *action.SlashCommandAction
|
|
}
|
|
|
|
func NewSlashCommandProcessor(logger *zap.Logger, socketModeClient *socketmode.Client, incidentService *incident.Service) *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)
|
|
}
|