bot

package
v1.32.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func JSON

func JSON(ref interface{}) string

JSON .

func JSONBlock

func JSONBlock(ref interface{}) string

JSONBlock .

Types

type Bot

type Bot struct {
	// contains filtered or unexported fields
}

Bot stores the information for the plugin configuration, and implements the Poster and Logger interfaces.

func New

func New(api *pluginapi.Client, botUserID string, configService config.Service, telemetry Telemetry) *Bot

New creates a new bot poster/logger.

func (*Bot) DM

func (b *Bot) DM(userID string, post *model.Post) error

DM sends a DM from the plugin bot to the specified user

func (*Bot) Debugf

func (b *Bot) Debugf(format string, args ...interface{})

Debugf .

func (*Bot) EphemeralPost

func (b *Bot) EphemeralPost(userID, channelID string, post *model.Post)

EphemeralPost sends an ephemeral message to a user

func (*Bot) EphemeralPostWithAttachments

func (b *Bot) EphemeralPostWithAttachments(userID, channelID, postID string, attachments []*model.SlackAttachment, format string, args ...interface{})

EphemeralPostWithAttachments sends an ephemeral message to a user with Slack attachments.

func (*Bot) Errorf

func (b *Bot) Errorf(format string, args ...interface{})

Errorf .

func (*Bot) Infof

func (b *Bot) Infof(format string, args ...interface{})

Infof .

func (*Bot) IsFromPoster added in v1.26.0

func (b *Bot) IsFromPoster(post *model.Post) bool

func (*Bot) NotifyAdmins

func (b *Bot) NotifyAdmins(messageType, authorUserID string, isTeamEdition bool) error

func (*Bot) Post

func (b *Bot) Post(post *model.Post) error

Post posts a custom post. The Message and ChannelId fields should be provided in the specified post

func (*Bot) PostCustomMessageWithAttachments

func (b *Bot) PostCustomMessageWithAttachments(channelID, customType string, attachments []*model.SlackAttachment, format string, args ...interface{}) (*model.Post, error)

func (*Bot) PostMessage

func (b *Bot) PostMessage(channelID, format string, args ...interface{}) (*model.Post, error)

PostMessage posts a message to a specified channel.

func (*Bot) PostMessageToThread

func (b *Bot) PostMessageToThread(rootPostID string, post *model.Post) error

PostMessageToThread posts a message to a specified thread identified by rootPostID. If the rootPostID is blank, or the rootPost is deleted, it will create a standalone post. The overwritten post's RootID will be the correct rootID (save that if you want to continue the thread).

func (*Bot) PostMessageWithAttachments

func (b *Bot) PostMessageWithAttachments(channelID string, attachments []*model.SlackAttachment, format string, args ...interface{}) (*model.Post, error)

PostMessageWithAttachments posts a message with slack attachments to channelID. Returns the post id if posting was successful. Often used to include post actions.

func (*Bot) PromptForFeedback

func (b *Bot) PromptForFeedback(userID string) error

func (*Bot) PublishWebsocketEventToChannel

func (b *Bot) PublishWebsocketEventToChannel(event string, payload interface{}, channelID string)

PublishWebsocketEventToChannel sends a websocket event with payload to channelID

func (*Bot) PublishWebsocketEventToTeam

func (b *Bot) PublishWebsocketEventToTeam(event string, payload interface{}, teamID string)

PublishWebsocketEventToTeam sends a websocket event with payload to teamID

func (*Bot) PublishWebsocketEventToUser

func (b *Bot) PublishWebsocketEventToUser(event string, payload interface{}, userID string)

PublishWebsocketEventToUser sends a websocket event with payload to userID

func (*Bot) SystemEphemeralPost added in v1.26.0

func (b *Bot) SystemEphemeralPost(userID, channelID string, post *model.Post)

SystemEphemeralPost sends an ephemeral message to a user authored by the System

func (*Bot) Timed

func (b *Bot) Timed() Logger

Timed .

func (*Bot) Warnf

func (b *Bot) Warnf(format string, args ...interface{})

Warnf .

func (*Bot) With

func (b *Bot) With(logContext LogContext) Logger

With .

type LogContext

type LogContext map[string]interface{}

LogContext .

type Logger

type Logger interface {
	With(LogContext) Logger
	Timed() Logger
	Debugf(format string, args ...interface{})
	Errorf(format string, args ...interface{})
	Infof(format string, args ...interface{})
	Warnf(format string, args ...interface{})
}

Logger interface - a logging system that will tee logs to a DM channel.

type NilLogger

type NilLogger struct{}

NilLogger Nil logger.

func (*NilLogger) Debugf

func (l *NilLogger) Debugf(format string, args ...interface{})

Debugf .

func (*NilLogger) Errorf

func (l *NilLogger) Errorf(format string, args ...interface{})

Errorf .

func (*NilLogger) Infof

func (l *NilLogger) Infof(format string, args ...interface{})

Infof .

func (*NilLogger) Timed

func (l *NilLogger) Timed() Logger

Timed .

func (*NilLogger) Warnf

func (l *NilLogger) Warnf(format string, args ...interface{})

Warnf .

func (*NilLogger) With

func (l *NilLogger) With(logContext LogContext) Logger

With .

type Poster

type Poster interface {
	// Post posts a custom post, which should provide the Message and ChannelId fields
	Post(post *model.Post) error

	// PostMessage posts a simple message to channelID. Returns the post id if posting was successful.
	PostMessage(channelID, format string, args ...interface{}) (*model.Post, error)

	// PostMessageToThread posts a message to a specified channel and thread identified by rootPostID.
	// If the rootPostID is blank, or the rootPost is deleted, it will create a standalone post. The
	// returned post's RootID (or ID, if there was no root post) should be used as the rootID for
	// future use (i.e., save that if you want to continue the thread).
	PostMessageToThread(rootPostID string, post *model.Post) error

	// PostMessageWithAttachments posts a message with slack attachments to channelID. Returns the post id if
	// posting was successful. Often used to include post actions.
	PostMessageWithAttachments(channelID string, attachments []*model.SlackAttachment, format string, args ...interface{}) (*model.Post, error)

	// PostCustomMessageWithAttachments posts a custom message with the specified type. Falling back to attachments for mobile.
	PostCustomMessageWithAttachments(channelID, customType string, attachments []*model.SlackAttachment, format string, args ...interface{}) (*model.Post, error)

	// DM posts a DM from the plugin bot to the specified user
	DM(userID string, post *model.Post) error

	// EphemeralPost sends an ephemeral message to a user.
	EphemeralPost(userID, channelID string, post *model.Post)

	// SystemEphemeralPost sends an ephemeral message to a user authored by the System.
	SystemEphemeralPost(userID, channelID string, post *model.Post)

	// EphemeralPostWithAttachments sends an ephemeral message to a user with Slack attachments.
	EphemeralPostWithAttachments(userID, channelID, rootPostID string, attachments []*model.SlackAttachment, format string, args ...interface{})

	// PublishWebsocketEventToTeam sends a websocket event with payload to teamID.
	PublishWebsocketEventToTeam(event string, payload interface{}, teamID string)

	// PublishWebsocketEventToChannel sends a websocket event with payload to channelID.
	PublishWebsocketEventToChannel(event string, payload interface{}, channelID string)

	// PublishWebsocketEventToUser sends a websocket event with payload to userID.
	PublishWebsocketEventToUser(event string, payload interface{}, userID string)

	// NotifyAdmins sends a DM with the message to each admins
	NotifyAdmins(message, authorUserID string, isTeamEdition bool) error

	// PromptForFeedback sends a DM as the feedbackbot to the given user, prompting for product feedback.
	PromptForFeedback(userID string) error

	// IsFromPoster returns whether the provided post was sent by this poster
	IsFromPoster(post *model.Post) bool
}

Poster interface - a small subset of the plugin posting API.

type Telemetry

type Telemetry interface {
	NotifyAdmins(userID string, action string)
	StartTrial(userID string, action string)
}

type TestLogger

type TestLogger struct {
	testing.TB
	// contains filtered or unexported fields
}

TestLogger test logger.

func (*TestLogger) Debugf

func (l *TestLogger) Debugf(format string, args ...interface{})

Debugf .

func (*TestLogger) Errorf

func (l *TestLogger) Errorf(format string, args ...interface{})

Errorf .

func (*TestLogger) Infof

func (l *TestLogger) Infof(format string, args ...interface{})

Infof .

func (*TestLogger) Timed

func (l *TestLogger) Timed() Logger

Timed .

func (*TestLogger) Warnf

func (l *TestLogger) Warnf(format string, args ...interface{})

Warnf .

func (*TestLogger) With

func (l *TestLogger) With(logContext LogContext) Logger

With .

Directories

Path Synopsis
Package mock_bot is a generated GoMock package.
Package mock_bot is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL