diff options
author | Jesse Hallam <jesse.hallam@gmail.com> | 2018-07-13 10:29:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 10:29:50 -0400 |
commit | 17f211c393772f30922bac595592e3fe60c2ef25 (patch) | |
tree | 4f8dfbe7949022d5da2de2db6d7b762e74fb4582 /plugin/example_help_test.go | |
parent | 5ddb08dcb47f938c9ac3a3e6338d9b3cc61c20a7 (diff) | |
download | chat-17f211c393772f30922bac595592e3fe60c2ef25.tar.gz chat-17f211c393772f30922bac595592e3fe60c2ef25.tar.bz2 chat-17f211c393772f30922bac595592e3fe60c2ef25.zip |
MM-11292: clean up plugins GoDoc (#9109)
* clean up plugins GoDoc:
- eliminate plugin.NewBlankContext() as unnecessary
- export ValidIdRegex as a string vs. the less readable var
- add/update various documentation strings
- hide everything by default, except where used by client plugins or the mattermost-server. The exception to this rule are the `*(Args|Returns)` structs which must be public for go-plugin, but are now prefixed with `Z_` with a warning not to use.
- include a top-level example to get plugin authors started
This is not a breaking change for existing plugins compiled against
plugins-v2.
* remove commented out ServeHTTPResponseWriter
* update examples to match developer docs
* add missing plugin/doc.go license header
Diffstat (limited to 'plugin/example_help_test.go')
-rw-r--r-- | plugin/example_help_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/plugin/example_help_test.go b/plugin/example_help_test.go new file mode 100644 index 000000000..3f9be9a20 --- /dev/null +++ b/plugin/example_help_test.go @@ -0,0 +1,71 @@ +package plugin_test + +import ( + "strings" + + "github.com/mattermost/mattermost-server/model" + "github.com/mattermost/mattermost-server/plugin" +) + +type HelpPlugin struct { + plugin.MattermostPlugin + + TeamName string + ChannelName string + + channelId string +} + +func (p *HelpPlugin) OnConfigurationChange() error { + // Reuse the default implementation of OnConfigurationChange to automatically load the + // required TeamName and ChannelName. + if err := p.MattermostPlugin.OnConfigurationChange(); err != nil { + p.API.LogError(err.Error()) + return nil + } + + team, err := p.API.GetTeamByName(p.TeamName) + if err != nil { + p.API.LogError("failed to find team", "team_name", p.TeamName) + return nil + } + + channel, err := p.API.GetChannelByName(p.ChannelName, team.Id) + if err != nil { + p.API.LogError("failed to find channel", "channel_name", p.ChannelName) + return nil + } + + p.channelId = channel.Id + + return nil +} + +func (p *HelpPlugin) MessageHasBeenPosted(c *plugin.Context, post *model.Post) { + // Ignore posts not in the configured channel + if post.ChannelId != p.channelId { + return + } + + // Ignore posts this plugin made. + if sentByPlugin, _ := post.Props["sent_by_plugin"].(bool); sentByPlugin { + return + } + + // Ignore posts without a plea for help. + if !strings.Contains(post.Message, "help") { + return + } + + p.API.SendEphemeralPost(post.UserId, &model.Post{ + ChannelId: p.channelId, + Message: "You asked for help? Checkout https://about.mattermost.com/help/", + Props: map[string]interface{}{ + "sent_by_plugin": true, + }, + }) +} + +func Example_helpPlugin() { + plugin.ClientMain(&HelpPlugin{}) +} |