39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package houston
|
|
|
|
import (
|
|
"houston/pkg/postgres/query"
|
|
houston "houston/pkg/slack/houston/design"
|
|
|
|
"github.com/slack-go/slack"
|
|
"github.com/slack-go/slack/socketmode"
|
|
"go.uber.org/zap"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func HoustonMainCommand(db *gorm.DB, client *socketmode.Client, logger *zap.Logger, evt *socketmode.Event) {
|
|
cmd, ok := evt.Data.(slack.SlashCommand)
|
|
logger.Info("processing houston command", zap.Any("payload", cmd))
|
|
if !ok {
|
|
logger.Error("event data to slash command conversion failed", zap.Any("data", evt))
|
|
return
|
|
}
|
|
|
|
//TODO - DOES NOT THROW ERROR IF SAME SLACK ID IS PRESENT MULTIPLE TIMES
|
|
result, err := query.FindIncidentByChannelId(db, cmd.ChannelID)
|
|
if err != nil {
|
|
logger.Error("FindIncidentBySlackChannelId errors",
|
|
zap.String("channel_id", cmd.ChannelID), zap.String("channel", cmd.ChannelName),
|
|
zap.String("user_id", cmd.UserID), zap.Error(err))
|
|
return
|
|
}
|
|
|
|
if result != nil {
|
|
logger.Info("Result", zap.String("result", result.IncidentName))
|
|
payload := houston.OptionsBlock()
|
|
client.Ack(*evt.Request, payload)
|
|
}
|
|
|
|
payload := houston.ButtonDesign()
|
|
client.Ack(*evt.Request, payload)
|
|
}
|