diff --git a/README.md b/README.md index 3bd92bf49..82160da10 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ To configure the Welcome Bot, edit your `config.json` file with a message you wa "com.mattermost.welcomebot": { "WelcomeMessages": [ { - "TeamName": "your-team-name", + "TeamName": "your-team-name, your-second-team-name", "DelayInSeconds": 3, "Message": [ "Your welcome message here. Each list item specifies one line in the message text." @@ -102,7 +102,7 @@ To accomplish the above, you can specify the following configuration in your `co "com.mattermost.welcomebot": { "WelcomeMessages": [ { - "TeamName": "staff", + "TeamName": "staff, management", "DelayInSeconds": 5, "Message": [ "### Welcome {{.UserDisplayName}} to the Staff {{.Team.DisplayName}} team!", diff --git a/server/command.go b/server/command.go index 6a807d1ba..8832a594b 100644 --- a/server/command.go +++ b/server/command.go @@ -87,13 +87,17 @@ func (p *Plugin) validateCommand(action string, parameters []string) string { func (p *Plugin) executeCommandPreview(teamName string, args *model.CommandArgs) { found := false for _, message := range p.getWelcomeMessages() { - if message.TeamName == teamName { - if err := p.previewWelcomeMessage(teamName, args, *message); err != nil { - p.postCommandResponse(args, "error occurred while processing greeting for team `%s`: `%s`", teamName, err) - return + var teamNamesArr = strings.Split(message.TeamName, ",") + for _, name := range teamNamesArr { + tn := strings.TrimSpace(name) + if tn == teamName { + p.postCommandResponse(args, "%s", teamName) + if err := p.previewWelcomeMessage(teamName, args, *message); err != nil { + p.postCommandResponse(args, "error occurred while processing greeting for team `%s`: `%s`", teamName, err) + return + } + found = true } - - found = true } } @@ -131,7 +135,7 @@ func (p *Plugin) executeCommandSetWelcome(args *model.CommandArgs) { return } - if channelInfo.Type == model.CHANNEL_PRIVATE { + if channelInfo.Type == model.CHANNEL_DIRECT { p.postCommandResponse(args, "welcome messages are not supported for direct channels") return } diff --git a/server/hooks.go b/server/hooks.go index c1f2ee23e..323f7905a 100644 --- a/server/hooks.go +++ b/server/hooks.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "strings" "time" "github.com/mattermost/mattermost-server/v5/mlog" @@ -20,7 +21,12 @@ func (p *Plugin) UserHasJoinedTeam(c *plugin.Context, teamMember *model.TeamMemb for _, message := range p.getWelcomeMessages() { switch message.TeamName { case data.Team.Name: - go p.processWelcomeMessage(*data, *message) + var teamNamesArr = strings.Split(message.TeamName, ",") + for _, name := range teamNamesArr { + tn := strings.TrimSpace(name) + if tn == data.Team.Name { + go p.processWelcomeMessage(*data, *message) + } case "*": go p.processWelcomeMessage(*data, *message) default: diff --git a/server/welcomebot.go b/server/welcomebot.go index 6deb0eadd..172ace265 100644 --- a/server/welcomebot.go +++ b/server/welcomebot.go @@ -57,7 +57,7 @@ func (p *Plugin) getSiteURL() string { return *config.ServiceSettings.SiteURL } -func (p *Plugin) newSampleMessageTemplate(teamName, userID string) (*MessageTemplate, error) { +func (p *Plugin) newSampleMessageTemplate(teamName string, userID string) (*MessageTemplate, error) { data := &MessageTemplate{} var err *model.AppError @@ -66,14 +66,14 @@ func (p *Plugin) newSampleMessageTemplate(teamName, userID string) (*MessageTemp return nil, fmt.Errorf("failed to query user %s: %w", userID, err) } - if data.Team, err = p.API.GetTeamByName(teamName); err != nil { + if data.Team, err = p.API.GetTeamByName(strings.ToLower(teamName)); err != nil { p.API.LogError("failed to query team", "team_name", teamName, "err", err) return nil, fmt.Errorf("failed to query team %s: %w", teamName, err) } if data.Townsquare, err = p.API.GetChannelByName(data.Team.Id, "town-square", false); err != nil { - p.API.LogError("failed to query town-square", "team_name", teamName) - return nil, fmt.Errorf("failed to query town-square %s: %w", teamName, err) + p.API.LogError("failed to query town-square", "team_name", data.Team.Name) + return nil, fmt.Errorf("failed to query town-square %s: %w", data.Team.Name, err) } if data.DirectMessage, err = p.API.GetDirectChannel(data.User.Id, p.botUserID); err != nil {