Files
houston-be/pkg/slack/houston/command/member_join_event.go
Shubham Kirve b974cb6bf3 TP-0000 | Initialize houston repo (#1)
* TP-0000 | intialize houston repo

* TP-0000 | intialize houston repo
2023-03-29 00:01:17 +05:30

56 lines
1.9 KiB
Go

package command
import (
"houston/pkg/postgres/query"
houston "houston/pkg/slack/houston/design"
"github.com/slack-go/slack"
"github.com/slack-go/slack/slackevents"
"github.com/slack-go/slack/socketmode"
"go.uber.org/zap"
"gorm.io/gorm"
)
type memberJoinProcessor struct {
client *socketmode.Client
db *gorm.DB
logger *zap.Logger
}
func NewMemberJoinProcessor(socketmodeClient *socketmode.Client, db *gorm.DB, logger *zap.Logger) *memberJoinProcessor {
return &memberJoinProcessor{
client: socketmodeClient,
db: db,
logger: logger,
}
}
func (mp *memberJoinProcessor) MemberJoinProcessCommand(memberJoinedChannelEvent *slackevents.MemberJoinedChannelEvent) {
mp.logger.Info("processing member join event", zap.String("channel", memberJoinedChannelEvent.Channel))
incidentEntity, err := query.FindIncidentByChannelId(mp.db, memberJoinedChannelEvent.Channel)
if err != nil {
mp.logger.Error("error in searching incident", zap.String("channel", memberJoinedChannelEvent.Channel),
zap.String("user_id", memberJoinedChannelEvent.User), zap.Error(err))
return
} else if err == nil && incidentEntity == nil {
mp.logger.Info("incident not found", zap.String("channel", memberJoinedChannelEvent.Channel),
zap.String("user_id", memberJoinedChannelEvent.User), zap.Error(err))
return
}
blocks, err := houston.IncidentSummarySection(incidentEntity, mp.db)
if err != nil {
mp.logger.Error("error in creating incident summary section inside incident",
zap.String("channel", memberJoinedChannelEvent.Channel),
zap.String("user_id", memberJoinedChannelEvent.User), zap.Error(err))
return
}
mp.logger.Info("member join block", zap.Any("blocks", blocks))
msgOption := slack.MsgOptionBlocks(blocks...)
_, err = mp.client.PostEphemeral(memberJoinedChannelEvent.Channel, memberJoinedChannelEvent.User, msgOption)
if err != nil {
mp.logger.Error("post response failed", zap.Error(err))
}
}