package processor import ( "fmt" "github.com/slack-go/slack" "github.com/slack-go/slack/socketmode" "houston/internal/processor/action" "houston/logger" ) type HelpCommandProcessor struct { socketModeClient *socketmode.Client helpCommandAction *action.HelpCommandsAction } const helpCommandProcessorLogTag = "[help_command_processor]" func NewHelpCommandProcessor( socketModeClient *socketmode.Client, ) *HelpCommandProcessor { return &HelpCommandProcessor{ socketModeClient: socketModeClient, helpCommandAction: action.NewHelpCommandsAction(socketModeClient), } } func (processor *HelpCommandProcessor) ProcessSlashCommand(event *socketmode.Event) { defer func() { if r := recover(); r != nil { logger.Error(fmt.Sprintf("%s Exception occurred: %+v", helpCommandProcessorLogTag, r.(error))) } }() cmd, ok := event.Data.(slack.SlashCommand) if !ok { logger.Error(fmt.Sprintf("%s failed to convert event data into slash command for data: %+v", helpCommandProcessorLogTag, event.Data)) return } processor.helpCommandAction.ProcessAction(cmd.UserID, cmd.ChannelID, event.Request) }