slack

package module
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2022 License: BSD-2-Clause Imports: 30 Imported by: 0

README

Slack API in Go Go Reference

This is the original Slack library for Go created by Norberto Lopes, transferred to a GitHub organization.

You can also chat with us on the #JongsooKeum, #JongsooKeum-ja Slack channel on the Gophers Slack.

logo

This library supports most if not all of the api.slack.com REST calls, as well as the Real-Time Messaging protocol over websocket, in a fully managed way.

Project Status

There is currently no major version released. Therefore, minor version releases may include backward incompatible changes.

See CHANGELOG.md or Releases for more information about the changes.

Installing

go get
$ go get -u github.com/JongsooKeum/slack

Example

Getting all groups
import (
	"fmt"

	"github.com/JongsooKeum/slack"
)

func main() {
	api := slack.New("YOUR_TOKEN_HERE")
	// If you set debugging, it will log all requests to the console
	// Useful when encountering issues
	// slack.New("YOUR_TOKEN_HERE", slack.OptionDebug(true))
	groups, err := api.GetUserGroups(slack.GetUserGroupsOptionIncludeUsers(false))
	if err != nil {
		fmt.Printf("%s\n", err)
		return
	}
	for _, group := range groups {
		fmt.Printf("ID: %s, Name: %s\n", group.ID, group.Name)
	}
}
Getting User Information
import (
    "fmt"

    "github.com/JongsooKeum/slack"
)

func main() {
    api := slack.New("YOUR_TOKEN_HERE")
    user, err := api.GetUserInfo("U023BECGF")
    if err != nil {
	    fmt.Printf("%s\n", err)
	    return
    }
    fmt.Printf("ID: %s, Fullname: %s, Email: %s\n", user.ID, user.Profile.RealName, user.Profile.Email)
}

Minimal Socket Mode usage:

See https://github.com/JongsooKeum/slack/blob/master/examples/socketmode/socketmode.go

Minimal RTM usage:

As mentioned in https://api.slack.com/rtm - for most applications, Socket Mode is a better way to communicate with Slack.

See https://github.com/JongsooKeum/slack/blob/master/examples/websocket/websocket.go

Minimal EventsAPI usage:

See https://github.com/JongsooKeum/slack/blob/master/examples/eventsapi/events.go

Socketmode Event Handler (Experimental)

When using socket mode, dealing with an event can be pretty lengthy as it requires you to route the event to the right place.

Instead, you can use SocketmodeHandler much like you use an HTTP handler to register which event you would like to listen to and what callback function will process that event when it occurs.

See ./examples/socketmode_handler/socketmode_handler.go

Contributing

You are more than welcome to contribute to this project. Fork and make a Pull Request, or create an Issue if you see any problem.

Before making any Pull Request please run the following:

make pr-prep

This will check/update code formatting, linting and then run all tests

License

BSD 2 Clause license

Documentation

Index

Examples

Constants

View Source
const (
	METCheckboxGroups MessageElementType = "checkboxes"
	METImage          MessageElementType = "image"
	METButton         MessageElementType = "button"
	METOverflow       MessageElementType = "overflow"
	METDatepicker     MessageElementType = "datepicker"
	METTimepicker     MessageElementType = "timepicker"
	METPlainTextInput MessageElementType = "plain_text_input"
	METRadioButtons   MessageElementType = "radio_buttons"

	MixedElementImage MixedElementType = "mixed_image"
	MixedElementText  MixedElementType = "mixed_text"

	OptTypeStatic        string = "static_select"
	OptTypeExternal      string = "external_select"
	OptTypeUser          string = "users_select"
	OptTypeConversations string = "conversations_select"
	OptTypeChannels      string = "channels_select"

	MultiOptTypeStatic        string = "multi_static_select"
	MultiOptTypeExternal      string = "multi_external_select"
	MultiOptTypeUser          string = "multi_users_select"
	MultiOptTypeConversations string = "multi_conversations_select"
	MultiOptTypeChannels      string = "multi_channels_select"
)
View Source
const (
	MarkdownType  = "mrkdwn"
	PlainTextType = "plain_text"
)

blockObject object types

View Source
const (
	DEFAULT_MESSAGE_USERNAME         = ""
	DEFAULT_MESSAGE_REPLY_BROADCAST  = false
	DEFAULT_MESSAGE_ASUSER           = false
	DEFAULT_MESSAGE_PARSE            = ""
	DEFAULT_MESSAGE_THREAD_TIMESTAMP = ""
	DEFAULT_MESSAGE_LINK_NAMES       = 0
	DEFAULT_MESSAGE_UNFURL_LINKS     = false
	DEFAULT_MESSAGE_UNFURL_MEDIA     = true
	DEFAULT_MESSAGE_ICON_URL         = ""
	DEFAULT_MESSAGE_ICON_EMOJI       = ""
	DEFAULT_MESSAGE_MARKDOWN         = true
	DEFAULT_MESSAGE_ESCAPE_TEXT      = true
)
View Source
const (
	ErrAlreadyDisconnected  = errorsx.String("Invalid call to Disconnect - Slack API is already disconnected")
	ErrRTMDisconnected      = errorsx.String("disconnect received while trying to connect")
	ErrRTMGoodbye           = errorsx.String("goodbye detected")
	ErrRTMDeadman           = errorsx.String("deadman switch triggered")
	ErrParametersMissing    = errorsx.String("received empty parameters")
	ErrBlockIDNotUnique     = errorsx.String("Block ID needs to be unique")
	ErrInvalidConfiguration = errorsx.String("invalid configuration")
	ErrMissingHeaders       = errorsx.String("missing headers")
	ErrExpiredTimestamp     = errorsx.String("timestamp is too old")
)

Errors returned by various methods.

View Source
const (
	// Add here the defaults in the siten
	DEFAULT_FILES_USER        = ""
	DEFAULT_FILES_CHANNEL     = ""
	DEFAULT_FILES_TS_FROM     = 0
	DEFAULT_FILES_TS_TO       = -1
	DEFAULT_FILES_TYPES       = "all"
	DEFAULT_FILES_COUNT       = 100
	DEFAULT_FILES_PAGE        = 1
	DEFAULT_FILES_SHOW_HIDDEN = false
)
View Source
const (
	DEFAULT_HISTORY_LATEST    = ""
	DEFAULT_HISTORY_OLDEST    = "0"
	DEFAULT_HISTORY_COUNT     = 100
	DEFAULT_HISTORY_INCLUSIVE = false
	DEFAULT_HISTORY_UNREADS   = false
)
View Source
const (
	InteractionTypeDialogCancellation = InteractionType("dialog_cancellation")
	InteractionTypeDialogSubmission   = InteractionType("dialog_submission")
	InteractionTypeDialogSuggestion   = InteractionType("dialog_suggestion")
	InteractionTypeInteractionMessage = InteractionType("interactive_message")
	InteractionTypeMessageAction      = InteractionType("message_action")
	InteractionTypeBlockActions       = InteractionType("block_actions")
	InteractionTypeBlockSuggestion    = InteractionType("block_suggestion")
	InteractionTypeViewSubmission     = InteractionType("view_submission")
	InteractionTypeViewClosed         = InteractionType("view_closed")
	InteractionTypeShortcut           = InteractionType("shortcut")
	InteractionTypeWorkflowStepEdit   = InteractionType("workflow_step_edit")
)

Types of interactions that can be received.

View Source
const (
	TYPE_MESSAGE      = "message"
	TYPE_FILE         = "file"
	TYPE_FILE_COMMENT = "file_comment"
	TYPE_CHANNEL      = "channel"
	TYPE_IM           = "im"
	TYPE_GROUP        = "group"
)
View Source
const (
	MsgSubTypeBotMessage                = "bot_message"                 // [Events API, RTM] A message was posted by an integration
	MsgSubTypeMeMessage                 = "me_message"                  // [Events API, RTM] A /me message was sent
	MsgSubTypeMessageChanged            = "message_changed"             // [Events API, RTM] A message was changed
	MsgSubTypeMessageDeleted            = "message_deleted"             // [Events API, RTM] A message was deleted
	MsgSubTypeMessageReplied            = "message_replied"             // [Events API, RTM] A message thread received a reply
	MsgSubTypeReplyBroadcast            = "reply_broadcast"             // @Deprecated (No longer served) A message thread's reply was broadcast to a channel
	MsgSubTypeThreadBroadcast           = "thread_broadcast"            // [Events API, RTM] A message thread's reply was broadcast to a channel
	MsgSubTypeChannelJoin               = "channel_join"                // [Events API, RTM] A member joined a channel
	MsgSubTypeChannelLeave              = "channel_leave"               // [Events API, RTM] A member left a channel
	MsgSubTypeChannelTopic              = "channel_topic"               // [Events API, RTM] A channel topic was updated
	MsgSubTypeChannelPurpose            = "channel_purpose"             // [Events API, RTM] A channel purpose was updated
	MsgSubTypeChannelName               = "channel_name"                // [Events API, RTM] A channel was renamed
	MsgSubTypeChannelArchive            = "channel_archive"             // [Events API, RTM] A channel was archived
	MsgSubTypeChannelUnarchive          = "channel_unarchive"           // [Events API, RTM] A channel was unarchived
	MsgSubTypeGroupJoin                 = "group_join"                  // [RTM] A member joined a group
	MsgSubTypeGroupLeave                = "group_leave"                 // [RTM] A member left a group
	MsgSubTypeGroupTopic                = "group_topic"                 // [RTM] A group topic was updated
	MsgSubTypeGroupPurpose              = "group_purpose"               // [RTM] A group purpose was updated
	MsgSubTypeGroupName                 = "group_name"                  // [RTM] A group was renamed
	MsgSubTypeGroupArchive              = "group_archive"               // [RTM] A group was archived
	MsgSubTypeGroupUnarchive            = "group_unarchive"             // [RTM] A group was unarchived
	MsgSubTypeFileShare                 = "file_share"                  // [Events API, RTM] A file was shared into a channel
	MsgSubTypeFileComment               = "file_comment"                // [RTM] A comment was added to a file
	MsgSubTypeGileMention               = "file_mention"                // [RTM] A file was mentioned in a channel
	MsgSubTypePinnedItem                = "pinned_item"                 // [RTM] An item was pinned in a channel
	MsgSubTypeUnpinnedItem              = "unpinned_item"               // [RTM] An item was unpinned from a channel
	MsgSubTypeEkmAccessDenied           = "ekm_access_denied"           // [Events API, RTM] Message content redacted due to Enterprise Key Management (EKM)
	MsgSubTypeChannelPostingPermissions = "channel_posting_permissions" // [Events API, RTM] The posting permissions for a channel changed
)

Msg SubTypes (https://api.slack.com/events/message)

View Source
const (
	// ResponseTypeInChannel in channel response for slash commands.
	ResponseTypeInChannel = "in_channel"
	// ResponseTypeEphemeral ephemeral response for slash commands.
	ResponseTypeEphemeral = "ephemeral"
)
View Source
const (
	DEFAULT_REACTIONS_USER  = ""
	DEFAULT_REACTIONS_COUNT = 100
	DEFAULT_REACTIONS_PAGE  = 1
	DEFAULT_REACTIONS_FULL  = false
)
View Source
const (
	DEFAULT_REMOTE_FILES_CHANNEL = ""
	DEFAULT_REMOTE_FILES_TS_FROM = 0
	DEFAULT_REMOTE_FILES_TS_TO   = -1
	DEFAULT_REMOTE_FILES_COUNT   = 100
)
View Source
const (
	DEFAULT_SEARCH_SORT      = "score"
	DEFAULT_SEARCH_SORT_DIR  = "desc"
	DEFAULT_SEARCH_HIGHLIGHT = false
	DEFAULT_SEARCH_COUNT     = 20
	DEFAULT_SEARCH_PAGE      = 1
)
View Source
const (
	// APIURL of the slack api.
	APIURL = "https://slack.com/api/"
	// WEBAPIURLFormat ...
	WEBAPIURLFormat = "https://%s.slack.com/api/users.admin.%s?t=%d"
)
View Source
const (
	DEFAULT_STARS_USER  = ""
	DEFAULT_STARS_COUNT = 100
	DEFAULT_STARS_PAGE  = 1
)
View Source
const (
	DEFAULT_LOGINS_COUNT = 100
	DEFAULT_LOGINS_PAGE  = 1
)
View Source
const (
	DEFAULT_USER_PHOTO_CROP_X = -1
	DEFAULT_USER_PHOTO_CROP_Y = -1
	DEFAULT_USER_PHOTO_CROP_W = -1
)
View Source
const (
	// MaxMessageTextLength is the current maximum message length in number of characters as defined here
	// https://api.slack.com/rtm#limits
	MaxMessageTextLength = 4000
)

Variables

View Source
var EventMapping = map[string]interface{}{
	"message":         MessageEvent{},
	"presence_change": PresenceChangeEvent{},
	"user_typing":     UserTypingEvent{},

	"channel_marked":          ChannelMarkedEvent{},
	"channel_created":         ChannelCreatedEvent{},
	"channel_joined":          ChannelJoinedEvent{},
	"channel_left":            ChannelLeftEvent{},
	"channel_deleted":         ChannelDeletedEvent{},
	"channel_rename":          ChannelRenameEvent{},
	"channel_archive":         ChannelArchiveEvent{},
	"channel_unarchive":       ChannelUnarchiveEvent{},
	"channel_history_changed": ChannelHistoryChangedEvent{},

	"dnd_updated":      DNDUpdatedEvent{},
	"dnd_updated_user": DNDUpdatedEvent{},

	"im_created":         IMCreatedEvent{},
	"im_open":            IMOpenEvent{},
	"im_close":           IMCloseEvent{},
	"im_marked":          IMMarkedEvent{},
	"im_history_changed": IMHistoryChangedEvent{},

	"group_marked":          GroupMarkedEvent{},
	"group_open":            GroupOpenEvent{},
	"group_joined":          GroupJoinedEvent{},
	"group_left":            GroupLeftEvent{},
	"group_close":           GroupCloseEvent{},
	"group_rename":          GroupRenameEvent{},
	"group_archive":         GroupArchiveEvent{},
	"group_unarchive":       GroupUnarchiveEvent{},
	"group_history_changed": GroupHistoryChangedEvent{},

	"file_created":         FileCreatedEvent{},
	"file_shared":          FileSharedEvent{},
	"file_unshared":        FileUnsharedEvent{},
	"file_public":          FilePublicEvent{},
	"file_private":         FilePrivateEvent{},
	"file_change":          FileChangeEvent{},
	"file_deleted":         FileDeletedEvent{},
	"file_comment_added":   FileCommentAddedEvent{},
	"file_comment_edited":  FileCommentEditedEvent{},
	"file_comment_deleted": FileCommentDeletedEvent{},

	"pin_added":   PinAddedEvent{},
	"pin_removed": PinRemovedEvent{},

	"star_added":   StarAddedEvent{},
	"star_removed": StarRemovedEvent{},

	"reaction_added":   ReactionAddedEvent{},
	"reaction_removed": ReactionRemovedEvent{},

	"pref_change": PrefChangeEvent{},

	"team_join":              TeamJoinEvent{},
	"team_rename":            TeamRenameEvent{},
	"team_pref_change":       TeamPrefChangeEvent{},
	"team_domain_change":     TeamDomainChangeEvent{},
	"team_migration_started": TeamMigrationStartedEvent{},

	"manual_presence_change": ManualPresenceChangeEvent{},

	"user_change": UserChangeEvent{},

	"emoji_changed": EmojiChangedEvent{},

	"commands_changed": CommandsChangedEvent{},

	"email_domain_changed": EmailDomainChangedEvent{},

	"bot_added":   BotAddedEvent{},
	"bot_changed": BotChangedEvent{},

	"accounts_changed": AccountsChangedEvent{},

	"reconnect_url": ReconnectUrlEvent{},

	"member_joined_channel": MemberJoinedChannelEvent{},
	"member_left_channel":   MemberLeftChannelEvent{},

	"subteam_created":         SubteamCreatedEvent{},
	"subteam_members_changed": SubteamMembersChangedEvent{},
	"subteam_self_added":      SubteamSelfAddedEvent{},
	"subteam_self_removed":    SubteamSelfRemovedEvent{},
	"subteam_updated":         SubteamUpdatedEvent{},

	"desktop_notification":       DesktopNotificationEvent{},
	"mobile_in_app_notification": MobileInAppNotificationEvent{},
}

EventMapping holds a mapping of event names to their corresponding struct implementations. The structs should be instances of the unmarshalling target for the matching event type.

Functions

func GetOAuthToken

func GetOAuthToken(client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, err error)

GetOAuthToken retrieves an AccessToken

func GetOAuthTokenContext

func GetOAuthTokenContext(ctx context.Context, client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, err error)

GetOAuthTokenContext retrieves an AccessToken with a custom context

func OptionAPIURL

func OptionAPIURL(u string) func(*Client)

OptionAPIURL set the url for the client. only useful for testing.

func OptionAppLevelToken

func OptionAppLevelToken(token string) func(*Client)

OptionAppLevelToken sets an app-level token for the client.

func OptionDebug

func OptionDebug(b bool) func(*Client)

OptionDebug enable debugging for the client

func OptionHTTPClient

func OptionHTTPClient(client httpClient) func(*Client)

OptionHTTPClient - provide a custom http client to the slack client.

func OptionLog

func OptionLog(l logger) func(*Client)

OptionLog set logging for client.

func PostWebhook

func PostWebhook(url string, msg *WebhookMessage) error

func PostWebhookContext

func PostWebhookContext(ctx context.Context, url string, msg *WebhookMessage) error

func PostWebhookCustomHTTP

func PostWebhookCustomHTTP(url string, httpClient *http.Client, msg *WebhookMessage) error

func PostWebhookCustomHTTPContext

func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error

func UnsafeApplyMsgOptions

func UnsafeApplyMsgOptions(token, channel, apiurl string, options ...MsgOption) (string, url.Values, error)

UnsafeApplyMsgOptions utility function for debugging/testing chat requests. NOTE: USE AT YOUR OWN RISK: No issues relating to the use of this function will be supported by the library.

func ValidateUniqueBlockID

func ValidateUniqueBlockID(view ModalViewRequest) bool

ValidateUniqueBlockID will verify if each input block has a unique block ID if set

Types

type AccessLogParameters

type AccessLogParameters struct {
	Count int
	Page  int
}

AccessLogParameters contains all the parameters necessary (including the optional ones) for a GetAccessLogs() request

func NewAccessLogParameters

func NewAccessLogParameters() AccessLogParameters

NewAccessLogParameters provides an instance of AccessLogParameters with all the sane default values set

type Accessory

type Accessory struct {
	ImageElement               *ImageBlockElement
	ButtonElement              *ButtonBlockElement
	OverflowElement            *OverflowBlockElement
	DatePickerElement          *DatePickerBlockElement
	TimePickerElement          *TimePickerBlockElement
	PlainTextInputElement      *PlainTextInputBlockElement
	RadioButtonsElement        *RadioButtonsBlockElement
	SelectElement              *SelectBlockElement
	MultiSelectElement         *MultiSelectBlockElement
	CheckboxGroupsBlockElement *CheckboxGroupsBlockElement
	UnknownElement             *UnknownBlockElement
}

func NewAccessory

func NewAccessory(element BlockElement) *Accessory

NewAccessory returns a new Accessory for a given block element

func (*Accessory) MarshalJSON

func (a *Accessory) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for Accessory so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*Accessory) UnmarshalJSON

func (a *Accessory) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for Accessory, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type AccountsChangedEvent

type AccountsChangedEvent struct {
	Type string `json:"type"`
}

AccountsChangedEvent represents the accounts changed event

type AckErrorEvent

type AckErrorEvent struct {
	ErrorObj error
	ReplyTo  int
}

AckErrorEvent i

func (*AckErrorEvent) Error

func (a *AckErrorEvent) Error() string

type AckMessage

type AckMessage struct {
	ReplyTo   int    `json:"reply_to"`
	Timestamp string `json:"ts"`
	Text      string `json:"text"`
	RTMResponse
}

AckMessage is used for messages received in reply to other messages

type ActionBlock

type ActionBlock struct {
	Type     MessageBlockType `json:"type"`
	BlockID  string           `json:"block_id,omitempty"`
	Elements *BlockElements   `json:"elements"`
}

ActionBlock defines data that is used to hold interactive elements.

More Information: https://api.slack.com/reference/messaging/blocks#actions

func NewActionBlock

func NewActionBlock(blockID string, elements ...BlockElement) *ActionBlock

NewActionBlock returns a new instance of an Action Block

func (ActionBlock) BlockType

func (s ActionBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type ActionCallbacks

type ActionCallbacks struct {
	AttachmentActions []*AttachmentAction
	BlockActions      []*BlockAction
}

ActionCallback is a convenience struct defined to allow dynamic unmarshalling of the "actions" value in Slack's JSON response, which varies depending on block type

func (ActionCallbacks) MarshalJSON

func (a ActionCallbacks) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface in order to combine both action callback types back into a single array, like how the api responds. This makes Marshaling and Unmarshaling an InteractionCallback symmetrical

func (*ActionCallbacks) UnmarshalJSON

func (a *ActionCallbacks) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Marshaller interface in order to delegate marshalling and allow for proper type assertion when decoding the response

type ActionType

type ActionType string

ActionType type represents the type of action (attachment, block, etc.)

type AddBookmarkParameters

type AddBookmarkParameters struct {
	Title    string // A required title for the bookmark
	Type     string // A required type for the bookmark
	Link     string // URL required for type:link
	Emoji    string // An optional emoji
	EntityID string
	ParentID string
}

type Attachment

type Attachment struct {
	Color    string `json:"color,omitempty"`
	Fallback string `json:"fallback,omitempty"`

	CallbackID string `json:"callback_id,omitempty"`
	ID         int    `json:"id,omitempty"`

	AuthorID      string `json:"author_id,omitempty"`
	AuthorName    string `json:"author_name,omitempty"`
	AuthorSubname string `json:"author_subname,omitempty"`
	AuthorLink    string `json:"author_link,omitempty"`
	AuthorIcon    string `json:"author_icon,omitempty"`

	Title     string `json:"title,omitempty"`
	TitleLink string `json:"title_link,omitempty"`
	Pretext   string `json:"pretext,omitempty"`
	Text      string `json:"text,omitempty"`

	ImageURL string `json:"image_url,omitempty"`
	ThumbURL string `json:"thumb_url,omitempty"`

	ServiceName string `json:"service_name,omitempty"`
	ServiceIcon string `json:"service_icon,omitempty"`
	FromURL     string `json:"from_url,omitempty"`
	OriginalURL string `json:"original_url,omitempty"`

	Fields     []AttachmentField  `json:"fields,omitempty"`
	Actions    []AttachmentAction `json:"actions,omitempty"`
	MarkdownIn []string           `json:"mrkdwn_in,omitempty"`

	Blocks Blocks `json:"blocks,omitempty"`

	Footer     string `json:"footer,omitempty"`
	FooterIcon string `json:"footer_icon,omitempty"`

	Ts json.Number `json:"ts,omitempty"`
}

Attachment contains all the information for an attachment

type AttachmentAction

type AttachmentAction struct {
	Name            string                        `json:"name"`                       // Required.
	Text            string                        `json:"text"`                       // Required.
	Style           string                        `json:"style,omitempty"`            // Optional. Allowed values: "default", "primary", "danger".
	Type            ActionType                    `json:"type"`                       // Required. Must be set to "button" or "select".
	Value           string                        `json:"value,omitempty"`            // Optional.
	DataSource      string                        `json:"data_source,omitempty"`      // Optional.
	MinQueryLength  int                           `json:"min_query_length,omitempty"` // Optional. Default value is 1.
	Options         []AttachmentActionOption      `json:"options,omitempty"`          // Optional. Maximum of 100 options can be provided in each menu.
	SelectedOptions []AttachmentActionOption      `json:"selected_options,omitempty"` // Optional. The first element of this array will be set as the pre-selected option for this menu.
	OptionGroups    []AttachmentActionOptionGroup `json:"option_groups,omitempty"`    // Optional.
	Confirm         *ConfirmationField            `json:"confirm,omitempty"`          // Optional.
	URL             string                        `json:"url,omitempty"`              // Optional.
}

AttachmentAction is a button or menu to be included in the attachment. Required when using message buttons or menus and otherwise not useful. A maximum of 5 actions may be provided per attachment.

type AttachmentActionCallback

type AttachmentActionCallback InteractionCallback

AttachmentActionCallback is sent from Slack when a user clicks a button in an interactive message (aka AttachmentAction) DEPRECATED: use InteractionCallback

type AttachmentActionOption

type AttachmentActionOption struct {
	Text        string `json:"text"`                  // Required.
	Value       string `json:"value"`                 // Required.
	Description string `json:"description,omitempty"` // Optional. Up to 30 characters.
}

AttachmentActionOption the individual option to appear in action menu.

type AttachmentActionOptionGroup

type AttachmentActionOptionGroup struct {
	Text    string                   `json:"text"`    // Required.
	Options []AttachmentActionOption `json:"options"` // Required.
}

AttachmentActionOptionGroup is a semi-hierarchal way to list available options to appear in action menu.

type AttachmentField

type AttachmentField struct {
	Title string `json:"title"`
	Value string `json:"value"`
	Short bool   `json:"short"`
}

AttachmentField contains information for an attachment field An Attachment can contain multiple of these

type AuditApp

type AuditApp struct {
	ID                  string   `json:"id"`
	Name                string   `json:"name"`
	IsDistributed       bool     `json:"is_distributed"`
	IsDirectoryApproved bool     `json:"is_directory_approved"`
	IsWorkflowApp       bool     `json:"is_workflow_app"`
	Scopes              []string `json:"scopes"`
}

type AuditChannel

type AuditChannel struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Privacy     string `json:"privacy"`
	IsShared    bool   `json:"is_shared"`
	IsOrgShared bool   `json:"is_org_shared"`
}

type AuditEnterprise

type AuditEnterprise struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

type AuditEntry

type AuditEntry struct {
	ID         string `json:"id"`
	DateCreate int    `json:"date_create"`
	Action     string `json:"action"`
	Actor      struct {
		Type string    `json:"type"`
		User AuditUser `json:"user"`
	} `json:"actor"`
	Entity struct {
		Type string `json:"type"`
		// Only one of the below will be completed, based on the value of Type a user, a channel, a file, an app, a workspace, or an enterprise
		User       AuditUser       `json:"user"`
		Channel    AuditChannel    `json:"channel"`
		File       AuditFile       `json:"file"`
		App        AuditApp        `json:"app"`
		Workspace  AuditWorkspace  `json:"workspace"`
		Enterprise AuditEnterprise `json:"enterprise"`
	} `json:"entity"`
	Context struct {
		Location struct {
			Type   string `json:"type"`
			ID     string `json:"id"`
			Name   string `json:"name"`
			Domain string `json:"domain"`
		} `json:"location"`
		UA        string `json:"ua"`
		IPAddress string `json:"ip_address"`
	} `json:"context"`
	Details struct {
		NewValue      interface{} `json:"new_value"`
		PreviousValue interface{} `json:"previous_value"`
		MobileOnly    bool        `json:"mobile_only"`
		WebOnly       bool        `json:"web_only"`
		NonSSOOnly    bool        `json:"non_sso_only"`
		ExportType    string      `json:"export_type"`
		ExportStart   string      `json:"export_start_ts"`
		ExportEnd     string      `json:"export_end_ts"`
	} `json:"details"`
}

type AuditFile

type AuditFile struct {
	ID       string `json:"id"`
	Name     string `json:"name"`
	Filetype string `json:"filetype"`
	Title    string `json:"title"`
}

type AuditLogParameters

type AuditLogParameters struct {
	Limit  int
	Cursor string
	Latest int
	Oldest int
	Action string
	Actor  string
	Entity string
}

AuditLogParameters contains all the parameters necessary (including the optional ones) for a GetAuditLogs() request

type AuditLogResponse

type AuditLogResponse struct {
	Entries []AuditEntry `json:"entries"`
	SlackResponse
}

type AuditUser

type AuditUser struct {
	ID    string `json:"id"`
	Name  string `json:"name"`
	Email string `json:"email"`
	Team  string `json:"team"`
}

type AuditWorkspace

type AuditWorkspace struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

type AuthRevokeResponse

type AuthRevokeResponse struct {
	SlackResponse      // Contains the "ok", and "Error", if any
	Revoked       bool `json:"revoked,omitempty"`
}

AuthRevokeResponse contains our Auth response from the auth.revoke endpoint

type AuthTestResponse

type AuthTestResponse struct {
	URL    string `json:"url"`
	Team   string `json:"team"`
	User   string `json:"user"`
	TeamID string `json:"team_id"`
	UserID string `json:"user_id"`
	// EnterpriseID is only returned when an enterprise id present
	EnterpriseID string `json:"enterprise_id,omitempty"`
	BotID        string `json:"bot_id"`
}

AuthTestResponse ...

type BillableInfoResponse

type BillableInfoResponse struct {
	BillableInfo map[string]BillingActive `json:"billable_info"`
	SlackResponse
}

type BillingActive

type BillingActive struct {
	BillingActive bool `json:"billing_active"`
}

type Block

type Block interface {
	BlockType() MessageBlockType
}

Block defines an interface all block types should implement to ensure consistency between blocks.

type BlockAction

type BlockAction struct {
	ActionID              string              `json:"action_id"`
	BlockID               string              `json:"block_id"`
	Type                  ActionType          `json:"type"`
	Text                  TextBlockObject     `json:"text"`
	Value                 string              `json:"value"`
	ActionTs              string              `json:"action_ts"`
	SelectedOption        OptionBlockObject   `json:"selected_option"`
	SelectedOptions       []OptionBlockObject `json:"selected_options"`
	SelectedUser          string              `json:"selected_user"`
	SelectedUsers         []string            `json:"selected_users"`
	SelectedChannel       string              `json:"selected_channel"`
	SelectedChannels      []string            `json:"selected_channels"`
	SelectedConversation  string              `json:"selected_conversation"`
	SelectedConversations []string            `json:"selected_conversations"`
	SelectedDate          string              `json:"selected_date"`
	SelectedTime          string              `json:"selected_time"`
	InitialOption         OptionBlockObject   `json:"initial_option"`
	InitialUser           string              `json:"initial_user"`
	InitialChannel        string              `json:"initial_channel"`
	InitialConversation   string              `json:"initial_conversation"`
	InitialDate           string              `json:"initial_date"`
	InitialTime           string              `json:"initial_time"`
}

BlockAction is the action callback sent when a block is interacted with

type BlockActionStates

type BlockActionStates struct {
	Values map[string]map[string]BlockAction `json:"values"`
}

type BlockElement

type BlockElement interface {
	ElementType() MessageElementType
}

BlockElement defines an interface that all block element types should implement.

type BlockElements

type BlockElements struct {
	ElementSet []BlockElement `json:"elements,omitempty"`
}

BlockElements is a convenience struct defined to allow dynamic unmarshalling of the "elements" value in Slack's JSON response, which varies depending on BlockElement type

func (*BlockElements) MarshalJSON

func (b *BlockElements) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for BlockElements so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*BlockElements) UnmarshalJSON

func (b *BlockElements) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for BlockElements, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type BlockObjects

type BlockObjects struct {
	TextObjects         []*TextBlockObject
	ConfirmationObjects []*ConfirmationBlockObject
	OptionObjects       []*OptionBlockObject
	OptionGroupObjects  []*OptionGroupBlockObject
}

func (*BlockObjects) UnmarshalJSON

func (b *BlockObjects) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for BlockObjects, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Blocks

type Blocks struct {
	BlockSet []Block `json:"blocks,omitempty"`
}

Blocks is a convenience struct defined to allow dynamic unmarshalling of the "blocks" value in Slack's JSON response, which varies depending on block type

func (Blocks) MarshalJSON

func (b Blocks) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for Blocks so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*Blocks) UnmarshalJSON

func (b *Blocks) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for Blocks, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Bookmark

type Bookmark struct {
	ID        string   `json:"id"`
	ChannelID string   `json:"channel_id"`
	Title     string   `json:"title"`
	Link      string   `json:"link"`
	Emoji     string   `json:"emoji"`
	IconURL   string   `json:"icon_url"`
	Type      string   `json:"type"`
	Created   JSONTime `json:"date_created"`
	Updated   JSONTime `json:"date_updated"`
	Rank      string   `json:"rank"`

	LastUpdatedByUserID string `json:"last_updated_by_user_id"`
	LastUpdatedByTeamID string `json:"last_updated_by_team_id"`

	ShortcutID string `json:"shortcut_id"`
	EntityID   string `json:"entity_id"`
	AppID      string `json:"app_id"`
}

type Bot

type Bot struct {
	ID      string   `json:"id"`
	Name    string   `json:"name"`
	Deleted bool     `json:"deleted"`
	UserID  string   `json:"user_id"`
	AppID   string   `json:"app_id"`
	Updated JSONTime `json:"updated"`
	Icons   Icons    `json:"icons"`
}

Bot contains information about a bot

type BotAddedEvent

type BotAddedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

BotAddedEvent represents the bot added event

type BotChangedEvent

type BotChangedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

BotChangedEvent represents the bot changed event

type BotProfile

type BotProfile struct {
	AppID   string `json:"app_id,omitempty"`
	Deleted bool   `json:"deleted,omitempty"`
	Icons   *Icons `json:"icons,omitempty"`
	ID      string `json:"id,omitempty"`
	Name    string `json:"name,omitempty"`
	TeamID  string `json:"team_id,omitempty"`
	Updated int64  `json:"updated,omitempty"`
}

BotProfile contains information about a bot

type ButtonBlockElement

type ButtonBlockElement struct {
	Type     MessageElementType       `json:"type,omitempty"`
	Text     *TextBlockObject         `json:"text"`
	ActionID string                   `json:"action_id,omitempty"`
	URL      string                   `json:"url,omitempty"`
	Value    string                   `json:"value,omitempty"`
	Confirm  *ConfirmationBlockObject `json:"confirm,omitempty"`
	Style    Style                    `json:"style,omitempty"`
}

ButtonBlockElement defines an interactive element that inserts a button. The button can be a trigger for anything from opening a simple link to starting a complex workflow.

More Information: https://api.slack.com/reference/messaging/block-elements#button

func NewButtonBlockElement

func NewButtonBlockElement(actionID, value string, text *TextBlockObject) *ButtonBlockElement

NewButtonBlockElement returns an instance of a new button element to be used within a block

func (ButtonBlockElement) ElementType

func (s ButtonBlockElement) ElementType() MessageElementType

ElementType returns the type of the element

func (*ButtonBlockElement) WithConfirm

WithConfirm adds a confirmation dialogue to the button object and returns the modified ButtonBlockElement

func (*ButtonBlockElement) WithStyle

func (s *ButtonBlockElement) WithStyle(style Style) *ButtonBlockElement

WithStyle adds styling to the button object and returns the modified ButtonBlockElement

type Channel

type Channel struct {
	GroupConversation
	IsChannel bool   `json:"is_channel"`
	IsGeneral bool   `json:"is_general"`
	IsMember  bool   `json:"is_member"`
	Locale    string `json:"locale"`
}

Channel contains information about the channel

type ChannelArchiveEvent

type ChannelArchiveEvent ChannelInfoEvent

ChannelArchiveEvent represents the Channel archive event

type ChannelCreatedEvent

type ChannelCreatedEvent struct {
	Type           string             `json:"type"`
	Channel        ChannelCreatedInfo `json:"channel"`
	EventTimestamp string             `json:"event_ts"`
}

ChannelCreatedEvent represents the Channel created event

type ChannelCreatedInfo

type ChannelCreatedInfo struct {
	ID        string `json:"id"`
	IsChannel bool   `json:"is_channel"`
	Name      string `json:"name"`
	Created   int    `json:"created"`
	Creator   string `json:"creator"`
}

ChannelCreatedInfo represents the information associated with the Channel created event

type ChannelDeletedEvent

type ChannelDeletedEvent ChannelInfoEvent

ChannelDeletedEvent represents the Channel deleted event

type ChannelHistoryChangedEvent

type ChannelHistoryChangedEvent struct {
	Type           string `json:"type"`
	Latest         string `json:"latest"`
	Timestamp      string `json:"ts"`
	EventTimestamp string `json:"event_ts"`
}

ChannelHistoryChangedEvent represents the Channel history changed event

type ChannelInfoEvent

type ChannelInfoEvent struct {
	// channel_left
	// channel_deleted
	// channel_archive
	// channel_unarchive
	Type      string `json:"type"`
	Channel   string `json:"channel"`
	User      string `json:"user,omitempty"`
	Timestamp string `json:"ts,omitempty"`
}

ChannelInfoEvent represents the Channel info event

type ChannelJoinedEvent

type ChannelJoinedEvent struct {
	Type    string  `json:"type"`
	Channel Channel `json:"channel"`
}

ChannelJoinedEvent represents the Channel joined event

type ChannelLeftEvent

type ChannelLeftEvent ChannelInfoEvent

ChannelLeftEvent represents the Channel left event

type ChannelMarkedEvent

type ChannelMarkedEvent ChannelInfoEvent

ChannelMarkedEvent represents the Channel marked event

type ChannelRenameEvent

type ChannelRenameEvent struct {
	Type      string            `json:"type"`
	Channel   ChannelRenameInfo `json:"channel"`
	Timestamp string            `json:"event_ts"`
}

ChannelRenameEvent represents the Channel rename event

type ChannelRenameInfo

type ChannelRenameInfo struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Created int    `json:"created"`
}

ChannelRenameInfo represents the information associated with a Channel rename event

type ChannelUnarchiveEvent

type ChannelUnarchiveEvent ChannelInfoEvent

ChannelUnarchiveEvent represents the Channel unarchive event

type CheckboxGroupsBlockElement

type CheckboxGroupsBlockElement struct {
	Type           MessageElementType       `json:"type"`
	ActionID       string                   `json:"action_id,omitempty"`
	Options        []*OptionBlockObject     `json:"options"`
	InitialOptions []*OptionBlockObject     `json:"initial_options,omitempty"`
	Confirm        *ConfirmationBlockObject `json:"confirm,omitempty"`
}

CheckboxGroupsBlockElement defines an element which allows users to choose one or more items from a list of possible options.

More Information: https://api.slack.com/reference/block-kit/block-elements#checkboxes

func NewCheckboxGroupsBlockElement

func NewCheckboxGroupsBlockElement(actionID string, options ...*OptionBlockObject) *CheckboxGroupsBlockElement

NewCheckboxGroupsBlockElement returns an instance of a checkbox-group block element

func (CheckboxGroupsBlockElement) ElementType

ElementType returns the type of the Element

type Client

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

func New

func New(token string, options ...Option) *Client

New builds a slack client from the provided token and options.

func (*Client) AddBookmark

func (api *Client) AddBookmark(channelID string, params AddBookmarkParameters) (Bookmark, error)

AddBookmark adds a bookmark in a channel

func (*Client) AddBookmarkContext

func (api *Client) AddBookmarkContext(ctx context.Context, channelID string, params AddBookmarkParameters) (Bookmark, error)

AddBookmarkContext adds a bookmark in a channel with a custom context

func (*Client) AddChannelReminder

func (api *Client) AddChannelReminder(channelID, text, time string) (*Reminder, error)

AddChannelReminder adds a reminder for a channel.

See https://api.slack.com/methods/reminders.add (NOTE: the ability to set reminders on a channel is currently undocumented but has been tested to work)

func (*Client) AddChannelReminderContext

func (api *Client) AddChannelReminderContext(ctx context.Context, channelID, text, time string) (*Reminder, error)

AddChannelReminderContext adds a reminder for a channel with a custom context

For more details, see AddChannelReminder documentation.

func (*Client) AddPin

func (api *Client) AddPin(channel string, item ItemRef) error

AddPin pins an item in a channel

func (*Client) AddPinContext

func (api *Client) AddPinContext(ctx context.Context, channel string, item ItemRef) error

AddPinContext pins an item in a channel with a custom context

func (*Client) AddReaction

func (api *Client) AddReaction(name string, item ItemRef) error

AddReaction adds a reaction emoji to a message, file or file comment.

func (*Client) AddReactionContext

func (api *Client) AddReactionContext(ctx context.Context, name string, item ItemRef) error

AddReactionContext adds a reaction emoji to a message, file or file comment with a custom context.

func (*Client) AddRemoteFile

func (api *Client) AddRemoteFile(params RemoteFileParameters) (*RemoteFile, error)

AddRemoteFile adds a remote file. Unlike regular files, remote files must be explicitly shared. For more details: https://api.slack.com/methods/files.remote.add

func (*Client) AddRemoteFileContext

func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFileParameters) (remotefile *RemoteFile, err error)

AddRemoteFileContext adds a remote file and setting a custom context For more details see the AddRemoteFile documentation.

func (*Client) AddStar

func (api *Client) AddStar(channel string, item ItemRef) error

AddStar stars an item in a channel

func (*Client) AddStarContext

func (api *Client) AddStarContext(ctx context.Context, channel string, item ItemRef) error

AddStarContext stars an item in a channel with a custom context

func (*Client) AddUserReminder

func (api *Client) AddUserReminder(userID, text, time string) (*Reminder, error)

AddUserReminder adds a reminder for a user.

See https://api.slack.com/methods/reminders.add (NOTE: the ability to set reminders on a channel is currently undocumented but has been tested to work)

func (*Client) AddUserReminderContext

func (api *Client) AddUserReminderContext(ctx context.Context, userID, text, time string) (*Reminder, error)

AddUserReminderContext adds a reminder for a user with a custom context

For more details, see AddUserReminder documentation.

func (*Client) ArchiveConversation

func (api *Client) ArchiveConversation(channelID string) error

ArchiveConversation archives a conversation

func (*Client) ArchiveConversationContext

func (api *Client) ArchiveConversationContext(ctx context.Context, channelID string) error

ArchiveConversationContext archives a conversation with a custom context

func (*Client) AuthTest

func (api *Client) AuthTest() (response *AuthTestResponse, error error)

AuthTest tests if the user is able to do authenticated requests or not

func (*Client) AuthTestContext

func (api *Client) AuthTestContext(ctx context.Context) (response *AuthTestResponse, err error)

AuthTestContext tests if the user is able to do authenticated requests or not with a custom context

func (*Client) CloseConversation

func (api *Client) CloseConversation(channelID string) (noOp bool, alreadyClosed bool, err error)

CloseConversation closes a direct message or multi-person direct message

func (*Client) CloseConversationContext

func (api *Client) CloseConversationContext(ctx context.Context, channelID string) (noOp bool, alreadyClosed bool, err error)

CloseConversationContext closes a direct message or multi-person direct message with a custom context

func (*Client) ConnectRTM

func (api *Client) ConnectRTM() (info *Info, websocketURL string, err error)

ConnectRTM calls the "rtm.connect" endpoint and returns the provided URL and the compact Info block.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) ConnectRTMContext

func (api *Client) ConnectRTMContext(ctx context.Context) (info *Info, websocketURL string, err error)

ConnectRTMContext calls the "rtm.connect" endpoint and returns the provided URL and the compact Info block with a custom context.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) CreateConversation

func (api *Client) CreateConversation(channelName string, isPrivate bool) (*Channel, error)

CreateConversation initiates a public or private channel-based conversation

func (*Client) CreateConversationContext

func (api *Client) CreateConversationContext(ctx context.Context, channelName string, isPrivate bool) (*Channel, error)

CreateConversationContext initiates a public or private channel-based conversation with a custom context

func (*Client) CreateUserGroup

func (api *Client) CreateUserGroup(userGroup UserGroup) (UserGroup, error)

CreateUserGroup creates a new user group

func (*Client) CreateUserGroupContext

func (api *Client) CreateUserGroupContext(ctx context.Context, userGroup UserGroup) (UserGroup, error)

CreateUserGroupContext creates a new user group with a custom context

func (*Client) Debug

func (api *Client) Debug() bool

Debug returns if debug is enabled.

func (*Client) Debugf

func (api *Client) Debugf(format string, v ...interface{})

Debugf print a formatted debug line.

func (*Client) Debugln

func (api *Client) Debugln(v ...interface{})

Debugln print a debug line.

func (*Client) DeleteFile

func (api *Client) DeleteFile(fileID string) error

DeleteFile deletes a file

func (*Client) DeleteFileComment

func (api *Client) DeleteFileComment(commentID, fileID string) error

DeleteFileComment deletes a file's comment

func (*Client) DeleteFileCommentContext

func (api *Client) DeleteFileCommentContext(ctx context.Context, fileID, commentID string) (err error)

DeleteFileCommentContext deletes a file's comment with a custom context

func (*Client) DeleteFileContext

func (api *Client) DeleteFileContext(ctx context.Context, fileID string) (err error)

DeleteFileContext deletes a file with a custom context

func (*Client) DeleteMessage

func (api *Client) DeleteMessage(channel, messageTimestamp string) (string, string, error)

DeleteMessage deletes a message in a channel

func (*Client) DeleteMessageContext

func (api *Client) DeleteMessageContext(ctx context.Context, channel, messageTimestamp string) (string, string, error)

DeleteMessageContext deletes a message in a channel with a custom context

func (*Client) DeleteReminder

func (api *Client) DeleteReminder(id string) error

DeleteReminder deletes an existing reminder.

See https://api.slack.com/methods/reminders.delete

func (*Client) DeleteReminderContext

func (api *Client) DeleteReminderContext(ctx context.Context, id string) error

DeleteReminderContext deletes an existing reminder with a custom context

For more details, see DeleteReminder documentation.

func (*Client) DeleteScheduledMessage

func (api *Client) DeleteScheduledMessage(params *DeleteScheduledMessageParameters) (bool, error)

DeleteScheduledMessage returns the list of scheduled messages based on params

func (*Client) DeleteScheduledMessageContext

func (api *Client) DeleteScheduledMessageContext(ctx context.Context, params *DeleteScheduledMessageParameters) (bool, error)

DeleteScheduledMessageContext returns the list of scheduled messages in a Slack team with a custom context

func (*Client) DeleteUserPhoto

func (api *Client) DeleteUserPhoto() error

DeleteUserPhoto deletes the current authenticated user's profile image

func (*Client) DeleteUserPhotoContext

func (api *Client) DeleteUserPhotoContext(ctx context.Context) (err error)

DeleteUserPhotoContext deletes the current authenticated user's profile image with a custom context

func (*Client) DisableUser

func (api *Client) DisableUser(teamName string, uid string) error

DisableUser disabled a user account, given a user ID

func (*Client) DisableUserContext

func (api *Client) DisableUserContext(ctx context.Context, teamName string, uid string) error

DisableUserContext disabled a user account, given a user ID with a custom context

func (*Client) DisableUserGroup

func (api *Client) DisableUserGroup(userGroup string) (UserGroup, error)

DisableUserGroup disables an existing user group

func (*Client) DisableUserGroupContext

func (api *Client) DisableUserGroupContext(ctx context.Context, userGroup string) (UserGroup, error)

DisableUserGroupContext disables an existing user group with a custom context

func (*Client) EditBookmark

func (api *Client) EditBookmark(channelID, bookmarkID string, params EditBookmarkParameters) (Bookmark, error)

func (*Client) EditBookmarkContext

func (api *Client) EditBookmarkContext(ctx context.Context, channelID, bookmarkID string, params EditBookmarkParameters) (Bookmark, error)

func (*Client) EnableUserGroup

func (api *Client) EnableUserGroup(userGroup string) (UserGroup, error)

EnableUserGroup enables an existing user group

func (*Client) EnableUserGroupContext

func (api *Client) EnableUserGroupContext(ctx context.Context, userGroup string) (UserGroup, error)

EnableUserGroupContext enables an existing user group with a custom context

func (*Client) EndDND

func (api *Client) EndDND() error

EndDND ends the user's scheduled Do Not Disturb session

func (*Client) EndDNDContext

func (api *Client) EndDNDContext(ctx context.Context) error

EndDNDContext ends the user's scheduled Do Not Disturb session with a custom context

func (*Client) EndSnooze

func (api *Client) EndSnooze() (*DNDStatus, error)

EndSnooze ends the current user's snooze mode

func (*Client) EndSnoozeContext

func (api *Client) EndSnoozeContext(ctx context.Context) (*DNDStatus, error)

EndSnoozeContext ends the current user's snooze mode with a custom context

func (*Client) GetAccessLogs

func (api *Client) GetAccessLogs(params AccessLogParameters) ([]Login, *Paging, error)

GetAccessLogs retrieves a page of logins according to the parameters given

func (*Client) GetAccessLogsContext

func (api *Client) GetAccessLogsContext(ctx context.Context, params AccessLogParameters) ([]Login, *Paging, error)

GetAccessLogsContext retrieves a page of logins according to the parameters given with a custom context

func (*Client) GetAuditLogs

func (api *Client) GetAuditLogs(params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error)

GetAuditLogs retrieves a page of audit entires according to the parameters given

func (*Client) GetAuditLogsContext

func (api *Client) GetAuditLogsContext(ctx context.Context, params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error)

GetAuditLogsContext retrieves a page of audit entries according to the parameters given with a custom context

func (*Client) GetBillableInfo

func (api *Client) GetBillableInfo(user string) (map[string]BillingActive, error)

GetBillableInfo ...

func (*Client) GetBillableInfoContext

func (api *Client) GetBillableInfoContext(ctx context.Context, user string) (map[string]BillingActive, error)

GetBillableInfoContext ...

func (*Client) GetBillableInfoForTeam

func (api *Client) GetBillableInfoForTeam() (map[string]BillingActive, error)

GetBillableInfoForTeam returns the billing_active status of all users on the team.

func (*Client) GetBillableInfoForTeamContext

func (api *Client) GetBillableInfoForTeamContext(ctx context.Context) (map[string]BillingActive, error)

GetBillableInfoForTeamContext returns the billing_active status of all users on the team with a custom context

func (*Client) GetBotInfo

func (api *Client) GetBotInfo(bot string) (*Bot, error)

GetBotInfo will retrieve the complete bot information

func (*Client) GetBotInfoContext

func (api *Client) GetBotInfoContext(ctx context.Context, bot string) (*Bot, error)

GetBotInfoContext will retrieve the complete bot information using a custom context

func (*Client) GetConversationHistory

func (api *Client) GetConversationHistory(params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error)

GetConversationHistory joins an existing conversation

func (*Client) GetConversationHistoryContext

func (api *Client) GetConversationHistoryContext(ctx context.Context, params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error)

GetConversationHistoryContext joins an existing conversation with a custom context

func (*Client) GetConversationInfo

func (api *Client) GetConversationInfo(channelID string, includeLocale bool) (*Channel, error)

GetConversationInfo retrieves information about a conversation

func (*Client) GetConversationInfoContext

func (api *Client) GetConversationInfoContext(ctx context.Context, channelID string, includeLocale bool) (*Channel, error)

GetConversationInfoContext retrieves information about a conversation with a custom context

func (*Client) GetConversationReplies

func (api *Client) GetConversationReplies(params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error)

GetConversationReplies retrieves a thread of messages posted to a conversation

func (*Client) GetConversationRepliesContext

func (api *Client) GetConversationRepliesContext(ctx context.Context, params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error)

GetConversationRepliesContext retrieves a thread of messages posted to a conversation with a custom context

func (*Client) GetConversations

func (api *Client) GetConversations(params *GetConversationsParameters) (channels []Channel, nextCursor string, err error)

GetConversations returns the list of channels in a Slack team

func (*Client) GetConversationsContext

func (api *Client) GetConversationsContext(ctx context.Context, params *GetConversationsParameters) (channels []Channel, nextCursor string, err error)

GetConversationsContext returns the list of channels in a Slack team with a custom context

func (*Client) GetConversationsForUser

func (api *Client) GetConversationsForUser(params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error)

GetConversationsForUser returns the list conversations for a given user

func (*Client) GetConversationsForUserContext

func (api *Client) GetConversationsForUserContext(ctx context.Context, params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error)

GetConversationsForUserContext returns the list conversations for a given user with a custom context

func (*Client) GetDNDInfo

func (api *Client) GetDNDInfo(user *string) (*DNDStatus, error)

GetDNDInfo provides information about a user's current Do Not Disturb settings.

func (*Client) GetDNDInfoContext

func (api *Client) GetDNDInfoContext(ctx context.Context, user *string) (*DNDStatus, error)

GetDNDInfoContext provides information about a user's current Do Not Disturb settings with a custom context.

func (*Client) GetDNDTeamInfo

func (api *Client) GetDNDTeamInfo(users []string) (map[string]DNDStatus, error)

GetDNDTeamInfo provides information about a user's current Do Not Disturb settings.

func (*Client) GetDNDTeamInfoContext

func (api *Client) GetDNDTeamInfoContext(ctx context.Context, users []string) (map[string]DNDStatus, error)

GetDNDTeamInfoContext provides information about a user's current Do Not Disturb settings with a custom context.

func (*Client) GetEmoji

func (api *Client) GetEmoji() (map[string]string, error)

GetEmoji retrieves all the emojis

func (*Client) GetEmojiContext

func (api *Client) GetEmojiContext(ctx context.Context) (map[string]string, error)

GetEmojiContext retrieves all the emojis with a custom context

func (*Client) GetFile

func (api *Client) GetFile(downloadURL string, writer io.Writer) error

GetFile retreives a given file from its private download URL

func (*Client) GetFileContext

func (api *Client) GetFileContext(ctx context.Context, downloadURL string, writer io.Writer) error

GetFileContext retreives a given file from its private download URL with a custom context

For more details, see GetFile documentation.

func (*Client) GetFileInfo

func (api *Client) GetFileInfo(fileID string, count, page int) (*File, []Comment, *Paging, error)

GetFileInfo retrieves a file and related comments

func (*Client) GetFileInfoContext

func (api *Client) GetFileInfoContext(ctx context.Context, fileID string, count, page int) (*File, []Comment, *Paging, error)

GetFileInfoContext retrieves a file and related comments with a custom context

func (*Client) GetFiles

func (api *Client) GetFiles(params GetFilesParameters) ([]File, *Paging, error)

GetFiles retrieves all files according to the parameters given

func (*Client) GetFilesContext

func (api *Client) GetFilesContext(ctx context.Context, params GetFilesParameters) ([]File, *Paging, error)

GetFilesContext retrieves all files according to the parameters given with a custom context

func (api *Client) GetPermalink(params *PermalinkParameters) (string, error)

GetPermalink returns the permalink for a message. It takes PermalinkParameters and returns a string containing the permalink. It returns an error if unable to retrieve the permalink.

func (*Client) GetPermalinkContext

func (api *Client) GetPermalinkContext(ctx context.Context, params *PermalinkParameters) (string, error)

GetPermalinkContext returns the permalink for a message using a custom context.

func (*Client) GetReactions

func (api *Client) GetReactions(item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)

GetReactions returns details about the reactions on an item.

func (*Client) GetReactionsContext

func (api *Client) GetReactionsContext(ctx context.Context, item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)

GetReactionsContext returns details about the reactions on an item with a custom context

func (*Client) GetRemoteFileInfo

func (api *Client) GetRemoteFileInfo(externalID, fileID string) (remotefile *RemoteFile, err error)

GetRemoteFileInfo retrieves the complete remote file information. For more details: https://api.slack.com/methods/files.remote.info

func (*Client) GetRemoteFileInfoContext

func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fileID string) (remotefile *RemoteFile, err error)

GetRemoteFileInfoContext retrieves the complete remote file information given with a custom context. For more details see the GetRemoteFileInfo documentation.

func (*Client) GetScheduledMessages

func (api *Client) GetScheduledMessages(params *GetScheduledMessagesParameters) (channels []ScheduledMessage, nextCursor string, err error)

GetScheduledMessages returns the list of scheduled messages based on params

func (*Client) GetScheduledMessagesContext

func (api *Client) GetScheduledMessagesContext(ctx context.Context, params *GetScheduledMessagesParameters) (channels []ScheduledMessage, nextCursor string, err error)

GetScheduledMessagesContext returns the list of scheduled messages in a Slack team with a custom context

func (*Client) GetStarred

func (api *Client) GetStarred(params StarsParameters) ([]StarredItem, *Paging, error)

GetStarred returns a list of StarredItem items.

The user then has to iterate over them and figure out what they should be looking at according to what is in the Type:

for _, item := range items {
    switch c.Type {
    case "file_comment":
        log.Println(c.Comment)
    case "file":
        ...
}

This function still exists to maintain backwards compatibility. I exposed it as returning []StarredItem, so it shall stay as StarredItem.

func (*Client) GetStarredContext

func (api *Client) GetStarredContext(ctx context.Context, params StarsParameters) ([]StarredItem, *Paging, error)

GetStarredContext returns a list of StarredItem items with a custom context

For more details see GetStarred

func (*Client) GetTeamInfo

func (api *Client) GetTeamInfo() (*TeamInfo, error)

GetTeamInfo gets the Team Information of the user

func (*Client) GetTeamInfoContext

func (api *Client) GetTeamInfoContext(ctx context.Context) (*TeamInfo, error)

GetTeamInfoContext gets the Team Information of the user with a custom context

func (*Client) GetUserByEmail

func (api *Client) GetUserByEmail(email string) (*User, error)

GetUserByEmail will retrieve the complete user information by email

func (*Client) GetUserByEmailContext

func (api *Client) GetUserByEmailContext(ctx context.Context, email string) (*User, error)

GetUserByEmailContext will retrieve the complete user information by email with a custom context

func (*Client) GetUserGroupMembers

func (api *Client) GetUserGroupMembers(userGroup string) ([]string, error)

GetUserGroupMembers will retrieve the current list of users in a group

func (*Client) GetUserGroupMembersContext

func (api *Client) GetUserGroupMembersContext(ctx context.Context, userGroup string) ([]string, error)

GetUserGroupMembersContext will retrieve the current list of users in a group with a custom context

func (*Client) GetUserGroups

func (api *Client) GetUserGroups(options ...GetUserGroupsOption) ([]UserGroup, error)

GetUserGroups returns a list of user groups for the team

func (*Client) GetUserGroupsContext

func (api *Client) GetUserGroupsContext(ctx context.Context, options ...GetUserGroupsOption) ([]UserGroup, error)

GetUserGroupsContext returns a list of user groups for the team with a custom context

func (*Client) GetUserIdentity

func (api *Client) GetUserIdentity() (*UserIdentityResponse, error)

GetUserIdentity will retrieve user info available per identity scopes

func (*Client) GetUserIdentityContext

func (api *Client) GetUserIdentityContext(ctx context.Context) (response *UserIdentityResponse, err error)

GetUserIdentityContext will retrieve user info available per identity scopes with a custom context

func (*Client) GetUserInfo

func (api *Client) GetUserInfo(user string) (*User, error)

GetUserInfo will retrieve the complete user information

func (*Client) GetUserInfoContext

func (api *Client) GetUserInfoContext(ctx context.Context, user string) (*User, error)

GetUserInfoContext will retrieve the complete user information with a custom context

func (*Client) GetUserPrefs

func (api *Client) GetUserPrefs() (*UserPrefsCarrier, error)

func (*Client) GetUserPrefsContext

func (api *Client) GetUserPrefsContext(ctx context.Context) (*UserPrefsCarrier, error)

func (*Client) GetUserPresence

func (api *Client) GetUserPresence(user string) (*UserPresence, error)

GetUserPresence will retrieve the current presence status of given user.

func (*Client) GetUserPresenceContext

func (api *Client) GetUserPresenceContext(ctx context.Context, user string) (*UserPresence, error)

GetUserPresenceContext will retrieve the current presence status of given user with a custom context.

func (*Client) GetUserProfile

func (api *Client) GetUserProfile(params *GetUserProfileParameters) (*UserProfile, error)

GetUserProfile retrieves a user's profile information.

func (*Client) GetUserProfileContext

func (api *Client) GetUserProfileContext(ctx context.Context, params *GetUserProfileParameters) (*UserProfile, error)

GetUserProfileContext retrieves a user's profile information with a context.

func (*Client) GetUsers

func (api *Client) GetUsers(options ...GetUsersOption) ([]User, error)

GetUsers returns the list of users (with their detailed information)

func (*Client) GetUsersContext

func (api *Client) GetUsersContext(ctx context.Context, options ...GetUsersOption) (results []User, err error)

GetUsersContext returns the list of users (with their detailed information) with a custom context

func (*Client) GetUsersInConversation

func (api *Client) GetUsersInConversation(params *GetUsersInConversationParameters) ([]string, string, error)

GetUsersInConversation returns the list of users in a conversation

func (*Client) GetUsersInConversationContext

func (api *Client) GetUsersInConversationContext(ctx context.Context, params *GetUsersInConversationParameters) ([]string, string, error)

GetUsersInConversationContext returns the list of users in a conversation with a custom context

func (*Client) GetUsersInfo

func (api *Client) GetUsersInfo(users ...string) (*[]User, error)

GetUsersInfo will retrieve the complete multi-users information

func (*Client) GetUsersInfoContext

func (api *Client) GetUsersInfoContext(ctx context.Context, users ...string) (*[]User, error)

GetUsersInfoContext will retrieve the complete multi-users information with a custom context

func (*Client) GetUsersPaginated

func (api *Client) GetUsersPaginated(options ...GetUsersOption) UserPagination

GetUsersPaginated fetches users in a paginated fashion, see GetUsersContext for usage.

func (*Client) InviteGuest

func (api *Client) InviteGuest(teamName, channel, firstName, lastName, emailAddress string) error

InviteGuest invites a user to Slack as a single-channel guest

func (*Client) InviteGuestContext

func (api *Client) InviteGuestContext(ctx context.Context, teamName, channel, firstName, lastName, emailAddress string) error

InviteGuestContext invites a user to Slack as a single-channel guest with a custom context

func (*Client) InviteRestricted

func (api *Client) InviteRestricted(teamName, channel, firstName, lastName, emailAddress string) error

InviteRestricted invites a user to Slack as a restricted account

func (*Client) InviteRestrictedContext

func (api *Client) InviteRestrictedContext(ctx context.Context, teamName, channel, firstName, lastName, emailAddress string) error

InviteRestrictedContext invites a user to Slack as a restricted account with a custom context

func (*Client) InviteToTeam

func (api *Client) InviteToTeam(teamName, firstName, lastName, emailAddress string) error

InviteToTeam invites a user to a Slack team

func (*Client) InviteToTeamContext

func (api *Client) InviteToTeamContext(ctx context.Context, teamName, firstName, lastName, emailAddress string) error

InviteToTeamContext invites a user to a Slack team with a custom context

func (*Client) InviteUsersToConversation

func (api *Client) InviteUsersToConversation(channelID string, users ...string) (*Channel, error)

InviteUsersToConversation invites users to a channel

func (*Client) InviteUsersToConversationContext

func (api *Client) InviteUsersToConversationContext(ctx context.Context, channelID string, users ...string) (*Channel, error)

InviteUsersToConversationContext invites users to a channel with a custom context

func (*Client) JoinConversation

func (api *Client) JoinConversation(channelID string) (*Channel, string, []string, error)

JoinConversation joins an existing conversation

func (*Client) JoinConversationContext

func (api *Client) JoinConversationContext(ctx context.Context, channelID string) (*Channel, string, []string, error)

JoinConversationContext joins an existing conversation with a custom context

func (*Client) KickUserFromConversation

func (api *Client) KickUserFromConversation(channelID string, user string) error

KickUserFromConversation removes a user from a conversation

func (*Client) KickUserFromConversationContext

func (api *Client) KickUserFromConversationContext(ctx context.Context, channelID string, user string) error

KickUserFromConversationContext removes a user from a conversation with a custom context

func (*Client) LeaveConversation

func (api *Client) LeaveConversation(channelID string) (bool, error)

LeaveConversation leaves a conversation

func (*Client) LeaveConversationContext

func (api *Client) LeaveConversationContext(ctx context.Context, channelID string) (bool, error)

LeaveConversationContext leaves a conversation with a custom context

func (*Client) ListAllStars

func (api *Client) ListAllStars() ([]Item, error)

ListAllStars returns the complete list of starred items

func (*Client) ListAllStarsContext

func (api *Client) ListAllStarsContext(ctx context.Context) (results []Item, err error)

ListAllStarsContext returns the list of users (with their detailed information) with a custom context

func (*Client) ListBookmarks

func (api *Client) ListBookmarks(channelID string) ([]Bookmark, error)

ListBookmarks returns all bookmarks for a channel.

func (*Client) ListBookmarksContext

func (api *Client) ListBookmarksContext(ctx context.Context, channelID string) ([]Bookmark, error)

ListBookmarksContext returns all bookmarks for a channel with a custom context.

func (*Client) ListEventAuthorizations

func (api *Client) ListEventAuthorizations(eventContext string) ([]EventAuthorization, error)

func (*Client) ListEventAuthorizationsContext

func (api *Client) ListEventAuthorizationsContext(ctx context.Context, eventContext string) ([]EventAuthorization, error)

ListEventAuthorizationsContext lists authed users and teams for the given event_context. You must provide an app-level token to the client using OptionAppLevelToken. More info: https://api.slack.com/methods/apps.event.authorizations.list

func (*Client) ListFiles

func (api *Client) ListFiles(params ListFilesParameters) ([]File, *ListFilesParameters, error)

ListFiles retrieves all files according to the parameters given. Uses cursor based pagination.

func (*Client) ListFilesContext

func (api *Client) ListFilesContext(ctx context.Context, params ListFilesParameters) ([]File, *ListFilesParameters, error)

ListFilesContext retrieves all files according to the parameters given with a custom context.

For more details, see ListFiles documentation.

func (*Client) ListPins

func (api *Client) ListPins(channel string) ([]Item, *Paging, error)

ListPins returns information about the items a user reacted to.

func (*Client) ListPinsContext

func (api *Client) ListPinsContext(ctx context.Context, channel string) ([]Item, *Paging, error)

ListPinsContext returns information about the items a user reacted to with a custom context.

func (*Client) ListReactions

func (api *Client) ListReactions(params ListReactionsParameters) ([]ReactedItem, *Paging, error)

ListReactions returns information about the items a user reacted to.

func (*Client) ListReactionsContext

func (api *Client) ListReactionsContext(ctx context.Context, params ListReactionsParameters) ([]ReactedItem, *Paging, error)

ListReactionsContext returns information about the items a user reacted to with a custom context.

func (*Client) ListReminders

func (api *Client) ListReminders() ([]*Reminder, error)

ListReminders lists all the reminders created by or for the authenticated user

See https://api.slack.com/methods/reminders.list

func (*Client) ListRemindersContext

func (api *Client) ListRemindersContext(ctx context.Context) ([]*Reminder, error)

ListRemindersContext lists all the reminders created by or for the authenticated user with a custom context

For more details, see ListReminders documentation.

func (*Client) ListRemoteFiles

func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, error)

ListRemoteFiles retrieves all remote files according to the parameters given. Uses cursor based pagination. For more details: https://api.slack.com/methods/files.remote.list

func (*Client) ListRemoteFilesContext

func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, error)

ListRemoteFilesContext retrieves all remote files according to the parameters given with a custom context. Uses cursor based pagination. For more details see the ListRemoteFiles documentation.

func (*Client) ListStars

func (api *Client) ListStars(params StarsParameters) ([]Item, *Paging, error)

ListStars returns information about the stars a user added

func (*Client) ListStarsContext

func (api *Client) ListStarsContext(ctx context.Context, params StarsParameters) ([]Item, *Paging, error)

ListStarsContext returns information about the stars a user added with a custom context

func (*Client) ListStarsPaginated

func (api *Client) ListStarsPaginated(options ...ListStarsOption) StarredItemPagination

ListStarsPaginated fetches users in a paginated fashion, see ListStarsPaginationContext for usage.

func (*Client) MarkConversation

func (api *Client) MarkConversation(channel, ts string) (err error)

MarkConversation sets the read mark of a conversation to a specific point

func (*Client) MarkConversationContext

func (api *Client) MarkConversationContext(ctx context.Context, channel, ts string) error

MarkConversationContext sets the read mark of a conversation to a specific point with a custom context

func (*Client) MuteChat

func (api *Client) MuteChat(channelID string) (*UserPrefsCarrier, error)

func (*Client) NewRTM

func (api *Client) NewRTM(options ...RTMOption) *RTM

NewRTM returns a RTM, which provides a fully managed connection to Slack's websocket-based Real-Time Messaging protocol.

func (*Client) OpenConversation

func (api *Client) OpenConversation(params *OpenConversationParameters) (*Channel, bool, bool, error)

OpenConversation opens or resumes a direct message or multi-person direct message

func (*Client) OpenConversationContext

func (api *Client) OpenConversationContext(ctx context.Context, params *OpenConversationParameters) (*Channel, bool, bool, error)

OpenConversationContext opens or resumes a direct message or multi-person direct message with a custom context

func (*Client) OpenDialog

func (api *Client) OpenDialog(triggerID string, dialog Dialog) (err error)

OpenDialog opens a dialog window where the triggerID originated from. EXPERIMENTAL: dialog functionality is currently experimental, api is not considered stable.

func (*Client) OpenDialogContext

func (api *Client) OpenDialogContext(ctx context.Context, triggerID string, dialog Dialog) (err error)

OpenDialogContext opens a dialog window where the triggerId originated from with a custom context EXPERIMENTAL: dialog functionality is currently experimental, api is not considered stable.

func (*Client) OpenView

func (api *Client) OpenView(triggerID string, view ModalViewRequest) (*ViewResponse, error)

OpenView opens a view for a user.

func (*Client) OpenViewContext

func (api *Client) OpenViewContext(
	ctx context.Context,
	triggerID string,
	view ModalViewRequest,
) (*ViewResponse, error)

OpenViewContext opens a view for a user with a custom context.

func (*Client) PostEphemeral

func (api *Client) PostEphemeral(channelID, userID string, options ...MsgOption) (string, error)

PostEphemeral sends an ephemeral message to a user in a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) PostEphemeralContext

func (api *Client) PostEphemeralContext(ctx context.Context, channelID, userID string, options ...MsgOption) (timestamp string, err error)

PostEphemeralContext sends an ephemeal message to a user in a channel with a custom context For more details, see PostEphemeral documentation

func (*Client) PostMessage

func (api *Client) PostMessage(channelID string, options ...MsgOption) (string, string, error)

PostMessage sends a message to a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) PostMessageContext

func (api *Client) PostMessageContext(ctx context.Context, channelID string, options ...MsgOption) (string, string, error)

PostMessageContext sends a message to a channel with a custom context For more details, see PostMessage documentation.

func (*Client) PublishView

func (api *Client) PublishView(userID string, view HomeTabViewRequest, hash string) (*ViewResponse, error)

PublishView publishes a static view for a user.

func (*Client) PublishViewContext

func (api *Client) PublishViewContext(
	ctx context.Context,
	userID string,
	view HomeTabViewRequest,
	hash string,
) (*ViewResponse, error)

PublishViewContext publishes a static view for a user with a custom context.

func (*Client) PushView

func (api *Client) PushView(triggerID string, view ModalViewRequest) (*ViewResponse, error)

PushView pushes a view onto the stack of a root view.

func (*Client) PushViewContext

func (api *Client) PushViewContext(
	ctx context.Context,
	triggerID string,
	view ModalViewRequest,
) (*ViewResponse, error)

PublishViewContext pushes a view onto the stack of a root view with a custom context.

func (*Client) RemoveBookmark

func (api *Client) RemoveBookmark(channelID, bookmarkID string) error

RemoveBookmark removes a bookmark from a channel

func (*Client) RemoveBookmarkContext

func (api *Client) RemoveBookmarkContext(ctx context.Context, channelID, bookmarkID string) error

RemoveBookmarkContext removes a bookmark from a channel with a custom context

func (*Client) RemovePin

func (api *Client) RemovePin(channel string, item ItemRef) error

RemovePin un-pins an item from a channel

func (*Client) RemovePinContext

func (api *Client) RemovePinContext(ctx context.Context, channel string, item ItemRef) error

RemovePinContext un-pins an item from a channel with a custom context

func (*Client) RemoveReaction

func (api *Client) RemoveReaction(name string, item ItemRef) error

RemoveReaction removes a reaction emoji from a message, file or file comment.

func (*Client) RemoveReactionContext

func (api *Client) RemoveReactionContext(ctx context.Context, name string, item ItemRef) error

RemoveReactionContext removes a reaction emoji from a message, file or file comment with a custom context.

func (*Client) RemoveRemoteFile

func (api *Client) RemoveRemoteFile(externalID, fileID string) (err error)

RemoveRemoteFile removes a remote file. For more details: https://api.slack.com/methods/files.remote.remove

func (*Client) RemoveRemoteFileContext

func (api *Client) RemoveRemoteFileContext(ctx context.Context, externalID, fileID string) (err error)

RemoveRemoteFileContext removes a remote file with a custom context For more information see the RemoveRemoteFiles documentation.

func (*Client) RemoveStar

func (api *Client) RemoveStar(channel string, item ItemRef) error

RemoveStar removes a starred item from a channel

func (*Client) RemoveStarContext

func (api *Client) RemoveStarContext(ctx context.Context, channel string, item ItemRef) error

RemoveStarContext removes a starred item from a channel with a custom context

func (*Client) RenameConversation

func (api *Client) RenameConversation(channelID, channelName string) (*Channel, error)

RenameConversation renames a conversation

func (*Client) RenameConversationContext

func (api *Client) RenameConversationContext(ctx context.Context, channelID, channelName string) (*Channel, error)

RenameConversationContext renames a conversation with a custom context

func (*Client) RevokeFilePublicURL

func (api *Client) RevokeFilePublicURL(fileID string) (*File, error)

RevokeFilePublicURL disables public/external sharing for a file

func (*Client) RevokeFilePublicURLContext

func (api *Client) RevokeFilePublicURLContext(ctx context.Context, fileID string) (*File, error)

RevokeFilePublicURLContext disables public/external sharing for a file with a custom context

func (*Client) SaveWorkflowStepConfiguration

func (api *Client) SaveWorkflowStepConfiguration(workflowStepEditID string, inputs *WorkflowStepInputs, outputs *[]WorkflowStepOutput) error

func (*Client) SaveWorkflowStepConfigurationContext

func (api *Client) SaveWorkflowStepConfigurationContext(ctx context.Context, workflowStepEditID string, inputs *WorkflowStepInputs, outputs *[]WorkflowStepOutput) error

func (*Client) ScheduleMessage

func (api *Client) ScheduleMessage(channelID, postAt string, options ...MsgOption) (string, string, error)

ScheduleMessage sends a message to a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) ScheduleMessageContext

func (api *Client) ScheduleMessageContext(ctx context.Context, channelID, postAt string, options ...MsgOption) (string, string, error)

ScheduleMessageContext sends a message to a channel with a custom context

For more details, see ScheduleMessage documentation.

func (*Client) Search

func (api *Client) Search(query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)

func (*Client) SearchContext

func (api *Client) SearchContext(ctx context.Context, query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)

func (*Client) SearchFiles

func (api *Client) SearchFiles(query string, params SearchParameters) (*SearchFiles, error)

func (*Client) SearchFilesContext

func (api *Client) SearchFilesContext(ctx context.Context, query string, params SearchParameters) (*SearchFiles, error)

func (*Client) SearchMessages

func (api *Client) SearchMessages(query string, params SearchParameters) (*SearchMessages, error)

func (*Client) SearchMessagesContext

func (api *Client) SearchMessagesContext(ctx context.Context, query string, params SearchParameters) (*SearchMessages, error)

func (*Client) SendAuthRevoke

func (api *Client) SendAuthRevoke(token string) (*AuthRevokeResponse, error)

SendAuthRevoke will send a revocation for our token

func (*Client) SendAuthRevokeContext

func (api *Client) SendAuthRevokeContext(ctx context.Context, token string) (*AuthRevokeResponse, error)

SendAuthRevokeContext will send a revocation request for our token to api.revoke with context

func (*Client) SendMessage

func (api *Client) SendMessage(channel string, options ...MsgOption) (string, string, string, error)

SendMessage more flexible method for configuring messages.

func (*Client) SendMessageContext

func (api *Client) SendMessageContext(ctx context.Context, channelID string, options ...MsgOption) (_channel string, _timestamp string, _text string, err error)

SendMessageContext more flexible method for configuring messages with a custom context.

func (*Client) SendSSOBindingEmail

func (api *Client) SendSSOBindingEmail(teamName, user string) error

SendSSOBindingEmail sends an SSO binding email to the specified user

func (*Client) SendSSOBindingEmailContext

func (api *Client) SendSSOBindingEmailContext(ctx context.Context, teamName, user string) error

SendSSOBindingEmailContext sends an SSO binding email to the specified user with a custom context

func (*Client) SetPurposeOfConversation

func (api *Client) SetPurposeOfConversation(channelID, purpose string) (*Channel, error)

SetPurposeOfConversation sets the purpose for a conversation

func (*Client) SetPurposeOfConversationContext

func (api *Client) SetPurposeOfConversationContext(ctx context.Context, channelID, purpose string) (*Channel, error)

SetPurposeOfConversationContext sets the purpose for a conversation with a custom context

func (*Client) SetRegular

func (api *Client) SetRegular(teamName, user string) error

SetRegular enables the specified user

func (*Client) SetRegularContext

func (api *Client) SetRegularContext(ctx context.Context, teamName, user string) error

SetRegularContext enables the specified user with a custom context

func (*Client) SetRestricted

func (api *Client) SetRestricted(teamName, uid string, channelIds ...string) error

SetRestricted converts a user into a restricted account

func (*Client) SetRestrictedContext

func (api *Client) SetRestrictedContext(ctx context.Context, teamName, uid string, channelIds ...string) error

SetRestrictedContext converts a user into a restricted account with a custom context

func (*Client) SetSnooze

func (api *Client) SetSnooze(minutes int) (*DNDStatus, error)

SetSnooze adjusts the snooze duration for a user's Do Not Disturb settings. If a snooze session is not already active for the user, invoking this method will begin one for the specified duration.

func (*Client) SetSnoozeContext

func (api *Client) SetSnoozeContext(ctx context.Context, minutes int) (*DNDStatus, error)

SetSnoozeContext adjusts the snooze duration for a user's Do Not Disturb settings with a custom context. For more information see the SetSnooze docs

func (*Client) SetTopicOfConversation

func (api *Client) SetTopicOfConversation(channelID, topic string) (*Channel, error)

SetTopicOfConversation sets the topic for a conversation

func (*Client) SetTopicOfConversationContext

func (api *Client) SetTopicOfConversationContext(ctx context.Context, channelID, topic string) (*Channel, error)

SetTopicOfConversationContext sets the topic for a conversation with a custom context

func (*Client) SetUltraRestricted

func (api *Client) SetUltraRestricted(teamName, uid, channel string) error

SetUltraRestricted converts a user into a single-channel guest

func (*Client) SetUltraRestrictedContext

func (api *Client) SetUltraRestrictedContext(ctx context.Context, teamName, uid, channel string) error

SetUltraRestrictedContext converts a user into a single-channel guest with a custom context

func (*Client) SetUserAsActive

func (api *Client) SetUserAsActive() error

SetUserAsActive marks the currently authenticated user as active

func (*Client) SetUserAsActiveContext

func (api *Client) SetUserAsActiveContext(ctx context.Context) (err error)

SetUserAsActiveContext marks the currently authenticated user as active with a custom context

func (*Client) SetUserCustomStatus

func (api *Client) SetUserCustomStatus(statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatus will set a custom status and emoji for the currently authenticated user. If statusEmoji is "" and statusText is not, the Slack API will automatically set it to ":speech_balloon:". Otherwise, if both are "" the Slack API will unset the custom status/emoji. If statusExpiration is set to 0 the status will not expire.

func (*Client) SetUserCustomStatusContext

func (api *Client) SetUserCustomStatusContext(ctx context.Context, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusContext will set a custom status and emoji for the currently authenticated user with a custom context

For more information see SetUserCustomStatus

func (*Client) SetUserCustomStatusContextWithUser

func (api *Client) SetUserCustomStatusContextWithUser(ctx context.Context, user, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusContextWithUser will set a custom status and emoji for the provided user with a custom context

For more information see SetUserCustomStatus

func (*Client) SetUserCustomStatusWithUser

func (api *Client) SetUserCustomStatusWithUser(user, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusWithUser will set a custom status and emoji for the provided user.

For more information see SetUserCustomStatus

func (*Client) SetUserPhoto

func (api *Client) SetUserPhoto(image string, params UserSetPhotoParams) error

SetUserPhoto changes the currently authenticated user's profile image

func (*Client) SetUserPhotoContext

func (api *Client) SetUserPhotoContext(ctx context.Context, image string, params UserSetPhotoParams) (err error)

SetUserPhotoContext changes the currently authenticated user's profile image using a custom context

func (*Client) SetUserPresence

func (api *Client) SetUserPresence(presence string) error

SetUserPresence changes the currently authenticated user presence

func (*Client) SetUserPresenceContext

func (api *Client) SetUserPresenceContext(ctx context.Context, presence string) error

SetUserPresenceContext changes the currently authenticated user presence with a custom context

func (*Client) SetUserRealName

func (api *Client) SetUserRealName(realName string) error

SetUserRealName changes the currently authenticated user's realName

For more information see SetUserRealNameContextWithUser

func (*Client) SetUserRealNameContextWithUser

func (api *Client) SetUserRealNameContextWithUser(ctx context.Context, user, realName string) error

SetUserRealNameContextWithUser will set a real name for the provided user with a custom context

func (*Client) ShareFilePublicURL

func (api *Client) ShareFilePublicURL(fileID string) (*File, []Comment, *Paging, error)

ShareFilePublicURL enabled public/external sharing for a file

func (*Client) ShareFilePublicURLContext

func (api *Client) ShareFilePublicURLContext(ctx context.Context, fileID string) (*File, []Comment, *Paging, error)

ShareFilePublicURLContext enabled public/external sharing for a file with a custom context

func (*Client) ShareRemoteFile

func (api *Client) ShareRemoteFile(channels []string, externalID, fileID string) (file *RemoteFile, err error)

ShareRemoteFile shares a remote file to channels For more details: https://api.slack.com/methods/files.remote.share

func (*Client) ShareRemoteFileContext

func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string, externalID, fileID string) (file *RemoteFile, err error)

ShareRemoteFileContext shares a remote file to channels with a custom context. For more details see the ShareRemoteFile documentation.

func (*Client) StartRTM

func (api *Client) StartRTM() (info *Info, websocketURL string, err error)

StartRTM calls the "rtm.start" endpoint and returns the provided URL and the full Info block.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) StartRTMContext

func (api *Client) StartRTMContext(ctx context.Context) (info *Info, websocketURL string, err error)

StartRTMContext calls the "rtm.start" endpoint and returns the provided URL and the full Info block with a custom context.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) StartSocketModeContext

func (api *Client) StartSocketModeContext(ctx context.Context) (info *SocketModeConnection, websocketURL string, err error)

StartSocketModeContext calls the "apps.connections.open" endpoint and returns the provided URL and the full Info block with a custom context.

To have a fully managed Socket Mode connection, use `socketmode.New()`, and call `Run()` on it.

func (*Client) UnArchiveConversation

func (api *Client) UnArchiveConversation(channelID string) error

UnArchiveConversation reverses conversation archival

func (*Client) UnArchiveConversationContext

func (api *Client) UnArchiveConversationContext(ctx context.Context, channelID string) error

UnArchiveConversationContext reverses conversation archival with a custom context

func (*Client) UnMuteChat

func (api *Client) UnMuteChat(channelID string) (*UserPrefsCarrier, error)

func (*Client) UnfurlMessage

func (api *Client) UnfurlMessage(channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error)

UnfurlMessage unfurls a message in a channel

func (*Client) UnfurlMessageContext

func (api *Client) UnfurlMessageContext(ctx context.Context, channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error)

UnfurlMessageContext unfurls a message in a channel with a custom context

func (*Client) UnfurlMessageWithAuthURL

func (api *Client) UnfurlMessageWithAuthURL(channelID, timestamp string, userAuthURL string, options ...MsgOption) (string, string, string, error)

UnfurlMessageWithAuthURL sends an unfurl request containing an authentication URL. For more details see: https://api.slack.com/reference/messaging/link-unfurling#authenticated_unfurls

func (*Client) UnfurlMessageWithAuthURLContext

func (api *Client) UnfurlMessageWithAuthURLContext(ctx context.Context, channelID, timestamp string, userAuthURL string, options ...MsgOption) (string, string, string, error)

UnfurlMessageWithAuthURLContext sends an unfurl request containing an authentication URL. For more details see: https://api.slack.com/reference/messaging/link-unfurling#authenticated_unfurls

func (*Client) UninstallApp

func (api *Client) UninstallApp(clientID, clientSecret string) error

func (*Client) UninstallAppContext

func (api *Client) UninstallAppContext(ctx context.Context, clientID, clientSecret string) error

func (*Client) UnsetUserCustomStatus

func (api *Client) UnsetUserCustomStatus() error

UnsetUserCustomStatus removes the custom status message for the currently authenticated user. This is a convenience method that wraps (*Client).SetUserCustomStatus().

func (*Client) UnsetUserCustomStatusContext

func (api *Client) UnsetUserCustomStatusContext(ctx context.Context) error

UnsetUserCustomStatusContext removes the custom status message for the currently authenticated user with a custom context. This is a convenience method that wraps (*Client).SetUserCustomStatus().

func (*Client) UpdateMessage

func (api *Client) UpdateMessage(channelID, timestamp string, options ...MsgOption) (string, string, string, error)

UpdateMessage updates a message in a channel

func (*Client) UpdateMessageContext

func (api *Client) UpdateMessageContext(ctx context.Context, channelID, timestamp string, options ...MsgOption) (string, string, string, error)

UpdateMessageContext updates a message in a channel

func (*Client) UpdateRemoteFile

func (api *Client) UpdateRemoteFile(fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error)

UpdateRemoteFile updates a remote file For more details: https://api.slack.com/methods/files.remote.update

func (*Client) UpdateRemoteFileContext

func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error)

UpdateRemoteFileContext updates a remote file with a custom context For more details see the UpdateRemoteFile documentation.

func (*Client) UpdateUserGroup

func (api *Client) UpdateUserGroup(userGroupID string, options ...UpdateUserGroupsOption) (UserGroup, error)

UpdateUserGroup will update an existing user group

func (*Client) UpdateUserGroupContext

func (api *Client) UpdateUserGroupContext(ctx context.Context, userGroupID string, options ...UpdateUserGroupsOption) (UserGroup, error)

UpdateUserGroupContext will update an existing user group with a custom context

func (*Client) UpdateUserGroupMembers

func (api *Client) UpdateUserGroupMembers(userGroup string, members string) (UserGroup, error)

UpdateUserGroupMembers will update the members of an existing user group

func (*Client) UpdateUserGroupMembersContext

func (api *Client) UpdateUserGroupMembersContext(ctx context.Context, userGroup string, members string) (UserGroup, error)

UpdateUserGroupMembersContext will update the members of an existing user group with a custom context

func (*Client) UpdateView

func (api *Client) UpdateView(view ModalViewRequest, externalID, hash, viewID string) (*ViewResponse, error)

UpdateView updates an existing view.

func (*Client) UpdateViewContext

func (api *Client) UpdateViewContext(
	ctx context.Context,
	view ModalViewRequest,
	externalID, hash,
	viewID string,
) (*ViewResponse, error)

UpdateViewContext updates an existing view with a custom context.

func (*Client) UploadFile

func (api *Client) UploadFile(params FileUploadParameters) (file *File, err error)

UploadFile uploads a file

func (*Client) UploadFileContext

func (api *Client) UploadFileContext(ctx context.Context, params FileUploadParameters) (file *File, err error)

UploadFileContext uploads a file and setting a custom context

func (*Client) WorkflowStepCompleted

func (api *Client) WorkflowStepCompleted(workflowStepExecuteID string, options ...WorkflowStepCompletedRequestOption) error

WorkflowStepCompleted indicates step is completed

func (*Client) WorkflowStepFailed

func (api *Client) WorkflowStepFailed(workflowStepExecuteID string, errorMessage string) error

WorkflowStepFailed indicates step is failed

type CommandsChangedEvent

type CommandsChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp string `json:"event_ts"`
}

CommandsChangedEvent represents the commands changed event

type Comment

type Comment struct {
	ID        string   `json:"id,omitempty"`
	Created   JSONTime `json:"created,omitempty"`
	Timestamp JSONTime `json:"timestamp,omitempty"`
	User      string   `json:"user,omitempty"`
	Comment   string   `json:"comment,omitempty"`
}

Comment contains all the information relative to a comment

type ConfigurationModalRequest

type ConfigurationModalRequest struct {
	ModalViewRequest
}

func NewConfigurationModalRequest

func NewConfigurationModalRequest(blocks Blocks, privateMetaData string, externalID string) *ConfigurationModalRequest

type ConfirmationBlockObject

type ConfirmationBlockObject struct {
	Title   *TextBlockObject `json:"title"`
	Text    *TextBlockObject `json:"text"`
	Confirm *TextBlockObject `json:"confirm"`
	Deny    *TextBlockObject `json:"deny"`
	Style   Style            `json:"style,omitempty"`
}

ConfirmationBlockObject defines a dialog that provides a confirmation step to any interactive element. This dialog will ask the user to confirm their action by offering a confirm and deny buttons.

More Information: https://api.slack.com/reference/messaging/composition-objects#confirm

func NewConfirmationBlockObject

func NewConfirmationBlockObject(title, text, confirm, deny *TextBlockObject) *ConfirmationBlockObject

NewConfirmationBlockObject returns an instance of a new Confirmation Block Object

func (*ConfirmationBlockObject) WithStyle

WithStyle add styling to confirmation object

type ConfirmationField

type ConfirmationField struct {
	Title       string `json:"title,omitempty"`        // Optional.
	Text        string `json:"text"`                   // Required.
	OkText      string `json:"ok_text,omitempty"`      // Optional. Defaults to "Okay"
	DismissText string `json:"dismiss_text,omitempty"` // Optional. Defaults to "Cancel"
}

ConfirmationField are used to ask users to confirm actions

type ConnectedEvent

type ConnectedEvent struct {
	ConnectionCount int // 1 = first time, 2 = second time
	Info            *Info
}

ConnectedEvent is used for when we connect to Slack

type ConnectingEvent

type ConnectingEvent struct {
	Attempt         int // 1 = first attempt, 2 = second attempt
	ConnectionCount int
}

ConnectingEvent contains information about our connection attempt

type ConnectionErrorEvent

type ConnectionErrorEvent struct {
	Attempt  int
	Backoff  time.Duration // how long we'll wait before the next attempt
	ErrorObj error
}

ConnectionErrorEvent contains information about a connection error

func (*ConnectionErrorEvent) Error

func (c *ConnectionErrorEvent) Error() string

type Container

type Container struct {
	Type         string      `json:"type"`
	ViewID       string      `json:"view_id"`
	MessageTs    string      `json:"message_ts"`
	ThreadTs     string      `json:"thread_ts,omitempty"`
	AttachmentID json.Number `json:"attachment_id"`
	ChannelID    string      `json:"channel_id"`
	IsEphemeral  bool        `json:"is_ephemeral"`
	IsAppUnfurl  bool        `json:"is_app_unfurl"`
}

type ContextBlock

type ContextBlock struct {
	Type            MessageBlockType `json:"type"`
	BlockID         string           `json:"block_id,omitempty"`
	ContextElements ContextElements  `json:"elements"`
}

ContextBlock defines data that is used to display message context, which can include both images and text.

More Information: https://api.slack.com/reference/messaging/blocks#context

func NewContextBlock

func NewContextBlock(blockID string, mixedElements ...MixedElement) *ContextBlock

NewContextBlock returns a new instance of a context block

func (ContextBlock) BlockType

func (s ContextBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type ContextElements

type ContextElements struct {
	Elements []MixedElement
}

func (*ContextElements) MarshalJSON

func (e *ContextElements) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for ContextElements so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*ContextElements) UnmarshalJSON

func (e *ContextElements) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for ContextElements, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Conversation

type Conversation struct {
	ID                 string   `json:"id"`
	Created            JSONTime `json:"created"`
	IsOpen             bool     `json:"is_open"`
	LastRead           string   `json:"last_read,omitempty"`
	Latest             *Message `json:"latest,omitempty"`
	UnreadCount        int      `json:"unread_count,omitempty"`
	UnreadCountDisplay int      `json:"unread_count_display,omitempty"`
	IsGroup            bool     `json:"is_group"`
	IsShared           bool     `json:"is_shared"`
	IsIM               bool     `json:"is_im"`
	IsExtShared        bool     `json:"is_ext_shared"`
	IsOrgShared        bool     `json:"is_org_shared"`
	IsPendingExtShared bool     `json:"is_pending_ext_shared"`
	IsPrivate          bool     `json:"is_private"`
	IsMpIM             bool     `json:"is_mpim"`
	Unlinked           int      `json:"unlinked"`
	NameNormalized     string   `json:"name_normalized"`
	NumMembers         int      `json:"num_members"`
	Priority           float64  `json:"priority"`
	User               string   `json:"user"`
}

Conversation is the foundation for IM and BaseGroupConversation

type CtxChannel

type CtxChannel struct {
	ID                 string `json:"id"`
	Name               string `json:"name"`
	IsExtShared        bool   `json:"is_ext_shared"`
	IsMPIM             bool   `json:"is_mpim"`
	ISOrgShared        bool   `json:"is_org_shared"`
	IsPendingExtShared bool   `json:"is_pending_ext_shared"`
	IsPrivate          bool   `json:"is_private"`
	IsShared           bool   `json:"is_shared"`
}

type CtxMessage

type CtxMessage struct {
	User      string `json:"user"`
	Username  string `json:"username"`
	Text      string `json:"text"`
	Timestamp string `json:"ts"`
	Type      string `json:"type"`
}

type DNDStatus

type DNDStatus struct {
	Enabled            bool `json:"dnd_enabled"`
	NextStartTimestamp int  `json:"next_dnd_start_ts"`
	NextEndTimestamp   int  `json:"next_dnd_end_ts"`
	SnoozeInfo
}

type DNDUpdatedEvent

type DNDUpdatedEvent struct {
	Type   string    `json:"type"`
	User   string    `json:"user"`
	Status DNDStatus `json:"dnd_status"`
}

DNDUpdatedEvent represents the update event for Do Not Disturb

type DatePickerBlockElement

type DatePickerBlockElement struct {
	Type        MessageElementType       `json:"type"`
	ActionID    string                   `json:"action_id,omitempty"`
	Placeholder *TextBlockObject         `json:"placeholder,omitempty"`
	InitialDate string                   `json:"initial_date,omitempty"`
	Confirm     *ConfirmationBlockObject `json:"confirm,omitempty"`
}

DatePickerBlockElement defines an element which lets users easily select a date from a calendar style UI. Date picker elements can be used inside of section and actions blocks.

More Information: https://api.slack.com/reference/messaging/block-elements#datepicker

func NewDatePickerBlockElement

func NewDatePickerBlockElement(actionID string) *DatePickerBlockElement

NewDatePickerBlockElement returns an instance of a date picker element

func (DatePickerBlockElement) ElementType

ElementType returns the type of the Element

type Debug

type Debug interface {
	Debug() bool

	// Debugf print a formatted debug line.
	Debugf(format string, v ...interface{})
	// Debugln print a debug line.
	Debugln(v ...interface{})
}

type DeleteScheduledMessageParameters

type DeleteScheduledMessageParameters struct {
	Channel            string
	ScheduledMessageID string
	AsUser             bool
}

type DesktopNotificationEvent

type DesktopNotificationEvent struct {
	Type            string `json:"type"`
	Title           string `json:"title"`
	Subtitle        string `json:"subtitle"`
	Message         string `json:"msg"`
	Timestamp       string `json:"ts"`
	Content         string `json:"content"`
	Channel         string `json:"channel"`
	LaunchURI       string `json:"launchUri"`
	AvatarImage     string `json:"avatarImage"`
	SsbFilename     string `json:"ssbFilename"`
	ImageURI        string `json:"imageUri"`
	IsShared        bool   `json:"is_shared"`
	IsChannelInvite bool   `json:"is_channel_invite"`
	EventTimestamp  string `json:"event_ts"`
}

DesktopNotificationEvent represents the update event for Desktop Notification.

type Dialog

type Dialog struct {
	TriggerID      string          `json:"trigger_id"`      // Required
	CallbackID     string          `json:"callback_id"`     // Required
	State          string          `json:"state,omitempty"` // Optional
	Title          string          `json:"title"`
	SubmitLabel    string          `json:"submit_label,omitempty"`
	NotifyOnCancel bool            `json:"notify_on_cancel"`
	Elements       []DialogElement `json:"elements"`
}

Dialog as in Slack dialogs https://api.slack.com/dialogs#option_element_attributes#top-level_dialog_attributes

Example
dialog := _mocDialog()
fmt.Println(*dialog)
Output:

{trigger_xyz callback_xyz  Dialog_title Send false []}

type DialogCallback

type DialogCallback InteractionCallback

DialogCallback DEPRECATED use InteractionCallback

type DialogElement

type DialogElement interface{}

DialogElement abstract type for dialogs.

type DialogInput

type DialogInput struct {
	Type        InputType `json:"type"`
	Label       string    `json:"label"`
	Name        string    `json:"name"`
	Placeholder string    `json:"placeholder"`
	Optional    bool      `json:"optional"`
	Hint        string    `json:"hint"`
}

DialogInput for dialogs input type text or menu

type DialogInputSelect

type DialogInputSelect struct {
	DialogInput
	Value           string               `json:"value,omitempty"`            //Optional.
	DataSource      SelectDataSource     `json:"data_source,omitempty"`      //Optional. Allowed values: "users", "channels", "conversations", "external".
	SelectedOptions []DialogSelectOption `json:"selected_options,omitempty"` //Optional. May hold at most one element, for use with "external" only.
	Options         []DialogSelectOption `json:"options,omitempty"`          //One of options or option_groups is required.
	OptionGroups    []DialogOptionGroup  `json:"option_groups,omitempty"`    //Provide up to 100 options.
	MinQueryLength  int                  `json:"min_query_length,omitempty"` //Optional. minimum characters before query is sent.
	Hint            string               `json:"hint,omitempty"`             //Optional. Additional hint text.
}

DialogInputSelect dialog support for select boxes.

func NewChannelsSelect

func NewChannelsSelect(name, label string) *DialogInputSelect

NewChannelsSelect returns a `Channels` select

func NewConversationsSelect

func NewConversationsSelect(name, label string) *DialogInputSelect

NewConversationsSelect returns a `Conversations` select

func NewExternalSelectDialogInput

func NewExternalSelectDialogInput(name, label string, options []DialogSelectOption) *DialogInputSelect

NewExternalSelectDialogInput constructor for a `external` datasource menu input

func NewGroupedSelectDialogInput

func NewGroupedSelectDialogInput(name, label string, options []DialogOptionGroup) *DialogInputSelect

NewGroupedSelectDialogInput creates grouped options select input for Dialogs.

func NewStaticSelectDialogInput

func NewStaticSelectDialogInput(name, label string, options []DialogSelectOption) *DialogInputSelect

NewStaticSelectDialogInput constructor for a `static` datasource menu input

func NewUsersSelect

func NewUsersSelect(name, label string) *DialogInputSelect

NewUsersSelect returns a `Users` select

type DialogInputValidationError

type DialogInputValidationError struct {
	Name  string `json:"name"`
	Error string `json:"error"`
}

DialogInputValidationError is an error when user inputs incorrect value to form from within a dialog

type DialogInputValidationErrors

type DialogInputValidationErrors struct {
	Errors []DialogInputValidationError `json:"errors"`
}

DialogInputValidationErrors lists the name of field and that error messages

type DialogOpenResponse

type DialogOpenResponse struct {
	SlackResponse
	DialogResponseMetadata DialogResponseMetadata `json:"response_metadata"`
}

DialogOpenResponse response from `dialog.open`

type DialogOptionGroup

type DialogOptionGroup struct {
	Label   string               `json:"label"`
	Options []DialogSelectOption `json:"options"`
}

DialogOptionGroup is a collection of options for creating a segmented table

func NewDialogOptionGroup

func NewDialogOptionGroup(label string, options ...DialogSelectOption) DialogOptionGroup

NewDialogOptionGroup creates a DialogOptionGroup from several select options

type DialogResponseMetadata

type DialogResponseMetadata struct {
	Messages []string `json:"messages"`
}

DialogResponseMetadata lists the error messages

type DialogSelectOption

type DialogSelectOption struct {
	Label string `json:"label"`
	Value string `json:"value"`
}

DialogSelectOption is an option for the user to select from the menu

type DialogSubmissionCallback

type DialogSubmissionCallback struct {
	// NOTE: State is only used with the dialog_submission type.
	// You should use InteractionCallback.BlockActionsState for block_actions type.
	State      string            `json:"-"`
	Submission map[string]string `json:"submission"`
}

DialogSubmissionCallback is sent from Slack when a user submits a form from within a dialog

type DialogTrigger

type DialogTrigger struct {
	TriggerID string `json:"trigger_id"` //Required. Must respond within 3 seconds.
	Dialog    Dialog `json:"dialog"`     //Required.
}

DialogTrigger ...

type DisconnectedEvent

type DisconnectedEvent struct {
	Intentional bool
	Cause       error
}

DisconnectedEvent contains information about how we disconnected

type DispatchActionConfig

type DispatchActionConfig struct {
	TriggerActionsOn []string `json:"trigger_actions_on,omitempty"`
}

type DividerBlock

type DividerBlock struct {
	Type    MessageBlockType `json:"type"`
	BlockID string           `json:"block_id,omitempty"`
}

DividerBlock for displaying a divider line between blocks (similar to <hr> tag in html)

More Information: https://api.slack.com/reference/messaging/blocks#divider

func NewDividerBlock

func NewDividerBlock() *DividerBlock

NewDividerBlock returns a new instance of a divider block

func (DividerBlock) BlockType

func (s DividerBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type EditBookmarkParameters

type EditBookmarkParameters struct {
	Title *string // Change the title. Set to "" to clear
	Emoji *string // Change the emoji. Set to "" to clear
	Link  string  // Change the link
}

type Edited

type Edited struct {
	User      string `json:"user,omitempty"`
	Timestamp string `json:"ts,omitempty"`
}

Edited indicates that a message has been edited.

type EmailDomainChangedEvent

type EmailDomainChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp string `json:"event_ts"`
	EmailDomain    string `json:"email_domain"`
}

EmailDomainChangedEvent represents the email domain changed event

type EmojiChangedEvent

type EmojiChangedEvent struct {
	Type           string   `json:"type"`
	SubType        string   `json:"subtype"`
	Name           string   `json:"name"`
	Names          []string `json:"names"`
	Value          string   `json:"value"`
	EventTimestamp string   `json:"event_ts"`
}

EmojiChangedEvent represents the emoji changed event

type Enterprise

type Enterprise struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

type EnterpriseUser

type EnterpriseUser struct {
	ID             string   `json:"id"`
	EnterpriseID   string   `json:"enterprise_id"`
	EnterpriseName string   `json:"enterprise_name"`
	IsAdmin        bool     `json:"is_admin"`
	IsOwner        bool     `json:"is_owner"`
	Teams          []string `json:"teams"`
}

EnterpriseUser is present when a user is part of Slack Enterprise Grid https://api.slack.com/types/user#enterprise_grid_user_objects

type Event

type Event struct {
	Type string `json:"type,omitempty"`
}

Event contains the event type

type EventAuthorization

type EventAuthorization struct {
	EnterpriseID        string `json:"enterprise_id"`
	TeamID              string `json:"team_id"`
	UserID              string `json:"user_id"`
	IsBot               bool   `json:"is_bot"`
	IsEnterpriseInstall bool   `json:"is_enterprise_install"`
}

type File

type File struct {
	ID        string   `json:"id"`
	Created   JSONTime `json:"created"`
	Timestamp JSONTime `json:"timestamp"`

	Name              string `json:"name"`
	Title             string `json:"title"`
	Mimetype          string `json:"mimetype"`
	ImageExifRotation int    `json:"image_exif_rotation"`
	Filetype          string `json:"filetype"`
	PrettyType        string `json:"pretty_type"`
	User              string `json:"user"`

	Mode         string `json:"mode"`
	Editable     bool   `json:"editable"`
	IsExternal   bool   `json:"is_external"`
	ExternalType string `json:"external_type"`

	Size int `json:"size"`

	URL                string `json:"url"`          // Deprecated - never set
	URLDownload        string `json:"url_download"` // Deprecated - never set
	URLPrivate         string `json:"url_private"`
	URLPrivateDownload string `json:"url_private_download"`

	OriginalH   int    `json:"original_h"`
	OriginalW   int    `json:"original_w"`
	Thumb64     string `json:"thumb_64"`
	Thumb80     string `json:"thumb_80"`
	Thumb160    string `json:"thumb_160"`
	Thumb360    string `json:"thumb_360"`
	Thumb360Gif string `json:"thumb_360_gif"`
	Thumb360W   int    `json:"thumb_360_w"`
	Thumb360H   int    `json:"thumb_360_h"`
	Thumb480    string `json:"thumb_480"`
	Thumb480W   int    `json:"thumb_480_w"`
	Thumb480H   int    `json:"thumb_480_h"`
	Thumb720    string `json:"thumb_720"`
	Thumb720W   int    `json:"thumb_720_w"`
	Thumb720H   int    `json:"thumb_720_h"`
	Thumb960    string `json:"thumb_960"`
	Thumb960W   int    `json:"thumb_960_w"`
	Thumb960H   int    `json:"thumb_960_h"`
	Thumb1024   string `json:"thumb_1024"`
	Thumb1024W  int    `json:"thumb_1024_w"`
	Thumb1024H  int    `json:"thumb_1024_h"`

	Permalink       string `json:"permalink"`
	PermalinkPublic string `json:"permalink_public"`

	EditLink         string `json:"edit_link"`
	Preview          string `json:"preview"`
	PreviewHighlight string `json:"preview_highlight"`
	Lines            int    `json:"lines"`
	LinesMore        int    `json:"lines_more"`

	IsPublic        bool     `json:"is_public"`
	PublicURLShared bool     `json:"public_url_shared"`
	Channels        []string `json:"channels"`
	Groups          []string `json:"groups"`
	IMs             []string `json:"ims"`
	InitialComment  Comment  `json:"initial_comment"`
	CommentsCount   int      `json:"comments_count"`
	NumStars        int      `json:"num_stars"`
	IsStarred       bool     `json:"is_starred"`
	Shares          Share    `json:"shares"`
}

File contains all the information for a file

type FileBlock

type FileBlock struct {
	Type       MessageBlockType `json:"type"`
	BlockID    string           `json:"block_id,omitempty"`
	ExternalID string           `json:"external_id"`
	Source     string           `json:"source"`
}

FileBlock defines data that is used to display a remote file.

More Information: https://api.slack.com/reference/block-kit/blocks#file

func NewFileBlock

func NewFileBlock(blockID string, externalID string, source string) *FileBlock

NewFileBlock returns a new instance of a file block

func (FileBlock) BlockType

func (s FileBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type FileChangeEvent

type FileChangeEvent fileActionEvent

FileChangeEvent represents the File change event

type FileCommentAddedEvent

type FileCommentAddedEvent struct {
	Comment Comment `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentAddedEvent represents the File comment added event

type FileCommentDeletedEvent

type FileCommentDeletedEvent struct {
	Comment string `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentDeletedEvent represents the File comment deleted event

type FileCommentEditedEvent

type FileCommentEditedEvent struct {
	Comment Comment `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentEditedEvent represents the File comment edited event

type FileCreatedEvent

type FileCreatedEvent fileActionEvent

FileCreatedEvent represents the File created event

type FileDeletedEvent

type FileDeletedEvent fileActionEvent

FileDeletedEvent represents the File deleted event

type FilePrivateEvent

type FilePrivateEvent fileActionEvent

FilePrivateEvent represents the File private event

type FilePublicEvent

type FilePublicEvent fileActionEvent

FilePublicEvent represents the File public event

type FileSharedEvent

type FileSharedEvent fileActionEvent

FileSharedEvent represents the File shared event

type FileUnsharedEvent

type FileUnsharedEvent fileActionEvent

FileUnsharedEvent represents the File unshared event

type FileUploadParameters

type FileUploadParameters struct {
	File            string
	Content         string
	Reader          io.Reader
	Filetype        string
	Filename        string
	Title           string
	InitialComment  string
	Channels        []string
	ThreadTimestamp string
}

FileUploadParameters contains all the parameters necessary (including the optional ones) for an UploadFile() request.

There are three ways to upload a file. You can either set Content if file is small, set Reader if file is large, or provide a local file path in File to upload it from your filesystem.

Note that when using the Reader option, you *must* specify the Filename, otherwise the Slack API isn't happy.

type GetConversationHistoryParameters

type GetConversationHistoryParameters struct {
	ChannelID          string
	Cursor             string
	Inclusive          bool
	Latest             string
	Limit              int
	Oldest             string
	IncludeAllMetadata bool
}

type GetConversationHistoryResponse

type GetConversationHistoryResponse struct {
	SlackResponse
	HasMore          bool   `json:"has_more"`
	PinCount         int    `json:"pin_count"`
	Latest           string `json:"latest"`
	ResponseMetaData struct {
		NextCursor string `json:"next_cursor"`
	} `json:"response_metadata"`
	Messages []Message `json:"messages"`
}

type GetConversationRepliesParameters

type GetConversationRepliesParameters struct {
	ChannelID string
	Timestamp string
	Cursor    string
	Inclusive bool
	Latest    string
	Limit     int
	Oldest    string
}

type GetConversationsForUserParameters

type GetConversationsForUserParameters struct {
	UserID          string
	Cursor          string
	Types           []string
	Limit           int
	ExcludeArchived bool
}

type GetConversationsParameters

type GetConversationsParameters struct {
	Cursor          string
	ExcludeArchived bool
	Limit           int
	Types           []string
	TeamID          string
}

type GetFilesParameters

type GetFilesParameters struct {
	User          string
	Channel       string
	TimestampFrom JSONTime
	TimestampTo   JSONTime
	Types         string
	Count         int
	Page          int
	ShowHidden    bool
}

GetFilesParameters contains all the parameters necessary (including the optional ones) for a GetFiles() request

func NewGetFilesParameters

func NewGetFilesParameters() GetFilesParameters

NewGetFilesParameters provides an instance of GetFilesParameters with all the sane default values set

type GetReactionsParameters

type GetReactionsParameters struct {
	Full bool
}

GetReactionsParameters is the inputs to get reactions to an item.

func NewGetReactionsParameters

func NewGetReactionsParameters() GetReactionsParameters

NewGetReactionsParameters initializes the inputs to get reactions to an item.

type GetScheduledMessagesParameters

type GetScheduledMessagesParameters struct {
	Channel string
	Cursor  string
	Latest  string
	Limit   int
	Oldest  string
}

type GetUserGroupsOption

type GetUserGroupsOption func(*GetUserGroupsParams)

GetUserGroupsOption options for the GetUserGroups method call.

func GetUserGroupsOptionIncludeCount

func GetUserGroupsOptionIncludeCount(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeCount include the number of users in each User Group (default: false)

func GetUserGroupsOptionIncludeDisabled

func GetUserGroupsOptionIncludeDisabled(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeDisabled include disabled User Groups (default: false)

func GetUserGroupsOptionIncludeUsers

func GetUserGroupsOptionIncludeUsers(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeUsers include the list of users for each User Group (default: false)

type GetUserGroupsParams

type GetUserGroupsParams struct {
	IncludeCount    bool
	IncludeDisabled bool
	IncludeUsers    bool
}

GetUserGroupsParams contains arguments for GetUserGroups method call

type GetUserProfileParameters

type GetUserProfileParameters struct {
	UserID        string
	IncludeLabels bool
}

GetUserProfileParameters are the parameters required to get user profile

type GetUsersInConversationParameters

type GetUsersInConversationParameters struct {
	ChannelID string
	Cursor    string
	Limit     int
}

type GetUsersOption

type GetUsersOption func(*UserPagination)

GetUsersOption options for the GetUsers method call.

func GetUsersOptionLimit

func GetUsersOptionLimit(n int) GetUsersOption

GetUsersOptionLimit limit the number of users returned

func GetUsersOptionPresence

func GetUsersOptionPresence(n bool) GetUsersOption

GetUsersOptionPresence include user presence

func GetUsersOptionTeamID

func GetUsersOptionTeamID(teamId string) GetUsersOption

GetUsersOptionTeamID include team Id

type Group

type Group struct {
	GroupConversation
	IsGroup bool `json:"is_group"`
}

Group contains all the information for a group

type GroupArchiveEvent

type GroupArchiveEvent ChannelInfoEvent

GroupArchiveEvent represents the Group archive event

type GroupCloseEvent

type GroupCloseEvent ChannelInfoEvent

GroupCloseEvent represents the Group close event

type GroupConversation

type GroupConversation struct {
	Conversation
	Name       string   `json:"name"`
	Creator    string   `json:"creator"`
	IsArchived bool     `json:"is_archived"`
	Members    []string `json:"members"`
	Topic      Topic    `json:"topic"`
	Purpose    Purpose  `json:"purpose"`
}

GroupConversation is the foundation for Group and Channel

type GroupCreatedEvent

type GroupCreatedEvent struct {
	Type    string             `json:"type"`
	User    string             `json:"user"`
	Channel ChannelCreatedInfo `json:"channel"`
}

GroupCreatedEvent represents the Group created event

type GroupHistoryChangedEvent

type GroupHistoryChangedEvent ChannelHistoryChangedEvent

GroupHistoryChangedEvent represents the Group history changed event

type GroupJoinedEvent

type GroupJoinedEvent ChannelJoinedEvent

GroupJoinedEvent represents the Group joined event

type GroupLeftEvent

type GroupLeftEvent ChannelInfoEvent

GroupLeftEvent represents the Group left event

type GroupMarkedEvent

type GroupMarkedEvent ChannelInfoEvent

GroupMarkedEvent represents the Group marked event

type GroupOpenEvent

type GroupOpenEvent ChannelInfoEvent

GroupOpenEvent represents the Group open event

type GroupRenameEvent

type GroupRenameEvent struct {
	Type      string          `json:"type"`
	Group     GroupRenameInfo `json:"channel"`
	Timestamp string          `json:"ts"`
}

GroupRenameEvent represents the Group rename event

type GroupRenameInfo

type GroupRenameInfo struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Created string `json:"created"`
}

GroupRenameInfo represents the group info related to the renamed group

type GroupUnarchiveEvent

type GroupUnarchiveEvent ChannelInfoEvent

GroupUnarchiveEvent represents the Group unarchive event

type HeaderBlock

type HeaderBlock struct {
	Type    MessageBlockType `json:"type"`
	Text    *TextBlockObject `json:"text,omitempty"`
	BlockID string           `json:"block_id,omitempty"`
}

HeaderBlock defines a new block of type header

More Information: https://api.slack.com/reference/messaging/blocks#header

func NewHeaderBlock

func NewHeaderBlock(textObj *TextBlockObject, options ...HeaderBlockOption) *HeaderBlock

NewHeaderBlock returns a new instance of a header block to be rendered

func (HeaderBlock) BlockType

func (s HeaderBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type HeaderBlockOption

type HeaderBlockOption func(*HeaderBlock)

HeaderBlockOption allows configuration of options for a new header block

func HeaderBlockOptionBlockID

func HeaderBlockOptionBlockID(blockID string) HeaderBlockOption

type HelloEvent

type HelloEvent struct{}

HelloEvent represents the hello event

type History

type History struct {
	Latest   string    `json:"latest"`
	Messages []Message `json:"messages"`
	HasMore  bool      `json:"has_more"`
	Unread   int       `json:"unread_count_display"`
}

History contains message history information needed to navigate a Channel / Group / DM history

type HistoryParameters

type HistoryParameters struct {
	Latest    string
	Oldest    string
	Count     int
	Inclusive bool
	Unreads   bool
}

HistoryParameters contains all the necessary information to help in the retrieval of history for Channels/Groups/DMs

func NewHistoryParameters

func NewHistoryParameters() HistoryParameters

NewHistoryParameters provides an instance of HistoryParameters with all the sane default values set

type HomeTabViewRequest

type HomeTabViewRequest struct {
	Type            ViewType `json:"type"`
	Blocks          Blocks   `json:"blocks"`
	PrivateMetadata string   `json:"private_metadata,omitempty"`
	CallbackID      string   `json:"callback_id,omitempty"`
	ExternalID      string   `json:"external_id,omitempty"`
}

func (*HomeTabViewRequest) ViewType

func (v *HomeTabViewRequest) ViewType() ViewType

type IDGenerator

type IDGenerator interface {
	Next() int
}

IDGenerator provides an interface for generating integer ID values.

func NewSafeID

func NewSafeID(startID int) IDGenerator

NewSafeID returns a new instance of an IDGenerator which is safe for concurrent use by multiple goroutines.

type IM

type IM struct {
	Conversation
	IsUserDeleted bool `json:"is_user_deleted"`
}

IM contains information related to the Direct Message channel

type IMCloseEvent

type IMCloseEvent ChannelInfoEvent

IMCloseEvent represents the IM close event

type IMCreatedEvent

type IMCreatedEvent struct {
	Type    string             `json:"type"`
	User    string             `json:"user"`
	Channel ChannelCreatedInfo `json:"channel"`
}

IMCreatedEvent represents the IM created event

type IMHistoryChangedEvent

type IMHistoryChangedEvent ChannelHistoryChangedEvent

IMHistoryChangedEvent represents the IM history changed event

type IMMarkedEvent

type IMMarkedEvent ChannelInfoEvent

IMMarkedEvent represents the IM marked event

type IMMarkedHistoryChanged

type IMMarkedHistoryChanged ChannelInfoEvent

IMMarkedHistoryChanged represents the IM marked history changed event

type IMOpenEvent

type IMOpenEvent ChannelInfoEvent

IMOpenEvent represents the IM open event

type Icon

type Icon struct {
	IconURL   string `json:"icon_url,omitempty"`
	IconEmoji string `json:"icon_emoji,omitempty"`
}

Icon is used for bot messages

type Icons

type Icons struct {
	Image36 string `json:"image_36,omitempty"`
	Image48 string `json:"image_48,omitempty"`
	Image72 string `json:"image_72,omitempty"`
}

Icons XXX: needs further investigation

type ImageBlock

type ImageBlock struct {
	Type     MessageBlockType `json:"type"`
	ImageURL string           `json:"image_url"`
	AltText  string           `json:"alt_text"`
	BlockID  string           `json:"block_id,omitempty"`
	Title    *TextBlockObject `json:"title,omitempty"`
}

ImageBlock defines data required to display an image as a block element

More Information: https://api.slack.com/reference/messaging/blocks#image

func NewImageBlock

func NewImageBlock(imageURL, altText, blockID string, title *TextBlockObject) *ImageBlock

NewImageBlock returns an instance of a new Image Block type

func (ImageBlock) BlockType

func (s ImageBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type ImageBlockElement

type ImageBlockElement struct {
	Type     MessageElementType `json:"type"`
	ImageURL string             `json:"image_url"`
	AltText  string             `json:"alt_text"`
}

ImageBlockElement An element to insert an image - this element can be used in section and context blocks only. If you want a block with only an image in it, you're looking for the image block.

More Information: https://api.slack.com/reference/messaging/block-elements#image

func NewImageBlockElement

func NewImageBlockElement(imageURL, altText string) *ImageBlockElement

NewImageBlockElement returns a new instance of an image block element

func (ImageBlockElement) ElementType

func (s ImageBlockElement) ElementType() MessageElementType

ElementType returns the type of the Element

func (ImageBlockElement) MixedElementType

func (s ImageBlockElement) MixedElementType() MixedElementType

type IncomingEventError

type IncomingEventError struct {
	ErrorObj error
}

IncomingEventError contains information about an unexpected error receiving a websocket event

func (*IncomingEventError) Error

func (i *IncomingEventError) Error() string

type Info

type Info struct {
	URL  string       `json:"url,omitempty"`
	User *UserDetails `json:"self,omitempty"`
	Team *Team        `json:"team,omitempty"`
}

Info contains various details about the authenticated user and team. It is returned by StartRTM or included in the "ConnectedEvent" RTM event.

func (Info) GetBotByID

func (info Info) GetBotByID(botID string) *Bot

GetBotByID is deprecated and returns nil

func (Info) GetChannelByID

func (info Info) GetChannelByID(channelID string) *Channel

GetChannelByID is deprecated and returns nil

func (Info) GetGroupByID

func (info Info) GetGroupByID(groupID string) *Group

GetGroupByID is deprecated and returns nil

func (Info) GetIMByID

func (info Info) GetIMByID(imID string) *IM

GetIMByID is deprecated and returns nil

func (Info) GetUserByID

func (info Info) GetUserByID(userID string) *User

GetUserByID is deprecated and returns nil

type InputBlock

type InputBlock struct {
	Type           MessageBlockType `json:"type"`
	BlockID        string           `json:"block_id,omitempty"`
	Label          *TextBlockObject `json:"label"`
	Element        BlockElement     `json:"element"`
	Hint           *TextBlockObject `json:"hint,omitempty"`
	Optional       bool             `json:"optional,omitempty"`
	DispatchAction bool             `json:"dispatch_action,omitempty"`
}

InputBlock defines data that is used to display user input fields.

More Information: https://api.slack.com/reference/block-kit/blocks#input

func NewInputBlock

func NewInputBlock(blockID string, label, hint *TextBlockObject, element BlockElement) *InputBlock

NewInputBlock returns a new instance of an input block

func (InputBlock) BlockType

func (s InputBlock) BlockType() MessageBlockType

BlockType returns the type of the block

func (*InputBlock) UnmarshalJSON

func (b *InputBlock) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for InputBlock, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type InputType

type InputType string

InputType is the type of the dialog input type

const (
	// InputTypeText textfield input
	InputTypeText InputType = "text"
	// InputTypeTextArea textarea input
	InputTypeTextArea InputType = "textarea"
	// InputTypeSelect select menus input
	InputTypeSelect InputType = "select"
)

type InteractionCallback

type InteractionCallback struct {
	Type            InteractionType         `json:"type"`
	Token           string                  `json:"token"`
	CallbackID      string                  `json:"callback_id"`
	ResponseURL     string                  `json:"response_url"`
	TriggerID       string                  `json:"trigger_id"`
	ActionTs        string                  `json:"action_ts"`
	Team            Team                    `json:"team"`
	Channel         Channel                 `json:"channel"`
	User            User                    `json:"user"`
	OriginalMessage Message                 `json:"original_message"`
	Message         Message                 `json:"message"`
	Name            string                  `json:"name"`
	Value           string                  `json:"value"`
	MessageTs       string                  `json:"message_ts"`
	AttachmentID    string                  `json:"attachment_id"`
	ActionCallback  ActionCallbacks         `json:"actions"`
	View            View                    `json:"view"`
	ActionID        string                  `json:"action_id"`
	APIAppID        string                  `json:"api_app_id"`
	BlockID         string                  `json:"block_id"`
	Container       Container               `json:"container"`
	Enterprise      Enterprise              `json:"enterprise"`
	WorkflowStep    InteractionWorkflowStep `json:"workflow_step"`
	DialogSubmissionCallback
	ViewSubmissionCallback
	ViewClosedCallback

	// FIXME(kanata2): just workaround for backward-compatibility.
	// See also https://github.com/JongsooKeum/slack/issues/816
	RawState json.RawMessage `json:"state,omitempty"`

	// BlockActionState stands for the `state` field in block_actions type.
	// NOTE: InteractionCallback.State has a role for the state of dialog_submission type,
	// so we cannot use this field for backward-compatibility for now.
	BlockActionState *BlockActionStates `json:"-"`
}

InteractionCallback is sent from slack when a user interactions with a button or dialog.

func (*InteractionCallback) MarshalJSON

func (ic *InteractionCallback) MarshalJSON() ([]byte, error)

func (*InteractionCallback) UnmarshalJSON

func (ic *InteractionCallback) UnmarshalJSON(b []byte) error

type InteractionType

type InteractionType string

InteractionType type of interactions

type InteractionWorkflowStep

type InteractionWorkflowStep struct {
	WorkflowStepEditID string                `json:"workflow_step_edit_id,omitempty"`
	WorkflowID         string                `json:"workflow_id"`
	StepID             string                `json:"step_id"`
	Inputs             *WorkflowStepInputs   `json:"inputs,omitempty"`
	Outputs            *[]WorkflowStepOutput `json:"outputs,omitempty"`
}

type InvalidAuthEvent

type InvalidAuthEvent struct{}

InvalidAuthEvent is used in case we can't even authenticate with the API

type Item

type Item struct {
	Type      string   `json:"type"`
	Channel   string   `json:"channel,omitempty"`
	Message   *Message `json:"message,omitempty"`
	File      *File    `json:"file,omitempty"`
	Comment   *Comment `json:"comment,omitempty"`
	Timestamp string   `json:"ts,omitempty"`
}

Item is any type of slack message - message, file, or file comment.

func NewChannelItem

func NewChannelItem(ch string) Item

NewChannelItem turns a channel id into a typed channel struct.

func NewFileCommentItem

func NewFileCommentItem(f *File, c *Comment) Item

NewFileCommentItem turns a file and comment into a typed file_comment struct.

func NewFileItem

func NewFileItem(f *File) Item

NewFileItem turns a file into a typed file struct.

func NewGroupItem

func NewGroupItem(ch string) Item

NewGroupItem turns a channel id into a typed group struct.

func NewIMItem

func NewIMItem(ch string) Item

NewIMItem turns a channel id into a typed im struct.

func NewMessageItem

func NewMessageItem(ch string, m *Message) Item

NewMessageItem turns a message on a channel into a typed message struct.

type ItemReaction

type ItemReaction struct {
	Name  string   `json:"name"`
	Count int      `json:"count"`
	Users []string `json:"users"`
}

ItemReaction is the reactions that have happened on an item.

type ItemRef

type ItemRef struct {
	Channel   string `json:"channel"`
	Timestamp string `json:"timestamp"`
	File      string `json:"file"`
	Comment   string `json:"file_comment"`
}

ItemRef is a reference to a message of any type. One of FileID, CommentId, or the combination of ChannelId and Timestamp must be specified.

func NewRefToComment

func NewRefToComment(comment string) ItemRef

NewRefToComment initializes a reference to a file comment.

func NewRefToFile

func NewRefToFile(file string) ItemRef

NewRefToFile initializes a reference to a file.

func NewRefToMessage

func NewRefToMessage(channel, timestamp string) ItemRef

NewRefToMessage initializes a reference to to a message.

type JSONTime

type JSONTime int64

JSONTime exists so that we can have a String method converting the date

func (JSONTime) String

func (t JSONTime) String() string

String converts the unix timestamp into a string

func (JSONTime) Time

func (t JSONTime) Time() time.Time

Time returns a `time.Time` representation of this value.

func (*JSONTime) UnmarshalJSON

func (t *JSONTime) UnmarshalJSON(buf []byte) error

UnmarshalJSON will unmarshal both string and int JSON values

type LatencyReport

type LatencyReport struct {
	Value time.Duration
}

LatencyReport contains information about connection latency

type ListFilesParameters

type ListFilesParameters struct {
	Limit   int
	User    string
	Channel string
	Types   string
	Cursor  string
}

ListFilesParameters contains all the parameters necessary (including the optional ones) for a ListFiles() request

type ListReactionsParameters

type ListReactionsParameters struct {
	User  string
	Count int
	Page  int
	Full  bool
}

ListReactionsParameters is the inputs to find all reactions by a user.

func NewListReactionsParameters

func NewListReactionsParameters() ListReactionsParameters

NewListReactionsParameters initializes the inputs to find all reactions performed by a user.

type ListRemoteFilesParameters

type ListRemoteFilesParameters struct {
	Channel       string
	Cursor        string
	Limit         int
	TimestampFrom JSONTime
	TimestampTo   JSONTime
}

ListRemoteFilesParameters contains arguments for the ListRemoteFiles method. For more details: https://api.slack.com/methods/files.remote.list

type ListStarsOption

type ListStarsOption func(*StarredItemPagination)

ListStarsOption options for the GetUsers method call.

type Login

type Login struct {
	UserID    string `json:"user_id"`
	Username  string `json:"username"`
	DateFirst int    `json:"date_first"`
	DateLast  int    `json:"date_last"`
	Count     int    `json:"count"`
	IP        string `json:"ip"`
	UserAgent string `json:"user_agent"`
	ISP       string `json:"isp"`
	Country   string `json:"country"`
	Region    string `json:"region"`
}

type LoginResponse

type LoginResponse struct {
	Logins []Login `json:"logins"`
	Paging `json:"paging"`
	SlackResponse
}

type ManualPresenceChangeEvent

type ManualPresenceChangeEvent struct {
	Type     string `json:"type"`
	Presence string `json:"presence"`
}

ManualPresenceChangeEvent represents the manual presence change event

type MemberJoinedChannelEvent

type MemberJoinedChannelEvent struct {
	Type        string `json:"type"`
	User        string `json:"user"`
	Channel     string `json:"channel"`
	ChannelType string `json:"channel_type"`
	Team        string `json:"team"`
	Inviter     string `json:"inviter"`
}

MemberJoinedChannelEvent, a user joined a public or private channel

type MemberLeftChannelEvent

type MemberLeftChannelEvent struct {
	Type        string `json:"type"`
	User        string `json:"user"`
	Channel     string `json:"channel"`
	ChannelType string `json:"channel_type"`
	Team        string `json:"team"`
}

MemberLeftChannelEvent a user left a public or private channel

type Message

type Message struct {
	Msg
	SubMessage      *Msg `json:"message,omitempty"`
	PreviousMessage *Msg `json:"previous_message,omitempty"`
}

Message is an auxiliary type to allow us to have a message containing sub messages

func AddBlockMessage

func AddBlockMessage(message Message, newBlk Block) Message

AddBlockMessage appends a block to the end of the existing list of blocks

func NewBlockMessage

func NewBlockMessage(blocks ...Block) Message

NewBlockMessage creates a new Message that contains one or more blocks to be displayed

type MessageBlockType

type MessageBlockType string

MessageBlockType defines a named string type to define each block type as a constant for use within the package.

const (
	MBTSection  MessageBlockType = "section"
	MBTDivider  MessageBlockType = "divider"
	MBTImage    MessageBlockType = "image"
	MBTAction   MessageBlockType = "actions"
	MBTContext  MessageBlockType = "context"
	MBTFile     MessageBlockType = "file"
	MBTInput    MessageBlockType = "input"
	MBTHeader   MessageBlockType = "header"
	MBTRichText MessageBlockType = "rich_text"
)

type MessageElementType

type MessageElementType string

type MessageEvent

type MessageEvent Message

MessageEvent represents a Slack Message (used as the event type for an incoming message)

type MessageObjectType

type MessageObjectType string

type MessageTooLongEvent

type MessageTooLongEvent struct {
	Message   OutgoingMessage
	MaxLength int
}

MessageTooLongEvent is used when sending a message that is too long

func (*MessageTooLongEvent) Error

func (m *MessageTooLongEvent) Error() string

type MixedElement

type MixedElement interface {
	MixedElementType() MixedElementType
}

type MixedElementType

type MixedElementType string

type MobileInAppNotificationEvent

type MobileInAppNotificationEvent struct {
	Type              string `json:"type"`
	Title             string `json:"title"`
	Subtitle          string `json:"subtitle"`
	Timestamp         string `json:"ts"`
	Channel           string `json:"channel"`
	AvatarImage       string `json:"avatarImage"`
	IsShared          bool   `json:"is_shared"`
	ChannelName       string `json:"channel_name"`
	AuthorID          string `json:"author_id"`
	AuthorDisplayName string `json:"author_display_name"`
	MessageText       string `json:"msg_text"`
	PushID            string `json:"push_id"`
	NotifcationID     string `json:"notif_id"`
	MobileLaunchURI   string `json:"mobileLaunchUri"`
	EventTimestamp    string `json:"event_ts"`
}

MobileInAppNotificationEvent represents the update event for Mobile App Notification.

type ModalViewRequest

type ModalViewRequest struct {
	Type            ViewType         `json:"type"`
	Title           *TextBlockObject `json:"title,omitempty"`
	Blocks          Blocks           `json:"blocks"`
	Close           *TextBlockObject `json:"close,omitempty"`
	Submit          *TextBlockObject `json:"submit,omitempty"`
	PrivateMetadata string           `json:"private_metadata,omitempty"`
	CallbackID      string           `json:"callback_id,omitempty"`
	ClearOnClose    bool             `json:"clear_on_close,omitempty"`
	NotifyOnClose   bool             `json:"notify_on_close,omitempty"`
	ExternalID      string           `json:"external_id,omitempty"`
}

func (*ModalViewRequest) ViewType

func (v *ModalViewRequest) ViewType() ViewType

type Msg

type Msg struct {
	// Basic Message
	ClientMsgID     string       `json:"client_msg_id,omitempty"`
	Type            string       `json:"type,omitempty"`
	Channel         string       `json:"channel,omitempty"`
	User            string       `json:"user,omitempty"`
	Text            string       `json:"text,omitempty"`
	Timestamp       string       `json:"ts,omitempty"`
	ThreadTimestamp string       `json:"thread_ts,omitempty"`
	IsStarred       bool         `json:"is_starred,omitempty"`
	PinnedTo        []string     `json:"pinned_to,omitempty"`
	Attachments     []Attachment `json:"attachments,omitempty"`
	Edited          *Edited      `json:"edited,omitempty"`
	LastRead        string       `json:"last_read,omitempty"`
	Subscribed      bool         `json:"subscribed,omitempty"`
	UnreadCount     int          `json:"unread_count,omitempty"`

	// Message Subtypes
	SubType string `json:"subtype,omitempty"`

	// Hidden Subtypes
	Hidden           bool   `json:"hidden,omitempty"`     // message_changed, message_deleted, unpinned_item
	DeletedTimestamp string `json:"deleted_ts,omitempty"` // message_deleted
	EventTimestamp   string `json:"event_ts,omitempty"`

	// bot_message (https://api.slack.com/events/message/bot_message)
	BotID      string      `json:"bot_id,omitempty"`
	Username   string      `json:"username,omitempty"`
	Icons      *Icon       `json:"icons,omitempty"`
	BotProfile *BotProfile `json:"bot_profile,omitempty"`

	// channel_join, group_join
	Inviter string `json:"inviter,omitempty"`

	// channel_topic, group_topic
	Topic string `json:"topic,omitempty"`

	// channel_purpose, group_purpose
	Purpose string `json:"purpose,omitempty"`

	// channel_name, group_name
	Name    string `json:"name,omitempty"`
	OldName string `json:"old_name,omitempty"`

	// channel_archive, group_archive
	Members []string `json:"members,omitempty"`

	// channels.replies, groups.replies, im.replies, mpim.replies
	ReplyCount   int     `json:"reply_count,omitempty"`
	Replies      []Reply `json:"replies,omitempty"`
	ParentUserId string  `json:"parent_user_id,omitempty"`
	LatestReply  string  `json:"latest_reply,omitempty"`

	// file_share, file_comment, file_mention
	Files []File `json:"files,omitempty"`

	// file_share
	Upload bool `json:"upload,omitempty"`

	// file_comment
	Comment *Comment `json:"comment,omitempty"`

	// pinned_item
	ItemType string `json:"item_type,omitempty"`

	// https://api.slack.com/rtm
	ReplyTo int    `json:"reply_to,omitempty"`
	Team    string `json:"team,omitempty"`

	// reactions
	Reactions []ItemReaction `json:"reactions,omitempty"`

	// slash commands and interactive messages
	ResponseType    string `json:"response_type,omitempty"`
	ReplaceOriginal bool   `json:"replace_original"`
	DeleteOriginal  bool   `json:"delete_original"`

	// metadata
	Metadata SlackMetadata `json:"metadata,omitempty"`

	// Block type Message
	Blocks Blocks `json:"blocks,omitempty"`
	// permalink
	Permalink string `json:"permalink,omitempty"`
}

Msg contains information about a slack message

type MsgOption

type MsgOption func(*sendConfig) error

MsgOption option provided when sending a message.

func MsgOptionAsUser

func MsgOptionAsUser(b bool) MsgOption

MsgOptionAsUser whether or not to send the message as the user.

func MsgOptionAttachments

func MsgOptionAttachments(attachments ...Attachment) MsgOption

MsgOptionAttachments provide attachments for the message.

func MsgOptionBlocks

func MsgOptionBlocks(blocks ...Block) MsgOption

MsgOptionBlocks sets blocks for the message

func MsgOptionBroadcast

func MsgOptionBroadcast() MsgOption

MsgOptionBroadcast sets reply_broadcast to true

func MsgOptionCompose

func MsgOptionCompose(options ...MsgOption) MsgOption

MsgOptionCompose combines multiple options into a single option.

func MsgOptionDelete

func MsgOptionDelete(timestamp string) MsgOption

MsgOptionDelete deletes a message based on the timestamp.

func MsgOptionDeleteOriginal

func MsgOptionDeleteOriginal(responseURL string) MsgOption

MsgOptionDeleteOriginal deletes original message with response url

func MsgOptionDisableLinkUnfurl

func MsgOptionDisableLinkUnfurl() MsgOption

MsgOptionDisableLinkUnfurl disables link unfurling

func MsgOptionDisableMarkdown

func MsgOptionDisableMarkdown() MsgOption

MsgOptionDisableMarkdown disables markdown.

func MsgOptionDisableMediaUnfurl

func MsgOptionDisableMediaUnfurl() MsgOption

MsgOptionDisableMediaUnfurl disables media unfurling.

func MsgOptionEnableLinkUnfurl

func MsgOptionEnableLinkUnfurl() MsgOption

MsgOptionEnableLinkUnfurl enables link unfurling

func MsgOptionIconEmoji

func MsgOptionIconEmoji(iconEmoji string) MsgOption

MsgOptionIconEmoji sets an icon emoji

func MsgOptionIconURL

func MsgOptionIconURL(iconURL string) MsgOption

MsgOptionIconURL sets an icon URL

func MsgOptionMeMessage

func MsgOptionMeMessage() MsgOption

MsgOptionMeMessage posts a "me message" type from the calling user

func MsgOptionMetadata

func MsgOptionMetadata(metadata SlackMetadata) MsgOption

MsgOptionMetadata sets message metadata

func MsgOptionParse

func MsgOptionParse(b bool) MsgOption

MsgOptionParse set parse option.

func MsgOptionPost

func MsgOptionPost() MsgOption

MsgOptionPost posts a messages, this is the default.

func MsgOptionPostEphemeral

func MsgOptionPostEphemeral(userID string) MsgOption

MsgOptionPostEphemeral - posts an ephemeral message to the provided user.

func MsgOptionPostMessageParameters

func MsgOptionPostMessageParameters(params PostMessageParameters) MsgOption

MsgOptionPostMessageParameters maintain backwards compatibility.

func MsgOptionReplaceOriginal

func MsgOptionReplaceOriginal(responseURL string) MsgOption

MsgOptionReplaceOriginal replaces original message with response url

func MsgOptionResponseURL

func MsgOptionResponseURL(url string, responseType string) MsgOption

MsgOptionResponseURL supplies a url to use as the endpoint.

func MsgOptionSchedule

func MsgOptionSchedule(postAt string) MsgOption

MsgOptionSchedule schedules a messages.

func MsgOptionTS

func MsgOptionTS(ts string) MsgOption

MsgOptionTS sets the thread TS of the message to enable creating or replying to a thread

func MsgOptionText

func MsgOptionText(text string, escape bool) MsgOption

MsgOptionText provide the text for the message, optionally escape the provided text.

func MsgOptionUnfurl

func MsgOptionUnfurl(timestamp string, unfurls map[string]Attachment) MsgOption

MsgOptionUnfurl unfurls a message based on the timestamp.

func MsgOptionUnfurlAuthMessage

func MsgOptionUnfurlAuthMessage(timestamp string, msg string) MsgOption

MsgOptionUnfurlAuthMessage attaches a message inviting the user to authenticate.

func MsgOptionUnfurlAuthRequired

func MsgOptionUnfurlAuthRequired(timestamp string) MsgOption

MsgOptionUnfurlAuthRequired requests that the user installs the Slack app for unfurling.

func MsgOptionUnfurlAuthURL

func MsgOptionUnfurlAuthURL(timestamp string, userAuthURL string) MsgOption

MsgOptionUnfurlAuthURL unfurls a message using an auth url based on the timestamp.

func MsgOptionUpdate

func MsgOptionUpdate(timestamp string) MsgOption

MsgOptionUpdate updates a message based on the timestamp.

func MsgOptionUser

func MsgOptionUser(userID string) MsgOption

MsgOptionUser set the user for the message.

func MsgOptionUsername

func MsgOptionUsername(username string) MsgOption

MsgOptionUsername set the username for the message.

func UnsafeMsgOptionEndpoint

func UnsafeMsgOptionEndpoint(endpoint string, update func(url.Values)) MsgOption

UnsafeMsgOptionEndpoint deliver the message to the specified endpoint. NOTE: USE AT YOUR OWN RISK: No issues relating to the use of this Option will be supported by the library, it is subject to change without notice that may result in compilation errors or runtime behaviour changes.

type MultiSelectBlockElement

type MultiSelectBlockElement struct {
	Type                 string                    `json:"type,omitempty"`
	Placeholder          *TextBlockObject          `json:"placeholder,omitempty"`
	ActionID             string                    `json:"action_id,omitempty"`
	Options              []*OptionBlockObject      `json:"options,omitempty"`
	OptionGroups         []*OptionGroupBlockObject `json:"option_groups,omitempty"`
	InitialOptions       []*OptionBlockObject      `json:"initial_options,omitempty"`
	InitialUsers         []string                  `json:"initial_users,omitempty"`
	InitialConversations []string                  `json:"initial_conversations,omitempty"`
	InitialChannels      []string                  `json:"initial_channels,omitempty"`
	MinQueryLength       *int                      `json:"min_query_length,omitempty"`
	MaxSelectedItems     *int                      `json:"max_selected_items,omitempty"`
	Confirm              *ConfirmationBlockObject  `json:"confirm,omitempty"`
}

MultiSelectBlockElement defines a multiselect menu, with a static list of options passed in when defining the element.

More Information: https://api.slack.com/reference/messaging/block-elements#multi_select

func NewOptionsGroupMultiSelectBlockElement

func NewOptionsGroupMultiSelectBlockElement(
	optType string,
	placeholder *TextBlockObject,
	actionID string,
	optGroups ...*OptionGroupBlockObject,
) *MultiSelectBlockElement

NewOptionsGroupMultiSelectBlockElement returns a new instance of MultiSelectBlockElement for use with the Options object only.

func NewOptionsMultiSelectBlockElement

func NewOptionsMultiSelectBlockElement(optType string, placeholder *TextBlockObject, actionID string, options ...*OptionBlockObject) *MultiSelectBlockElement

NewOptionsMultiSelectBlockElement returns a new instance of SelectBlockElement for use with the Options object only.

func (MultiSelectBlockElement) ElementType

ElementType returns the type of the Element

type OAuthResponse

type OAuthResponse struct {
	AccessToken     string                       `json:"access_token"`
	Scope           string                       `json:"scope"`
	TeamName        string                       `json:"team_name"`
	TeamID          string                       `json:"team_id"`
	IncomingWebhook OAuthResponseIncomingWebhook `json:"incoming_webhook"`
	Bot             OAuthResponseBot             `json:"bot"`
	UserID          string                       `json:"user_id,omitempty"`
	SlackResponse
}

OAuthResponse ...

func GetOAuthResponse

func GetOAuthResponse(client httpClient, clientID, clientSecret, code, redirectURI string) (resp *OAuthResponse, err error)

GetOAuthResponse retrieves OAuth response

func GetOAuthResponseContext

func GetOAuthResponseContext(ctx context.Context, client httpClient, clientID, clientSecret, code, redirectURI string) (resp *OAuthResponse, err error)

GetOAuthResponseContext retrieves OAuth response with custom context

type OAuthResponseBot

type OAuthResponseBot struct {
	BotUserID      string `json:"bot_user_id"`
	BotAccessToken string `json:"bot_access_token"`
}

OAuthResponseBot ...

func GetBotOAuthToken

func GetBotOAuthToken(client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, bot OAuthResponseBot, err error)

GetBotOAuthToken retrieves top-level and bot AccessToken - https://api.slack.com/legacy/oauth#bot_user_access_tokens

func GetBotOAuthTokenContext

func GetBotOAuthTokenContext(ctx context.Context, client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, bot OAuthResponseBot, err error)

GetBotOAuthTokenContext retrieves top-level and bot AccessToken with a custom context

type OAuthResponseIncomingWebhook

type OAuthResponseIncomingWebhook struct {
	URL              string `json:"url"`
	Channel          string `json:"channel"`
	ChannelID        string `json:"channel_id,omitempty"`
	ConfigurationURL string `json:"configuration_url"`
}

OAuthResponseIncomingWebhook ...

type OAuthV2Response

type OAuthV2Response struct {
	AccessToken     string                       `json:"access_token"`
	TokenType       string                       `json:"token_type"`
	Scope           string                       `json:"scope"`
	BotUserID       string                       `json:"bot_user_id"`
	AppID           string                       `json:"app_id"`
	Team            OAuthV2ResponseTeam          `json:"team"`
	IncomingWebhook OAuthResponseIncomingWebhook `json:"incoming_webhook"`
	Enterprise      OAuthV2ResponseEnterprise    `json:"enterprise"`
	AuthedUser      OAuthV2ResponseAuthedUser    `json:"authed_user"`
	RefreshToken    string                       `json:"refresh_token"`
	ExpiresIn       int                          `json:"expires_in"`
	SlackResponse
}

OAuthV2Response ...

func GetOAuthV2Response

func GetOAuthV2Response(client httpClient, clientID, clientSecret, code, redirectURI string) (resp *OAuthV2Response, err error)

GetOAuthV2Response gets a V2 OAuth access token response - https://api.slack.com/methods/oauth.v2.access

func GetOAuthV2ResponseContext

func GetOAuthV2ResponseContext(ctx context.Context, client httpClient, clientID, clientSecret, code, redirectURI string) (resp *OAuthV2Response, err error)

GetOAuthV2ResponseContext with a context, gets a V2 OAuth access token response

func RefreshOAuthV2Token

func RefreshOAuthV2Token(client httpClient, clientID, clientSecret, refreshToken string) (resp *OAuthV2Response, err error)

RefreshOAuthV2AccessContext with a context, gets a V2 OAuth access token response

func RefreshOAuthV2TokenContext

func RefreshOAuthV2TokenContext(ctx context.Context, client httpClient, clientID, clientSecret, refreshToken string) (resp *OAuthV2Response, err error)

RefreshOAuthV2AccessContext with a context, gets a V2 OAuth access token response

type OAuthV2ResponseAuthedUser

type OAuthV2ResponseAuthedUser struct {
	ID           string `json:"id"`
	Scope        string `json:"scope"`
	AccessToken  string `json:"access_token"`
	ExpiresIn    int    `json:"expires_in"`
	RefreshToken string `json:"refresh_token"`
	TokenType    string `json:"token_type"`
}

OAuthV2ResponseAuthedUser ...

type OAuthV2ResponseEnterprise

type OAuthV2ResponseEnterprise struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

OAuthV2ResponseEnterprise ...

type OAuthV2ResponseTeam

type OAuthV2ResponseTeam struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

OAuthV2ResponseTeam ...

type OpenConversationParameters

type OpenConversationParameters struct {
	ChannelID string
	ReturnIM  bool
	Users     []string
}

type Option

type Option func(*Client)

Option defines an option for a Client

type OptionBlockObject

type OptionBlockObject struct {
	Text        *TextBlockObject `json:"text"`
	Value       string           `json:"value"`
	Description *TextBlockObject `json:"description,omitempty"`
	URL         string           `json:"url,omitempty"`
}

OptionBlockObject represents a single selectable item in a select menu

More Information: https://api.slack.com/reference/messaging/composition-objects#option

func GetInitialOptionFromWorkflowStepInput

func GetInitialOptionFromWorkflowStepInput(selection *SelectBlockElement, inputs *WorkflowStepInputs, options []*OptionBlockObject) (*OptionBlockObject, bool)

func NewOptionBlockObject

func NewOptionBlockObject(value string, text, description *TextBlockObject) *OptionBlockObject

NewOptionBlockObject returns an instance of a new Option Block Element

type OptionGroupBlockObject

type OptionGroupBlockObject struct {
	Label   *TextBlockObject     `json:"label,omitempty"`
	Options []*OptionBlockObject `json:"options"`
}

OptionGroupBlockObject Provides a way to group options in a select menu.

More Information: https://api.slack.com/reference/messaging/composition-objects#option-group

func NewOptionGroupBlockElement

func NewOptionGroupBlockElement(label *TextBlockObject, options ...*OptionBlockObject) *OptionGroupBlockObject

NewOptionGroupBlockElement returns an instance of a new option group block element

type OptionGroupsResponse

type OptionGroupsResponse struct {
	OptionGroups []*OptionGroupBlockObject `json:"option_groups,omitempty"`
}

OptionGroupsResponse defines the response used for select block typahead.

More Information: https://api.slack.com/reference/block-kit/block-elements#external_multi_select

type OptionsResponse

type OptionsResponse struct {
	Options []*OptionBlockObject `json:"options,omitempty"`
}

OptionsResponse defines the response used for select block typahead.

More Information: https://api.slack.com/reference/block-kit/block-elements#external_multi_select

type OutgoingErrorEvent

type OutgoingErrorEvent struct {
	Message  OutgoingMessage
	ErrorObj error
}

OutgoingErrorEvent contains information in case there were errors sending messages

func (OutgoingErrorEvent) Error

func (o OutgoingErrorEvent) Error() string

type OutgoingMessage

type OutgoingMessage struct {
	ID int `json:"id"`
	// channel ID
	Channel         string   `json:"channel,omitempty"`
	Text            string   `json:"text,omitempty"`
	Type            string   `json:"type,omitempty"`
	ThreadTimestamp string   `json:"thread_ts,omitempty"`
	ThreadBroadcast bool     `json:"reply_broadcast,omitempty"`
	IDs             []string `json:"ids,omitempty"`
}

OutgoingMessage is used for the realtime API, and seems incomplete.

type OverflowBlockElement

type OverflowBlockElement struct {
	Type     MessageElementType       `json:"type"`
	ActionID string                   `json:"action_id,omitempty"`
	Options  []*OptionBlockObject     `json:"options"`
	Confirm  *ConfirmationBlockObject `json:"confirm,omitempty"`
}

OverflowBlockElement defines the fields needed to use an overflow element. And Overflow Element is like a cross between a button and a select menu - when a user clicks on this overflow button, they will be presented with a list of options to choose from.

More Information: https://api.slack.com/reference/messaging/block-elements#overflow

func NewOverflowBlockElement

func NewOverflowBlockElement(actionID string, options ...*OptionBlockObject) *OverflowBlockElement

NewOverflowBlockElement returns an instance of a new Overflow Block Element

func (OverflowBlockElement) ElementType

func (s OverflowBlockElement) ElementType() MessageElementType

ElementType returns the type of the Element

type Pagination

type Pagination struct {
	TotalCount int `json:"total_count"`
	Page       int `json:"page"`
	PerPage    int `json:"per_page"`
	PageCount  int `json:"page_count"`
	First      int `json:"first"`
	Last       int `json:"last"`
}

Pagination contains pagination information This is different from Paging in that it contains additional details

type Paging

type Paging struct {
	Count int `json:"count"`
	Total int `json:"total"`
	Page  int `json:"page"`
	Pages int `json:"pages"`
}

Paging contains paging information

type ParamOption

type ParamOption func(*url.Values)

Client for the slack api.

type PermalinkParameters

type PermalinkParameters struct {
	Channel string
	Ts      string
}

PermalinkParameters are the parameters required to get a permalink to a message. Slack documentation can be found here: https://api.slack.com/methods/chat.getPermalink

type PinAddedEvent

type PinAddedEvent pinEvent

PinAddedEvent represents the Pin added event

type PinRemovedEvent

type PinRemovedEvent pinEvent

PinRemovedEvent represents the Pin removed event

type Ping

type Ping struct {
	ID        int    `json:"id"`
	Type      string `json:"type"`
	Timestamp int64  `json:"timestamp"`
}

Ping contains information about a Ping Event

type PlainTextInputBlockElement

type PlainTextInputBlockElement struct {
	Type                 MessageElementType    `json:"type"`
	ActionID             string                `json:"action_id,omitempty"`
	Placeholder          *TextBlockObject      `json:"placeholder,omitempty"`
	InitialValue         string                `json:"initial_value,omitempty"`
	Multiline            bool                  `json:"multiline,omitempty"`
	MinLength            int                   `json:"min_length,omitempty"`
	MaxLength            int                   `json:"max_length,omitempty"`
	DispatchActionConfig *DispatchActionConfig `json:"dispatch_action_config,omitempty"`
}

PlainTextInputBlockElement creates a field where a user can enter freeform data. Plain-text input elements are currently only available in modals.

More Information: https://api.slack.com/reference/block-kit/block-elements#input

func NewPlainTextInputBlockElement

func NewPlainTextInputBlockElement(placeholder *TextBlockObject, actionID string) *PlainTextInputBlockElement

NewPlainTextInputBlockElement returns an instance of a plain-text input element

func (PlainTextInputBlockElement) ElementType

ElementType returns the type of the Element

type Pong

type Pong struct {
	Type      string `json:"type"`
	ReplyTo   int    `json:"reply_to"`
	Timestamp int64  `json:"timestamp"`
}

Pong contains information about a Pong Event

type PostMessageParameters

type PostMessageParameters struct {
	Username        string `json:"username"`
	AsUser          bool   `json:"as_user"`
	Parse           string `json:"parse"`
	ThreadTimestamp string `json:"thread_ts"`
	ReplyBroadcast  bool   `json:"reply_broadcast"`
	LinkNames       int    `json:"link_names"`
	UnfurlLinks     bool   `json:"unfurl_links"`
	UnfurlMedia     bool   `json:"unfurl_media"`
	IconURL         string `json:"icon_url"`
	IconEmoji       string `json:"icon_emoji"`
	Markdown        bool   `json:"mrkdwn,omitempty"`
	EscapeText      bool   `json:"escape_text"`

	// chat.postEphemeral support
	Channel string `json:"channel"`
	User    string `json:"user"`

	// chat metadata support
	MetaData SlackMetadata `json:"metadata"`
}

PostMessageParameters contains all the parameters necessary (including the optional ones) for a PostMessage() request

func NewPostMessageParameters

func NewPostMessageParameters() PostMessageParameters

NewPostMessageParameters provides an instance of PostMessageParameters with all the sane default values set

type PrefChangeEvent

type PrefChangeEvent struct {
	Type  string          `json:"type"`
	Name  string          `json:"name"`
	Value json.RawMessage `json:"value"`
}

PrefChangeEvent represents a user preferences change event

type PresenceChangeEvent

type PresenceChangeEvent struct {
	Type     string   `json:"type"`
	Presence string   `json:"presence"`
	User     string   `json:"user"`
	Users    []string `json:"users"`
}

PresenceChangeEvent represents the presence change event

type Purpose

type Purpose struct {
	Value   string   `json:"value"`
	Creator string   `json:"creator"`
	LastSet JSONTime `json:"last_set"`
}

Purpose contains information about the purpose

type RTM

type RTM struct {
	// Client is the main API, embedded
	Client

	IncomingEvents chan RTMEvent
	// contains filtered or unexported fields
}

RTM represents a managed websocket connection. It also supports all the methods of the `Client` type.

Create this element with Client's NewRTM() or NewRTMWithOptions(*RTMOptions)

func (*RTM) Disconnect

func (rtm *RTM) Disconnect() error

Disconnect and wait, blocking until a successful disconnection.

func (*RTM) GetInfo

func (rtm *RTM) GetInfo() *Info

GetInfo returns the info structure received when calling "startrtm", holding metadata needed to implement a full chat client. It will be non-nil after a call to StartRTM().

func (*RTM) ManageConnection

func (rtm *RTM) ManageConnection()

ManageConnection can be called on a Slack RTM instance returned by the NewRTM method. It will connect to the slack RTM API and handle all incoming and outgoing events. If a connection fails then it will attempt to reconnect and will notify any listeners through an error event on the IncomingEvents channel.

If the connection ends and the disconnect was unintentional then this will attempt to reconnect.

This should only be called once per slack API! Otherwise expect undefined behavior.

The defined error events are located in websocket_internals.go.

func (*RTM) NewOutgoingMessage

func (rtm *RTM) NewOutgoingMessage(text string, channelID string, options ...RTMsgOption) *OutgoingMessage

NewOutgoingMessage prepares an OutgoingMessage that the user can use to send a message. Use this function to properly set the messageID.

func (*RTM) NewSubscribeUserPresence

func (rtm *RTM) NewSubscribeUserPresence(ids []string) *OutgoingMessage

NewSubscribeUserPresence prepares an OutgoingMessage that the user can use to subscribe presence events for the specified users.

func (*RTM) NewTypingMessage

func (rtm *RTM) NewTypingMessage(channelID string) *OutgoingMessage

NewTypingMessage prepares an OutgoingMessage that the user can use to send as a typing indicator. Use this function to properly set the messageID.

func (*RTM) SendMessage

func (rtm *RTM) SendMessage(msg *OutgoingMessage)

SendMessage submits a simple message through the websocket. For more complicated messages, use `rtm.PostMessage` with a complete struct describing your attachments and all.

type RTMError

type RTMError struct {
	Code int
	Msg  string
}

RTMError encapsulates error information as returned by the Slack API

func (RTMError) Error

func (s RTMError) Error() string

type RTMEvent

type RTMEvent struct {
	Type string
	Data interface{}
}

RTMEvent is the main wrapper. You will find all the other messages attached

type RTMOption

type RTMOption func(*RTM)

RTMOption options for the managed RTM.

func RTMOptionConnParams

func RTMOptionConnParams(connParams url.Values) RTMOption

RTMOptionConnParams installs parameters to embed into the connection URL.

func RTMOptionDialer

func RTMOptionDialer(d *websocket.Dialer) RTMOption

RTMOptionDialer takes a gorilla websocket Dialer and uses it as the Dialer when opening the websocket for the RTM connection.

func RTMOptionPingInterval

func RTMOptionPingInterval(d time.Duration) RTMOption

RTMOptionPingInterval determines how often to deliver a ping message to slack.

func RTMOptionUseStart

func RTMOptionUseStart(b bool) RTMOption

RTMOptionUseStart as of 11th July 2017 you should prefer setting this to false, see: https://api.slack.com/changelog/2017-04-start-using-rtm-connect-and-stop-using-rtm-start

type RTMResponse

type RTMResponse struct {
	Ok    bool      `json:"ok"`
	Error *RTMError `json:"error"`
}

RTMResponse encapsulates response details as returned by the Slack API

type RTMsgOption

type RTMsgOption func(*OutgoingMessage)

RTMsgOption allows configuration of various options available for sending an RTM message

func RTMsgOptionBroadcast

func RTMsgOptionBroadcast() RTMsgOption

RTMsgOptionBroadcast sets broadcast reply to channel to "true"

func RTMsgOptionTS

func RTMsgOptionTS(threadTimestamp string) RTMsgOption

RTMsgOptionTS sets thead timestamp of an outgoing message in order to respond to a thread

type RadioButtonsBlockElement

type RadioButtonsBlockElement struct {
	Type          MessageElementType       `json:"type"`
	ActionID      string                   `json:"action_id,omitempty"`
	Options       []*OptionBlockObject     `json:"options"`
	InitialOption *OptionBlockObject       `json:"initial_option,omitempty"`
	Confirm       *ConfirmationBlockObject `json:"confirm,omitempty"`
}

RadioButtonsBlockElement defines an element which lets users choose one item from a list of possible options.

More Information: https://api.slack.com/reference/block-kit/block-elements#radio

func NewRadioButtonsBlockElement

func NewRadioButtonsBlockElement(actionID string, options ...*OptionBlockObject) *RadioButtonsBlockElement

NewRadioButtonsBlockElement returns an instance of a radio buttons element.

func (RadioButtonsBlockElement) ElementType

ElementType returns the type of the Element

type RateLimitEvent

type RateLimitEvent struct{}

RateLimitEvent is used when Slack warns that rate-limits are being hit.

func (*RateLimitEvent) Error

func (e *RateLimitEvent) Error() string

type RateLimitedError

type RateLimitedError struct {
	RetryAfter time.Duration
}

RateLimitedError represents the rate limit response from slack

func (*RateLimitedError) Error

func (e *RateLimitedError) Error() string

func (*RateLimitedError) Retryable

func (e *RateLimitedError) Retryable() bool

type ReactedItem

type ReactedItem struct {
	Item
	Reactions []ItemReaction
}

ReactedItem is an item that was reacted to, and the details of the reactions.

type ReactionAddedEvent

type ReactionAddedEvent reactionEvent

ReactionAddedEvent represents the Reaction added event

type ReactionRemovedEvent

type ReactionRemovedEvent reactionEvent

ReactionRemovedEvent represents the Reaction removed event

type ReconnectUrlEvent

type ReconnectUrlEvent struct {
	Type string `json:"type"`
	URL  string `json:"url"`
}

ReconnectUrlEvent represents the receiving reconnect url event

type Reminder

type Reminder struct {
	ID         string `json:"id"`
	Creator    string `json:"creator"`
	User       string `json:"user"`
	Text       string `json:"text"`
	Recurring  bool   `json:"recurring"`
	Time       int    `json:"time"`
	CompleteTS int    `json:"complete_ts"`
}

type RemoteFile

type RemoteFile struct {
	ID              string   `json:"id"`
	Created         JSONTime `json:"created"`
	Timestamp       JSONTime `json:"timestamp"`
	Name            string   `json:"name"`
	Title           string   `json:"title"`
	Mimetype        string   `json:"mimetype"`
	Filetype        string   `json:"filetype"`
	PrettyType      string   `json:"pretty_type"`
	User            string   `json:"user"`
	Editable        bool     `json:"editable"`
	Size            int      `json:"size"`
	Mode            string   `json:"mode"`
	IsExternal      bool     `json:"is_external"`
	ExternalType    string   `json:"external_type"`
	IsPublic        bool     `json:"is_public"`
	PublicURLShared bool     `json:"public_url_shared"`
	DisplayAsBot    bool     `json:"display_as_bot"`
	Username        string   `json:"username"`
	URLPrivate      string   `json:"url_private"`
	Permalink       string   `json:"permalink"`
	CommentsCount   int      `json:"comments_count"`
	IsStarred       bool     `json:"is_starred"`
	Shares          Share    `json:"shares"`
	Channels        []string `json:"channels"`
	Groups          []string `json:"groups"`
	IMs             []string `json:"ims"`
	ExternalID      string   `json:"external_id"`
	ExternalURL     string   `json:"external_url"`
	HasRichPreview  bool     `json:"has_rich_preview"`
}

RemoteFile contains all the information for a remote file For more details: https://api.slack.com/messaging/files/remote

type RemoteFileParameters

type RemoteFileParameters struct {
	ExternalID            string // required
	ExternalURL           string // required
	Title                 string // required
	Filetype              string
	IndexableFileContents string
	PreviewImage          string
	PreviewImageReader    io.Reader
}

RemoteFileParameters contains required and optional parameters for a remote file.

ExternalID is a user defined GUID, ExternalURL is where the remote file can be accessed, and Title is the name of the file.

For more details: https://api.slack.com/methods/files.remote.add

type Reply

type Reply struct {
	User      string `json:"user,omitempty"`
	Timestamp string `json:"ts,omitempty"`
}

Reply contains information about a reply for a thread

type ResponseMetadata

type ResponseMetadata struct {
	Cursor   string   `json:"next_cursor"`
	Messages []string `json:"messages"`
	Warnings []string `json:"warnings"`
}

ResponseMetadata holds pagination metadata

type RichTextBlock

type RichTextBlock struct {
	Type     MessageBlockType  `json:"type"`
	BlockID  string            `json:"block_id,omitempty"`
	Elements []RichTextElement `json:"elements"`
}

RichTextBlock defines a new block of type rich_text. More Information: https://api.slack.com/changelog/2019-09-what-they-see-is-what-you-get-and-more-and-less

func NewRichTextBlock

func NewRichTextBlock(blockID string, elements ...RichTextElement) *RichTextBlock

NewRichTextBlock returns a new instance of RichText Block.

func (RichTextBlock) BlockType

func (b RichTextBlock) BlockType() MessageBlockType

func (*RichTextBlock) UnmarshalJSON

func (e *RichTextBlock) UnmarshalJSON(b []byte) error

type RichTextElement

type RichTextElement interface {
	RichTextElementType() RichTextElementType
}

type RichTextElementType

type RichTextElementType string
const (
	RTEList         RichTextElementType = "rich_text_list"
	RTEPreformatted RichTextElementType = "rich_text_preformatted"
	RTEQuote        RichTextElementType = "rich_text_quote"
	RTESection      RichTextElementType = "rich_text_section"
	RTEUnknown      RichTextElementType = "rich_text_unknown"
)

type RichTextSection

type RichTextSection struct {
	Type     RichTextElementType      `json:"type"`
	Elements []RichTextSectionElement `json:"elements"`
}

func NewRichTextSection

func NewRichTextSection(elements ...RichTextSectionElement) *RichTextSection

NewRichTextSectionBlockElement .

func (RichTextSection) RichTextElementType

func (s RichTextSection) RichTextElementType() RichTextElementType

ElementType returns the type of the Element

func (*RichTextSection) UnmarshalJSON

func (e *RichTextSection) UnmarshalJSON(b []byte) error

type RichTextSectionBroadcastElement

type RichTextSectionBroadcastElement struct {
	Type  RichTextSectionElementType `json:"type"`
	Range string                     `json:"range"`
}

func NewRichTextSectionBroadcastElement

func NewRichTextSectionBroadcastElement(rangeStr string) *RichTextSectionBroadcastElement

func (RichTextSectionBroadcastElement) RichTextSectionElementType

func (r RichTextSectionBroadcastElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionChannelElement

type RichTextSectionChannelElement struct {
	Type      RichTextSectionElementType `json:"type"`
	ChannelID string                     `json:"channel_id"`
	Style     *RichTextSectionTextStyle  `json:"style,omitempty"`
}

func NewRichTextSectionChannelElement

func NewRichTextSectionChannelElement(channelID string, style *RichTextSectionTextStyle) *RichTextSectionChannelElement

func (RichTextSectionChannelElement) RichTextSectionElementType

func (r RichTextSectionChannelElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionColorElement

type RichTextSectionColorElement struct {
	Type  RichTextSectionElementType `json:"type"`
	Value string                     `json:"value"`
}

func NewRichTextSectionColorElement

func NewRichTextSectionColorElement(value string) *RichTextSectionColorElement

func (RichTextSectionColorElement) RichTextSectionElementType

func (r RichTextSectionColorElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionDateElement

type RichTextSectionDateElement struct {
	Type      RichTextSectionElementType `json:"type"`
	Timestamp string                     `json:"timestamp"`
}

func NewRichTextSectionDateElement

func NewRichTextSectionDateElement(timestamp string) *RichTextSectionDateElement

func (RichTextSectionDateElement) RichTextSectionElementType

func (r RichTextSectionDateElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionElement

type RichTextSectionElement interface {
	RichTextSectionElementType() RichTextSectionElementType
}

type RichTextSectionElementType

type RichTextSectionElementType string
const (
	RTSEBroadcast RichTextSectionElementType = "broadcast"
	RTSEChannel   RichTextSectionElementType = "channel"
	RTSEColor     RichTextSectionElementType = "color"
	RTSEDate      RichTextSectionElementType = "date"
	RTSEEmoji     RichTextSectionElementType = "emoji"
	RTSELink      RichTextSectionElementType = "link"
	RTSETeam      RichTextSectionElementType = "team"
	RTSEText      RichTextSectionElementType = "text"
	RTSEUser      RichTextSectionElementType = "user"
	RTSEUserGroup RichTextSectionElementType = "usergroup"

	RTSEUnknown RichTextSectionElementType = "unknown"
)

type RichTextSectionEmojiElement

type RichTextSectionEmojiElement struct {
	Type     RichTextSectionElementType `json:"type"`
	Name     string                     `json:"name"`
	SkinTone int                        `json:"skin_tone"`
	Style    *RichTextSectionTextStyle  `json:"style,omitempty"`
}

func NewRichTextSectionEmojiElement

func NewRichTextSectionEmojiElement(name string, skinTone int, style *RichTextSectionTextStyle) *RichTextSectionEmojiElement

func (RichTextSectionEmojiElement) RichTextSectionElementType

func (r RichTextSectionEmojiElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionLinkElement

type RichTextSectionLinkElement struct {
	Type  RichTextSectionElementType `json:"type"`
	URL   string                     `json:"url"`
	Text  string                     `json:"text"`
	Style *RichTextSectionTextStyle  `json:"style,omitempty"`
}

func NewRichTextSectionLinkElement

func NewRichTextSectionLinkElement(url, text string, style *RichTextSectionTextStyle) *RichTextSectionLinkElement

func (RichTextSectionLinkElement) RichTextSectionElementType

func (r RichTextSectionLinkElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionTeamElement

type RichTextSectionTeamElement struct {
	Type   RichTextSectionElementType `json:"type"`
	TeamID string                     `json:"team_id"`
	Style  *RichTextSectionTextStyle  `json:"style.omitempty"`
}

func NewRichTextSectionTeamElement

func NewRichTextSectionTeamElement(teamID string, style *RichTextSectionTextStyle) *RichTextSectionTeamElement

func (RichTextSectionTeamElement) RichTextSectionElementType

func (r RichTextSectionTeamElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionTextElement

type RichTextSectionTextElement struct {
	Type  RichTextSectionElementType `json:"type"`
	Text  string                     `json:"text"`
	Style *RichTextSectionTextStyle  `json:"style,omitempty"`
}

func NewRichTextSectionTextElement

func NewRichTextSectionTextElement(text string, style *RichTextSectionTextStyle) *RichTextSectionTextElement

func (RichTextSectionTextElement) RichTextSectionElementType

func (r RichTextSectionTextElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionTextStyle

type RichTextSectionTextStyle struct {
	Bold   bool `json:"bold,omitempty"`
	Italic bool `json:"italic,omitempty"`
	Strike bool `json:"strike,omitempty"`
	Code   bool `json:"code,omitempty"`
}

type RichTextSectionUnknownElement

type RichTextSectionUnknownElement struct {
	Type RichTextSectionElementType `json:"type"`
	Raw  string
}

func (RichTextSectionUnknownElement) RichTextSectionElementType

func (r RichTextSectionUnknownElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionUserElement

type RichTextSectionUserElement struct {
	Type   RichTextSectionElementType `json:"type"`
	UserID string                     `json:"user_id"`
	Style  *RichTextSectionTextStyle  `json:"style,omitempty"`
}

func NewRichTextSectionUserElement

func NewRichTextSectionUserElement(userID string, style *RichTextSectionTextStyle) *RichTextSectionUserElement

func (RichTextSectionUserElement) RichTextSectionElementType

func (r RichTextSectionUserElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextSectionUserGroupElement

type RichTextSectionUserGroupElement struct {
	Type        RichTextSectionElementType `json:"type"`
	UsergroupID string                     `json:"usergroup_id"`
}

func NewRichTextSectionUserGroupElement

func NewRichTextSectionUserGroupElement(usergroupID string) *RichTextSectionUserGroupElement

func (RichTextSectionUserGroupElement) RichTextSectionElementType

func (r RichTextSectionUserGroupElement) RichTextSectionElementType() RichTextSectionElementType

type RichTextUnknown

type RichTextUnknown struct {
	Type RichTextElementType
	Raw  string
}

func (RichTextUnknown) RichTextElementType

func (u RichTextUnknown) RichTextElementType() RichTextElementType

type ScheduledMessage

type ScheduledMessage struct {
	ID          string `json:"id"`
	Channel     string `json:"channel_id"`
	PostAt      int    `json:"post_at"`
	DateCreated int    `json:"date_created"`
	Text        string `json:"text"`
}

ScheduledMessage contains information about a slack scheduled message

type SearchFiles

type SearchFiles struct {
	Matches    []File `json:"matches"`
	Paging     `json:"paging"`
	Pagination `json:"pagination"`
	Total      int `json:"total"`
}

type SearchMessage

type SearchMessage struct {
	Type        string       `json:"type"`
	Channel     CtxChannel   `json:"channel"`
	User        string       `json:"user"`
	Username    string       `json:"username"`
	Timestamp   string       `json:"ts"`
	Blocks      Blocks       `json:"blocks,omitempty"`
	Text        string       `json:"text"`
	Permalink   string       `json:"permalink"`
	Attachments []Attachment `json:"attachments"`
	Previous    CtxMessage   `json:"previous"`
	Previous2   CtxMessage   `json:"previous_2"`
	Next        CtxMessage   `json:"next"`
	Next2       CtxMessage   `json:"next_2"`
}

type SearchMessages

type SearchMessages struct {
	Matches    []SearchMessage `json:"matches"`
	Paging     `json:"paging"`
	Pagination `json:"pagination"`
	Total      int `json:"total"`
}

type SearchParameters

type SearchParameters struct {
	Sort          string
	SortDirection string
	Highlight     bool
	Count         int
	Page          int
}

func NewSearchParameters

func NewSearchParameters() SearchParameters

type SecretsVerifier

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

SecretsVerifier contains the information needed to verify that the request comes from Slack

func NewSecretsVerifier

func NewSecretsVerifier(header http.Header, secret string) (sv SecretsVerifier, err error)

NewSecretsVerifier returns a SecretsVerifier object in exchange for an http.Header object and signing secret

func (SecretsVerifier) Ensure

func (v SecretsVerifier) Ensure() error

Ensure compares the signature sent from Slack with the actual computed hash to judge validity

func (*SecretsVerifier) WithDebug

func (v *SecretsVerifier) WithDebug(d Debug) *SecretsVerifier

func (*SecretsVerifier) Write

func (v *SecretsVerifier) Write(body []byte) (n int, err error)

type SectionBlock

type SectionBlock struct {
	Type      MessageBlockType   `json:"type"`
	Text      *TextBlockObject   `json:"text,omitempty"`
	BlockID   string             `json:"block_id,omitempty"`
	Fields    []*TextBlockObject `json:"fields,omitempty"`
	Accessory *Accessory         `json:"accessory,omitempty"`
}

SectionBlock defines a new block of type section

More Information: https://api.slack.com/reference/messaging/blocks#section

func NewSectionBlock

func NewSectionBlock(textObj *TextBlockObject, fields []*TextBlockObject, accessory *Accessory, options ...SectionBlockOption) *SectionBlock

NewSectionBlock returns a new instance of a section block to be rendered

func (SectionBlock) BlockType

func (s SectionBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type SectionBlockOption

type SectionBlockOption func(*SectionBlock)

SectionBlockOption allows configuration of options for a new section block

func SectionBlockOptionBlockID

func SectionBlockOptionBlockID(blockID string) SectionBlockOption

type SelectBlockElement

type SelectBlockElement struct {
	Type                         string                    `json:"type,omitempty"`
	Placeholder                  *TextBlockObject          `json:"placeholder,omitempty"`
	ActionID                     string                    `json:"action_id,omitempty"`
	Options                      []*OptionBlockObject      `json:"options,omitempty"`
	OptionGroups                 []*OptionGroupBlockObject `json:"option_groups,omitempty"`
	InitialOption                *OptionBlockObject        `json:"initial_option,omitempty"`
	InitialUser                  string                    `json:"initial_user,omitempty"`
	InitialConversation          string                    `json:"initial_conversation,omitempty"`
	InitialChannel               string                    `json:"initial_channel,omitempty"`
	DefaultToCurrentConversation bool                      `json:"default_to_current_conversation,omitempty"`
	ResponseURLEnabled           bool                      `json:"response_url_enabled,omitempty"`
	Filter                       *SelectBlockElementFilter `json:"filter,omitempty"`
	MinQueryLength               *int                      `json:"min_query_length,omitempty"`
	Confirm                      *ConfirmationBlockObject  `json:"confirm,omitempty"`
}

SelectBlockElement defines the simplest form of select menu, with a static list of options passed in when defining the element.

More Information: https://api.slack.com/reference/messaging/block-elements#select

func NewOptionsGroupSelectBlockElement

func NewOptionsGroupSelectBlockElement(
	optType string,
	placeholder *TextBlockObject,
	actionID string,
	optGroups ...*OptionGroupBlockObject,
) *SelectBlockElement

NewOptionsGroupSelectBlockElement returns a new instance of SelectBlockElement for use with the Options object only.

func NewOptionsSelectBlockElement

func NewOptionsSelectBlockElement(optType string, placeholder *TextBlockObject, actionID string, options ...*OptionBlockObject) *SelectBlockElement

NewOptionsSelectBlockElement returns a new instance of SelectBlockElement for use with the Options object only.

func (SelectBlockElement) ElementType

func (s SelectBlockElement) ElementType() MessageElementType

ElementType returns the type of the Element

type SelectBlockElementFilter

type SelectBlockElementFilter struct {
	Include                       []string `json:"include,omitempty"`
	ExcludeExternalSharedChannels bool     `json:"exclude_external_shared_channels,omitempty"`
	ExcludeBotUsers               bool     `json:"exclude_bot_users,omitempty"`
}

SelectBlockElementFilter allows to filter select element conversation options by type.

More Information: https://api.slack.com/reference/block-kit/composition-objects#filter_conversations

type SelectDataSource

type SelectDataSource string

SelectDataSource types of select datasource

const (
	// DialogDataSourceStatic menu with static Options/OptionGroups
	DialogDataSourceStatic SelectDataSource = "static"
	// DialogDataSourceExternal dynamic datasource
	DialogDataSourceExternal SelectDataSource = "external"
	// DialogDataSourceConversations provides a list of conversations
	DialogDataSourceConversations SelectDataSource = "conversations"
	// DialogDataSourceChannels provides a list of channels
	DialogDataSourceChannels SelectDataSource = "channels"
	// DialogDataSourceUsers provides a list of users
	DialogDataSourceUsers SelectDataSource = "users"
)

type Share

type Share struct {
	Public  map[string][]ShareFileInfo `json:"public"`
	Private map[string][]ShareFileInfo `json:"private"`
}

type ShareFileInfo

type ShareFileInfo struct {
	ReplyUsers      []string `json:"reply_users"`
	ReplyUsersCount int      `json:"reply_users_count"`
	ReplyCount      int      `json:"reply_count"`
	Ts              string   `json:"ts"`
	ThreadTs        string   `json:"thread_ts"`
	LatestReply     string   `json:"latest_reply"`
	ChannelName     string   `json:"channel_name"`
	TeamID          string   `json:"team_id"`
}

type SlackErrorResponse

type SlackErrorResponse struct {
	Err              string
	ResponseMetadata ResponseMetadata
}

SlackErrorResponse brings along the metadata of errors returned by the Slack API.

func (SlackErrorResponse) Error

func (r SlackErrorResponse) Error() string

type SlackMetadata

type SlackMetadata struct {
	EventType    string                 `json:"event_type"`
	EventPayload map[string]interface{} `json:"event_payload"`
}

SlackMetadata https://api.slack.com/reference/metadata

type SlackResponse

type SlackResponse struct {
	Ok               bool             `json:"ok"`
	Error            string           `json:"error"`
	ResponseMetadata ResponseMetadata `json:"response_metadata"`
}

SlackResponse handles parsing out errors from the web api.

func (SlackResponse) Err

func (t SlackResponse) Err() error

type SlashCommand

type SlashCommand struct {
	Token          string `json:"token"`
	TeamID         string `json:"team_id"`
	TeamDomain     string `json:"team_domain"`
	EnterpriseID   string `json:"enterprise_id,omitempty"`
	EnterpriseName string `json:"enterprise_name,omitempty"`
	ChannelID      string `json:"channel_id"`
	ChannelName    string `json:"channel_name"`
	UserID         string `json:"user_id"`
	UserName       string `json:"user_name"`
	Command        string `json:"command"`
	Text           string `json:"text"`
	ResponseURL    string `json:"response_url"`
	TriggerID      string `json:"trigger_id"`
	APIAppID       string `json:"api_app_id"`
}

SlashCommand contains information about a request of the slash command

func SlashCommandParse

func SlashCommandParse(r *http.Request) (s SlashCommand, err error)

SlashCommandParse will parse the request of the slash command

func (SlashCommand) ValidateToken

func (s SlashCommand) ValidateToken(verificationTokens ...string) bool

ValidateToken validates verificationTokens

type SnoozeDebug

type SnoozeDebug struct {
	SnoozeEndDate string `json:"snooze_end_date"`
}

type SnoozeInfo

type SnoozeInfo struct {
	SnoozeEnabled   bool        `json:"snooze_enabled,omitempty"`
	SnoozeEndTime   int         `json:"snooze_endtime,omitempty"`
	SnoozeRemaining int         `json:"snooze_remaining,omitempty"`
	SnoozeDebug     SnoozeDebug `json:"snooze_debug,omitempty"`
}

type SocketModeConnection

type SocketModeConnection struct {
	URL  string                 `json:"url,omitempty"`
	Data map[string]interface{} `json:"-"`
}

SocketModeConnection contains various details about the SocketMode connection. It is returned by an "apps.connections.open" API call.

type StarAddedEvent

type StarAddedEvent starEvent

StarAddedEvent represents the Star added event

type StarRemovedEvent

type StarRemovedEvent starEvent

StarRemovedEvent represents the Star removed event

type StarredItem

type StarredItem Item

type StarredItemPagination

type StarredItemPagination struct {
	Items []Item
	// contains filtered or unexported fields
}

StarredItemPagination allows for paginating over the starred items

type StarsParameters

type StarsParameters struct {
	User  string
	Count int
	Page  int
}

func NewStarsParameters

func NewStarsParameters() StarsParameters

NewStarsParameters initialises StarsParameters with default values

type StatusCodeError

type StatusCodeError struct {
	Code   int
	Status string
}

StatusCodeError represents an http response error. type httpStatusCode interface { HTTPStatusCode() int } to handle it.

func (StatusCodeError) Error

func (t StatusCodeError) Error() string

func (StatusCodeError) HTTPStatusCode

func (t StatusCodeError) HTTPStatusCode() int

func (StatusCodeError) Retryable

func (t StatusCodeError) Retryable() bool

type Style

type Style string

Style is a style of Button element https://api.slack.com/reference/block-kit/block-elements#button__fields

const (
	StyleDefault Style = ""
	StylePrimary Style = "primary"
	StyleDanger  Style = "danger"
)

type SubteamCreatedEvent

type SubteamCreatedEvent struct {
	Type    string    `json:"type"`
	Subteam UserGroup `json:"subteam"`
}

SubteamCreatedEvent represents the Subteam created event

type SubteamMembersChangedEvent

type SubteamMembersChangedEvent struct {
	Type               string   `json:"type"`
	SubteamID          string   `json:"subteam_id"`
	TeamID             string   `json:"team_id"`
	DatePreviousUpdate JSONTime `json:"date_previous_update"`
	DateUpdate         JSONTime `json:"date_update"`
	AddedUsers         []string `json:"added_users"`
	AddedUsersCount    int      `json:"added_users_count"`
	RemovedUsers       []string `json:"removed_users"`
	RemovedUsersCount  int      `json:"removed_users_count"`
}

SubteamCreatedEvent represents the membership of an existing User Group has changed event

type SubteamSelfAddedEvent

type SubteamSelfAddedEvent struct {
	Type      string `json:"type"`
	SubteamID string `json:"subteam_id"`
}

SubteamSelfAddedEvent represents an event of you have been added to a User Group

type SubteamSelfRemovedEvent

type SubteamSelfRemovedEvent SubteamSelfAddedEvent

SubteamSelfRemovedEvent represents an event of you have been removed from a User Group

type SubteamUpdatedEvent

type SubteamUpdatedEvent struct {
	Type    string    `json:"type"`
	Subteam UserGroup `json:"subteam"`
}

SubteamUpdatedEvent represents an event of an existing User Group has been updated or its members changed

type Team

type Team struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

Team contains details about a team

type TeamDomainChangeEvent

type TeamDomainChangeEvent struct {
	Type   string `json:"type"`
	URL    string `json:"url"`
	Domain string `json:"domain"`
}

TeamDomainChangeEvent represents the Team domain change event

type TeamIdentity

type TeamIdentity struct {
	ID            string `json:"id"`
	Name          string `json:"name"`
	Domain        string `json:"domain"`
	Image34       string `json:"image_34"`
	Image44       string `json:"image_44"`
	Image68       string `json:"image_68"`
	Image88       string `json:"image_88"`
	Image102      string `json:"image_102"`
	Image132      string `json:"image_132"`
	Image230      string `json:"image_230"`
	ImageDefault  bool   `json:"image_default"`
	ImageOriginal string `json:"image_original"`
}

type TeamInfo

type TeamInfo struct {
	ID          string                 `json:"id"`
	Name        string                 `json:"name"`
	Domain      string                 `json:"domain"`
	EmailDomain string                 `json:"email_domain"`
	Icon        map[string]interface{} `json:"icon"`
}

type TeamJoinEvent

type TeamJoinEvent struct {
	Type string `json:"type"`
	User User   `json:"user"`
}

TeamJoinEvent represents the Team join event

type TeamMigrationStartedEvent

type TeamMigrationStartedEvent struct {
	Type string `json:"type"`
}

TeamMigrationStartedEvent represents the Team migration started event

type TeamPrefChangeEvent

type TeamPrefChangeEvent struct {
	Type  string   `json:"type"`
	Name  string   `json:"name,omitempty"`
	Value []string `json:"value,omitempty"`
}

TeamPrefChangeEvent represents the Team preference change event

type TeamRenameEvent

type TeamRenameEvent struct {
	Type           string `json:"type"`
	Name           string `json:"name,omitempty"`
	EventTimestamp string `json:"event_ts,omitempty"`
}

TeamRenameEvent represents the Team rename event

type TeamResponse

type TeamResponse struct {
	Team TeamInfo `json:"team"`
	SlackResponse
}

type TextBlockObject

type TextBlockObject struct {
	Type     string `json:"type"`
	Text     string `json:"text"`
	Emoji    bool   `json:"emoji,omitempty"`
	Verbatim bool   `json:"verbatim,omitempty"`
}

TextBlockObject defines a text element object to be used with blocks

More Information: https://api.slack.com/reference/messaging/composition-objects#text

func NewTextBlockObject

func NewTextBlockObject(elementType, text string, emoji, verbatim bool) *TextBlockObject

NewTextBlockObject returns an instance of a new Text Block Object

func (TextBlockObject) BlockType

func (t TextBlockObject) BlockType() MessageBlockType

BlockType returns the type of the block

func (TextBlockObject) MixedElementType

func (s TextBlockObject) MixedElementType() MixedElementType

validateType enforces block objects for element and block parameters

func (TextBlockObject) Validate

func (s TextBlockObject) Validate() error

Validate checks if TextBlockObject has valid values

type TextInputElement

type TextInputElement struct {
	DialogInput
	MaxLength int              `json:"max_length,omitempty"`
	MinLength int              `json:"min_length,omitempty"`
	Hint      string           `json:"hint,omitempty"`
	Subtype   TextInputSubtype `json:"subtype"`
	Value     string           `json:"value"`
}

TextInputElement subtype of DialogInput https://api.slack.com/dialogs#option_element_attributes#text_element_attributes

func NewTextAreaInput

func NewTextAreaInput(name, label, text string) *TextInputElement

NewTextAreaInput constructor for a `textarea` input

func NewTextInput

func NewTextInput(name, label, text string, options ...TextInputOption) *TextInputElement

NewTextInput constructor for a `text` input

type TextInputOption

type TextInputOption func(*TextInputElement)

TextInputOption handle to extra inputs options.

type TextInputSubtype

type TextInputSubtype string

TextInputSubtype Accepts email, number, tel, or url. In some form factors, optimized input is provided for this subtype.

const (
	// InputSubtypeEmail email keyboard
	InputSubtypeEmail TextInputSubtype = "email"
	// InputSubtypeNumber numeric keyboard
	InputSubtypeNumber TextInputSubtype = "number"
	// InputSubtypeTel Phone keyboard
	InputSubtypeTel TextInputSubtype = "tel"
	// InputSubtypeURL Phone keyboard
	InputSubtypeURL TextInputSubtype = "url"
)

type TimePickerBlockElement

type TimePickerBlockElement struct {
	Type        MessageElementType       `json:"type"`
	ActionID    string                   `json:"action_id,omitempty"`
	Placeholder *TextBlockObject         `json:"placeholder,omitempty"`
	InitialTime string                   `json:"initial_time,omitempty"`
	Confirm     *ConfirmationBlockObject `json:"confirm,omitempty"`
}

TimePickerBlockElement defines an element which lets users easily select a time from nice UI. Time picker elements can be used inside of section and actions blocks.

More Information: https://api.slack.com/reference/messaging/block-elements#timepicker

func NewTimePickerBlockElement

func NewTimePickerBlockElement(actionID string) *TimePickerBlockElement

NewTimePickerBlockElement returns an instance of a date picker element

func (TimePickerBlockElement) ElementType

ElementType returns the type of the Element

type Topic

type Topic struct {
	Value   string   `json:"value"`
	Creator string   `json:"creator"`
	LastSet JSONTime `json:"last_set"`
}

Topic contains information about the topic

type UnknownBlock

type UnknownBlock struct {
	Type    MessageBlockType `json:"type"`
	BlockID string           `json:"block_id,omitempty"`
}

UnknownBlock represents a block type that is not yet known. This block type exists to prevent Slack from introducing new and unknown block types that break this library.

func (UnknownBlock) BlockType

func (b UnknownBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type UnknownBlockElement

type UnknownBlockElement struct {
	Type     MessageElementType `json:"type"`
	Elements BlockElements
}

UnknownBlockElement any block element that this library does not directly support. See the "Rich Elements" section at the following URL: https://api.slack.com/changelog/2019-09-what-they-see-is-what-you-get-and-more-and-less New block element types may be introduced by Slack at any time; this is a catch-all for any such block elements.

func (UnknownBlockElement) ElementType

func (s UnknownBlockElement) ElementType() MessageElementType

ElementType returns the type of the Element

type UnmappedError

type UnmappedError struct {
	// EventType returns event type name.
	EventType string
	// RawEvent returns raw event body.
	RawEvent json.RawMessage
	// contains filtered or unexported fields
}

UnmappedError represents error occurred when there is no mapping between given event name and corresponding Go struct.

func NewUnmappedError

func NewUnmappedError(ctxMsg, eventType string, raw json.RawMessage) *UnmappedError

NewUnmappedError returns new UnmappedError instance.

func (UnmappedError) Error

func (u UnmappedError) Error() string

Error returns human-readable error message.

type UnmarshallingErrorEvent

type UnmarshallingErrorEvent struct {
	ErrorObj error
}

UnmarshallingErrorEvent is used when there are issues deconstructing a response

func (UnmarshallingErrorEvent) Error

func (u UnmarshallingErrorEvent) Error() string

type UpdateUserGroupsOption

type UpdateUserGroupsOption func(*UpdateUserGroupsParams)

UpdateUserGroupsOption options for the UpdateUserGroup method call.

func UpdateUserGroupsOptionChannels

func UpdateUserGroupsOptionChannels(channels []string) UpdateUserGroupsOption

UpdateUserGroupsOptionChannels change the default channels of the User Group. (default: unspecified, so it's no-op)

func UpdateUserGroupsOptionDescription

func UpdateUserGroupsOptionDescription(description *string) UpdateUserGroupsOption

UpdateUserGroupsOptionDescription change the description of the User Group. (default: nil, so it's no-op)

func UpdateUserGroupsOptionHandle

func UpdateUserGroupsOptionHandle(handle string) UpdateUserGroupsOption

UpdateUserGroupsOptionHandle change the handle of the User Group (default: empty, so it's no-op)

func UpdateUserGroupsOptionName

func UpdateUserGroupsOptionName(name string) UpdateUserGroupsOption

UpdateUserGroupsOptionName change the name of the User Group (default: empty, so it's no-op)

type UpdateUserGroupsParams

type UpdateUserGroupsParams struct {
	Name        string
	Handle      string
	Description *string
	Channels    *[]string
}

UpdateUserGroupsParams contains arguments for UpdateUserGroup method call

type User

type User struct {
	ID                string         `json:"id"`
	TeamID            string         `json:"team_id"`
	Name              string         `json:"name"`
	Deleted           bool           `json:"deleted"`
	Color             string         `json:"color"`
	RealName          string         `json:"real_name"`
	TZ                string         `json:"tz,omitempty"`
	TZLabel           string         `json:"tz_label"`
	TZOffset          int            `json:"tz_offset"`
	Profile           UserProfile    `json:"profile"`
	IsBot             bool           `json:"is_bot"`
	IsAdmin           bool           `json:"is_admin"`
	IsOwner           bool           `json:"is_owner"`
	IsPrimaryOwner    bool           `json:"is_primary_owner"`
	IsRestricted      bool           `json:"is_restricted"`
	IsUltraRestricted bool           `json:"is_ultra_restricted"`
	IsStranger        bool           `json:"is_stranger"`
	IsAppUser         bool           `json:"is_app_user"`
	IsInvitedUser     bool           `json:"is_invited_user"`
	Has2FA            bool           `json:"has_2fa"`
	HasFiles          bool           `json:"has_files"`
	Presence          string         `json:"presence"`
	Locale            string         `json:"locale"`
	Updated           JSONTime       `json:"updated"`
	Enterprise        EnterpriseUser `json:"enterprise_user,omitempty"`
}

User contains all the information of a user

type UserChangeEvent

type UserChangeEvent struct {
	Type string `json:"type"`
	User User   `json:"user"`
}

UserChangeEvent represents the user change event

type UserDetails

type UserDetails struct {
	ID             string    `json:"id"`
	Name           string    `json:"name"`
	Created        JSONTime  `json:"created"`
	ManualPresence string    `json:"manual_presence"`
	Prefs          UserPrefs `json:"prefs"`
}

UserDetails contains user details coming in the initial response from StartRTM

type UserGroup

type UserGroup struct {
	ID          string         `json:"id"`
	TeamID      string         `json:"team_id"`
	IsUserGroup bool           `json:"is_usergroup"`
	Name        string         `json:"name"`
	Description string         `json:"description"`
	Handle      string         `json:"handle"`
	IsExternal  bool           `json:"is_external"`
	DateCreate  JSONTime       `json:"date_create"`
	DateUpdate  JSONTime       `json:"date_update"`
	DateDelete  JSONTime       `json:"date_delete"`
	AutoType    string         `json:"auto_type"`
	CreatedBy   string         `json:"created_by"`
	UpdatedBy   string         `json:"updated_by"`
	DeletedBy   string         `json:"deleted_by"`
	Prefs       UserGroupPrefs `json:"prefs"`
	UserCount   int            `json:"user_count"`
	Users       []string       `json:"users"`
}

UserGroup contains all the information of a user group

type UserGroupPrefs

type UserGroupPrefs struct {
	Channels []string `json:"channels"`
	Groups   []string `json:"groups"`
}

UserGroupPrefs contains default channels and groups (private channels)

type UserIdentity

type UserIdentity struct {
	ID       string `json:"id"`
	Name     string `json:"name"`
	Email    string `json:"email"`
	Image24  string `json:"image_24"`
	Image32  string `json:"image_32"`
	Image48  string `json:"image_48"`
	Image72  string `json:"image_72"`
	Image192 string `json:"image_192"`
	Image512 string `json:"image_512"`
}

type UserIdentityResponse

type UserIdentityResponse struct {
	User UserIdentity `json:"user"`
	Team TeamIdentity `json:"team"`
	SlackResponse
}

type UserPagination

type UserPagination struct {
	Users []User
	// contains filtered or unexported fields
}

UserPagination allows for paginating over the users

func (UserPagination) Done

func (UserPagination) Done(err error) bool

Done checks if the pagination has completed

func (UserPagination) Failure

func (t UserPagination) Failure(err error) error

Failure checks if pagination failed.

func (UserPagination) Next

func (t UserPagination) Next(ctx context.Context) (_ UserPagination, err error)

type UserPrefs

type UserPrefs struct {
	UserColors       string `json:"user_colors,omitempty"`
	ColorNamesInList bool   `json:"color_names_in_list,omitempty"`
	// Keyboard UnknownType `json:"keyboard"`
	EmailAlerts                         string `json:"email_alerts,omitempty"`
	EmailAlertsSleepUntil               int    `json:"email_alerts_sleep_until,omitempty"`
	EmailTips                           bool   `json:"email_tips,omitempty"`
	EmailWeekly                         bool   `json:"email_weekly,omitempty"`
	EmailOffers                         bool   `json:"email_offers,omitempty"`
	EmailResearch                       bool   `json:"email_research,omitempty"`
	EmailDeveloper                      bool   `json:"email_developer,omitempty"`
	WelcomeMessageHidden                bool   `json:"welcome_message_hidden,omitempty"`
	SearchSort                          string `json:"search_sort,omitempty"`
	SearchFileSort                      string `json:"search_file_sort,omitempty"`
	SearchChannelSort                   string `json:"search_channel_sort,omitempty"`
	SearchPeopleSort                    string `json:"search_people_sort,omitempty"`
	ExpandInlineImages                  bool   `json:"expand_inline_images,omitempty"`
	ExpandInternalInlineImages          bool   `json:"expand_internal_inline_images,omitempty"`
	ExpandSnippets                      bool   `json:"expand_snippets,omitempty"`
	PostsFormattingGuide                bool   `json:"posts_formatting_guide,omitempty"`
	SeenWelcome2                        bool   `json:"seen_welcome_2,omitempty"`
	SeenSSBPrompt                       bool   `json:"seen_ssb_prompt,omitempty"`
	SpacesNewXpBannerDismissed          bool   `json:"spaces_new_xp_banner_dismissed,omitempty"`
	SearchOnlyMyChannels                bool   `json:"search_only_my_channels,omitempty"`
	SearchOnlyCurrentTeam               bool   `json:"search_only_current_team,omitempty"`
	SearchHideMyChannels                bool   `json:"search_hide_my_channels,omitempty"`
	SearchOnlyShowOnline                bool   `json:"search_only_show_online,omitempty"`
	SearchHideDeactivatedUsers          bool   `json:"search_hide_deactivated_users,omitempty"`
	EmojiMode                           string `json:"emoji_mode,omitempty"`
	EmojiUse                            string `json:"emoji_use,omitempty"`
	HasInvited                          bool   `json:"has_invited,omitempty"`
	HasUploaded                         bool   `json:"has_uploaded,omitempty"`
	HasCreatedChannel                   bool   `json:"has_created_channel,omitempty"`
	HasSearched                         bool   `json:"has_searched,omitempty"`
	SearchExcludeChannels               string `json:"search_exclude_channels,omitempty"`
	MessagesTheme                       string `json:"messages_theme,omitempty"`
	WebappSpellcheck                    bool   `json:"webapp_spellcheck,omitempty"`
	NoJoinedOverlays                    bool   `json:"no_joined_overlays,omitempty"`
	NoCreatedOverlays                   bool   `json:"no_created_overlays,omitempty"`
	DropboxEnabled                      bool   `json:"dropbox_enabled,omitempty"`
	SeenDomainInviteReminder            bool   `json:"seen_domain_invite_reminder,omitempty"`
	SeenMemberInviteReminder            bool   `json:"seen_member_invite_reminder,omitempty"`
	MuteSounds                          bool   `json:"mute_sounds,omitempty"`
	ArrowHistory                        bool   `json:"arrow_history,omitempty"`
	TabUIReturnSelects                  bool   `json:"tab_ui_return_selects,omitempty"`
	ObeyInlineImgLimit                  bool   `json:"obey_inline_img_limit,omitempty"`
	RequireAt                           bool   `json:"require_at,omitempty"`
	SsbSpaceWindow                      string `json:"ssb_space_window,omitempty"`
	MacSsbBounce                        string `json:"mac_ssb_bounce,omitempty"`
	MacSsbBullet                        bool   `json:"mac_ssb_bullet,omitempty"`
	ExpandNonMediaAttachments           bool   `json:"expand_non_media_attachments,omitempty"`
	ShowTyping                          bool   `json:"show_typing,omitempty"`
	PagekeysHandled                     bool   `json:"pagekeys_handled,omitempty"`
	LastSnippetType                     string `json:"last_snippet_type,omitempty"`
	DisplayRealNamesOverride            int    `json:"display_real_names_override,omitempty"`
	DisplayDisplayNames                 bool   `json:"display_display_names,omitempty"`
	Time24                              bool   `json:"time24,omitempty"`
	EnterIsSpecialInTbt                 bool   `json:"enter_is_special_in_tbt,omitempty"`
	MsgInputSendBtn                     bool   `json:"msg_input_send_btn,omitempty"`
	MsgInputSendBtnAutoSet              bool   `json:"msg_input_send_btn_auto_set,omitempty"`
	MsgInputStickyComposer              bool   `json:"msg_input_sticky_composer,omitempty"`
	GraphicEmoticons                    bool   `json:"graphic_emoticons,omitempty"`
	ConvertEmoticons                    bool   `json:"convert_emoticons,omitempty"`
	SsEmojis                            bool   `json:"ss_emojis,omitempty"`
	SeenOnboardingStart                 bool   `json:"seen_onboarding_start,omitempty"`
	OnboardingCancelled                 bool   `json:"onboarding_cancelled,omitempty"`
	SeenOnboardingSlackbotConversation  bool   `json:"seen_onboarding_slackbot_conversation,omitempty"`
	SeenOnboardingChannels              bool   `json:"seen_onboarding_channels,omitempty"`
	SeenOnboardingDirectMessages        bool   `json:"seen_onboarding_direct_messages,omitempty"`
	SeenOnboardingInvites               bool   `json:"seen_onboarding_invites,omitempty"`
	SeenOnboardingSearch                bool   `json:"seen_onboarding_search,omitempty"`
	SeenOnboardingRecentMentions        bool   `json:"seen_onboarding_recent_mentions,omitempty"`
	SeenOnboardingStarredItems          bool   `json:"seen_onboarding_starred_items,omitempty"`
	SeenOnboardingPrivateGroups         bool   `json:"seen_onboarding_private_groups,omitempty"`
	SeenOnboardingBanner                bool   `json:"seen_onboarding_banner,omitempty"`
	OnboardingSlackbotConversationStep  int    `json:"onboarding_slackbot_conversation_step,omitempty"`
	SetTzAutomatically                  bool   `json:"set_tz_automatically,omitempty"`
	SuppressLinkWarning                 bool   `json:"suppress_link_warning,omitempty"`
	DndEnabled                          bool   `json:"dnd_enabled,omitempty"`
	DndStartHour                        string `json:"dnd_start_hour,omitempty"`
	DndEndHour                          string `json:"dnd_end_hour,omitempty"`
	DndBeforeMonday                     string `json:"dnd_before_monday,omitempty"`
	DndAfterMonday                      string `json:"dnd_after_monday,omitempty"`
	DndEnabledMonday                    string `json:"dnd_enabled_monday,omitempty"`
	DndBeforeTuesday                    string `json:"dnd_before_tuesday,omitempty"`
	DndAfterTuesday                     string `json:"dnd_after_tuesday,omitempty"`
	DndEnabledTuesday                   string `json:"dnd_enabled_tuesday,omitempty"`
	DndBeforeWednesday                  string `json:"dnd_before_wednesday,omitempty"`
	DndAfterWednesday                   string `json:"dnd_after_wednesday,omitempty"`
	DndEnabledWednesday                 string `json:"dnd_enabled_wednesday,omitempty"`
	DndBeforeThursday                   string `json:"dnd_before_thursday,omitempty"`
	DndAfterThursday                    string `json:"dnd_after_thursday,omitempty"`
	DndEnabledThursday                  string `json:"dnd_enabled_thursday,omitempty"`
	DndBeforeFriday                     string `json:"dnd_before_friday,omitempty"`
	DndAfterFriday                      string `json:"dnd_after_friday,omitempty"`
	DndEnabledFriday                    string `json:"dnd_enabled_friday,omitempty"`
	DndBeforeSaturday                   string `json:"dnd_before_saturday,omitempty"`
	DndAfterSaturday                    string `json:"dnd_after_saturday,omitempty"`
	DndEnabledSaturday                  string `json:"dnd_enabled_saturday,omitempty"`
	DndBeforeSunday                     string `json:"dnd_before_sunday,omitempty"`
	DndAfterSunday                      string `json:"dnd_after_sunday,omitempty"`
	DndEnabledSunday                    string `json:"dnd_enabled_sunday,omitempty"`
	DndDays                             string `json:"dnd_days,omitempty"`
	DndCustomNewBadgeSeen               bool   `json:"dnd_custom_new_badge_seen,omitempty"`
	DndNotificationScheduleNewBadgeSeen bool   `json:"dnd_notification_schedule_new_badge_seen,omitempty"`
	// UnreadCollapsedChannels      unknownType                  `json:"unread_collapsed_channels,omitempty"`
	SidebarBehavior          string `json:"sidebar_behavior,omitempty"`
	ChannelSort              string `json:"channel_sort,omitempty"`
	SeparatePrivateChannels  bool   `json:"separate_private_channels,omitempty"`
	SeparateSharedChannels   bool   `json:"separate_shared_channels,omitempty"`
	SidebarTheme             string `json:"sidebar_theme,omitempty"`
	SidebarThemeCustomValues string `json:"sidebar_theme_custom_values,omitempty"`
	NoInvitesWidgetInSidebar bool   `json:"no_invites_widget_in_sidebar,omitempty"`
	NoOmniboxInChannels      bool   `json:"no_omnibox_in_channels,omitempty"`

	KKeyOmniboxAutoHideCount       int    `json:"k_key_omnibox_auto_hide_count,omitempty"`
	ShowSidebarQuickswitcherButton bool   `json:"show_sidebar_quickswitcher_button,omitempty"`
	EntOrgWideChannelsSidebar      bool   `json:"ent_org_wide_channels_sidebar,omitempty"`
	MarkMsgsReadImmediately        bool   `json:"mark_msgs_read_immediately,omitempty"`
	StartScrollAtOldest            bool   `json:"start_scroll_at_oldest,omitempty"`
	SnippetEditorWrapLongLines     bool   `json:"snippet_editor_wrap_long_lines,omitempty"`
	LsDisabled                     bool   `json:"ls_disabled,omitempty"`
	FKeySearch                     bool   `json:"f_key_search,omitempty"`
	KKeyOmnibox                    bool   `json:"k_key_omnibox,omitempty"`
	PromptedForEmailDisabling      bool   `json:"prompted_for_email_disabling,omitempty"`
	NoMacelectronBanner            bool   `json:"no_macelectron_banner,omitempty"`
	NoMacssb1Banner                bool   `json:"no_macssb1_banner,omitempty"`
	NoMacssb2Banner                bool   `json:"no_macssb2_banner,omitempty"`
	NoWinssb1Banner                bool   `json:"no_winssb1_banner,omitempty"`
	HideUserGroupInfoPane          bool   `json:"hide_user_group_info_pane,omitempty"`
	MentionsExcludeAtUserGroups    bool   `json:"mentions_exclude_at_user_groups,omitempty"`
	MentionsExcludeReactions       bool   `json:"mentions_exclude_reactions,omitempty"`
	PrivacyPolicySeen              bool   `json:"privacy_policy_seen,omitempty"`
	EnterpriseMigrationSeen        bool   `json:"enterprise_migration_seen,omitempty"`
	LastTosAcknowledged            string `json:"last_tos_acknowledged,omitempty"`
	SearchExcludeBots              bool   `json:"search_exclude_bots,omitempty"`
	LoadLato2                      bool   `json:"load_lato_2,omitempty"`
	FullerTimestamps               bool   `json:"fuller_timestamps,omitempty"`
	LastSeenAtChannelWarning       int    `json:"last_seen_at_channel_warning,omitempty"`
	EmojiAutocompleteBig           bool   `json:"emoji_autocomplete_big,omitempty"`
	TwoFactorAuthEnabled           bool   `json:"two_factor_auth_enabled,omitempty"`
	// TwoFactorType                         unknownType    `json:"two_factor_type,omitempty"`
	// TwoFactorBackupType                   unknownType    `json:"two_factor_backup_type,omitempty"`
	HideHexSwatch          bool   `json:"hide_hex_swatch,omitempty"`
	ShowJumperScores       bool   `json:"show_jumper_scores,omitempty"`
	EnterpriseMdmCustomMsg string `json:"enterprise_mdm_custom_msg,omitempty"`
	// EnterpriseExcludedAppTeams                 unknownType    `json:"enterprise_excluded_app_teams,omitempty"`
	ClientLogsPri             string `json:"client_logs_pri,omitempty"`
	FlannelServerPool         string `json:"flannel_server_pool,omitempty"`
	MentionsExcludeAtChannels bool   `json:"mentions_exclude_at_channels,omitempty"`
	ConfirmClearAllUnreads    bool   `json:"confirm_clear_all_unreads,omitempty"`
	ConfirmUserMarkedAway     bool   `json:"confirm_user_marked_away,omitempty"`
	BoxEnabled                bool   `json:"box_enabled,omitempty"`
	SeenSingleEmojiMsg        bool   `json:"seen_single_emoji_msg,omitempty"`
	ConfirmShCallStart        bool   `json:"confirm_sh_call_start,omitempty"`
	PreferredSkinTone         string `json:"preferred_skin_tone,omitempty"`
	ShowAllSkinTones          bool   `json:"show_all_skin_tones,omitempty"`
	WhatsNewRead              int    `json:"whats_new_read,omitempty"`
	// FrecencyJumper                           unknownType      `json:"frecency_jumper,omitempty"`
	FrecencyEntJumper                       string `json:"frecency_ent_jumper,omitempty"`
	FrecencyEntJumperBackup                 string `json:"frecency_ent_jumper_backup,omitempty"`
	Jumbomoji                               bool   `json:"jumbomoji,omitempty"`
	NewxpSeenLastMessage                    int    `json:"newxp_seen_last_message,omitempty"`
	ShowMemoryInstrument                    bool   `json:"show_memory_instrument,omitempty"`
	EnableUnreadView                        bool   `json:"enable_unread_view,omitempty"`
	SeenUnreadViewCoachmark                 bool   `json:"seen_unread_view_coachmark,omitempty"`
	EnableReactEmojiPicker                  bool   `json:"enable_react_emoji_picker,omitempty"`
	SeenCustomStatusBadge                   bool   `json:"seen_custom_status_badge,omitempty"`
	SeenCustomStatusCallout                 bool   `json:"seen_custom_status_callout,omitempty"`
	SeenCustomStatusExpirationBadge         bool   `json:"seen_custom_status_expiration_badge,omitempty"`
	UsedCustomStatusKbShortcut              bool   `json:"used_custom_status_kb_shortcut,omitempty"`
	SeenGuestAdminSlackbotAnnouncement      bool   `json:"seen_guest_admin_slackbot_announcement,omitempty"`
	SeenThreadsNotificationBanner           bool   `json:"seen_threads_notification_banner,omitempty"`
	SeenNameTaggingCoachmark                bool   `json:"seen_name_tagging_coachmark,omitempty"`
	AllUnreadsSortOrder                     string `json:"all_unreads_sort_order,omitempty"`
	Locale                                  string `json:"locale,omitempty"`
	SeenIntlChannelNamesCoachmark           bool   `json:"seen_intl_channel_names_coachmark,omitempty"`
	SeenP2LocaleChangeMessage               int    `json:"seen_p2_locale_change_message,omitempty"`
	SeenLocaleChangeMessage                 int    `json:"seen_locale_change_message,omitempty"`
	SeenJapaneseLocaleChangeMessage         bool   `json:"seen_japanese_locale_change_message,omitempty"`
	SeenSharedChannelsCoachmark             bool   `json:"seen_shared_channels_coachmark,omitempty"`
	SeenSharedChannelsOptInChangeMessage    bool   `json:"seen_shared_channels_opt_in_change_message,omitempty"`
	HasRecentlySharedaChannel               bool   `json:"has_recently_shared_a_channel,omitempty"`
	SeenChannelBrowserAdminCoachmark        bool   `json:"seen_channel_browser_admin_coachmark,omitempty"`
	SeenAdministrationMenu                  bool   `json:"seen_administration_menu,omitempty"`
	SeenDraftsSectionCoachmark              bool   `json:"seen_drafts_section_coachmark,omitempty"`
	SeenEmojiUpdateOverlayCoachmark         bool   `json:"seen_emoji_update_overlay_coachmark,omitempty"`
	SeenSonicDeluxeToast                    int    `json:"seen_sonic_deluxe_toast,omitempty"`
	SeenWysiwygDeluxeToast                  bool   `json:"seen_wysiwyg_deluxe_toast,omitempty"`
	SeenMarkdownPasteToast                  int    `json:"seen_markdown_paste_toast,omitempty"`
	SeenMarkdownPasteShortcut               int    `json:"seen_markdown_paste_shortcut,omitempty"`
	SeenIaEducation                         bool   `json:"seen_ia_education,omitempty"`
	PlainTextMode                           bool   `json:"plain_text_mode,omitempty"`
	ShowSharedChannelsEducationBanner       bool   `json:"show_shared_channels_education_banner,omitempty"`
	AllowCallsToSetCurrentStatus            bool   `json:"allow_calls_to_set_current_status,omitempty"`
	InInteractiveMasMigrationFlow           bool   `json:"in_interactive_mas_migration_flow,omitempty"`
	SunsetInteractiveMessageViews           int    `json:"sunset_interactive_message_views,omitempty"`
	ShdepPromoCodeSubmitted                 bool   `json:"shdep_promo_code_submitted,omitempty"`
	SeenShdepSlackbotMessage                bool   `json:"seen_shdep_slackbot_message,omitempty"`
	SeenCallsInteractiveCoachmark           bool   `json:"seen_calls_interactive_coachmark,omitempty"`
	AllowCmdTabIss                          bool   `json:"allow_cmd_tab_iss,omitempty"`
	SeenWorkflowBuilderDeluxeToast          bool   `json:"seen_workflow_builder_deluxe_toast,omitempty"`
	WorkflowBuilderIntroModalClickedThrough bool   `json:"workflow_builder_intro_modal_clicked_through,omitempty"`
	// WorkflowBuilderCoachmarks                    unknownType  `json:"workflow_builder_coachmarks,omitempty"`
	SeenGdriveCoachmark                            bool   `json:"seen_gdrive_coachmark,omitempty"`
	OverloadedMessageEnabled                       bool   `json:"overloaded_message_enabled,omitempty"`
	SeenHighlightsCoachmark                        bool   `json:"seen_highlights_coachmark,omitempty"`
	SeenHighlightsArrowsCoachmark                  bool   `json:"seen_highlights_arrows_coachmark,omitempty"`
	SeenHighlightsWarmWelcome                      bool   `json:"seen_highlights_warm_welcome,omitempty"`
	SeenNewSearchUi                                bool   `json:"seen_new_search_ui,omitempty"`
	SeenChannelSearch                              bool   `json:"seen_channel_search,omitempty"`
	SeenPeopleSearch                               bool   `json:"seen_people_search,omitempty"`
	SeenPeopleSearchCount                          int    `json:"seen_people_search_count,omitempty"`
	DismissedScrollSearchTooltipCount              int    `json:"dismissed_scroll_search_tooltip_count,omitempty"`
	LastDismissedScrollSearchTooltipTimestamp      int    `json:"last_dismissed_scroll_search_tooltip_timestamp,omitempty"`
	HasUsedQuickswitcherShortcut                   bool   `json:"has_used_quickswitcher_shortcut,omitempty"`
	SeenQuickswitcherShortcutTipCount              int    `json:"seen_quickswitcher_shortcut_tip_count,omitempty"`
	BrowsersDismissedChannelsLowResultsEducation   bool   `json:"browsers_dismissed_channels_low_results_education,omitempty"`
	BrowsersSeenInitialChannelsEducation           bool   `json:"browsers_seen_initial_channels_education,omitempty"`
	BrowsersDismissedPeopleLowResultsEducation     bool   `json:"browsers_dismissed_people_low_results_education,omitempty"`
	BrowsersSeenInitialPeopleEducation             bool   `json:"browsers_seen_initial_people_education,omitempty"`
	BrowsersDismissedUserGroupsLowResultsEducation bool   `json:"browsers_dismissed_user_groups_low_results_education,omitempty"`
	BrowsersSeenInitialUserGroupsEducation         bool   `json:"browsers_seen_initial_user_groups_education,omitempty"`
	BrowsersDismissedFilesLowResultsEducation      bool   `json:"browsers_dismissed_files_low_results_education,omitempty"`
	BrowsersSeenInitialFilesEducation              bool   `json:"browsers_seen_initial_files_education,omitempty"`
	A11yAnimations                                 bool   `json:"a11y_animations,omitempty"`
	SeenKeyboardShortcutsCoachmark                 bool   `json:"seen_keyboard_shortcuts_coachmark,omitempty"`
	NeedsInitialPasswordSet                        bool   `json:"needs_initial_password_set,omitempty"`
	LessonsEnabled                                 bool   `json:"lessons_enabled,omitempty"`
	TractorEnabled                                 bool   `json:"tractor_enabled,omitempty"`
	TractorExperimentGroup                         string `json:"tractor_experiment_group,omitempty"`
	OpenedSlackbotDm                               bool   `json:"opened_slackbot_dm,omitempty"`
	NewxpSuggestedChannels                         string `json:"newxp_suggested_channels,omitempty"`
	OnboardingComplete                             bool   `json:"onboarding_complete,omitempty"`
	WelcomePlaceState                              string `json:"welcome_place_state,omitempty"`
	// OnboardingRoleApps  unknownType `json:"onboarding_role_apps,omitempty"`
	HasReceivedThreadedMessage        bool   `json:"has_received_threaded_message,omitempty"`
	SendYourFirstMessageBannerEnabled bool   `json:"send_your_first_message_banner_enabled,omitempty"`
	WhocanseethisDmMpdmBadge          bool   `json:"whocanseethis_dm_mpdm_badge,omitempty"`
	HighlightWords                    string `json:"highlight_words,omitempty"`
	ThreadsEverything                 bool   `json:"threads_everything,omitempty"`
	NoTextInNotifications             bool   `json:"no_text_in_notifications,omitempty"`
	PushShowPreview                   bool   `json:"push_show_preview,omitempty"`
	GrowlsEnabled                     bool   `json:"growls_enabled,omitempty"`
	AllChannelsLoud                   bool   `json:"all_channels_loud,omitempty"`
	PushDmAlert                       bool   `json:"push_dm_alert,omitempty"`
	PushMentionAlert                  bool   `json:"push_mention_alert,omitempty"`
	PushEverything                    bool   `json:"push_everything,omitempty"`
	PushIdleWait                      int    `json:"push_idle_wait,omitempty"`
	PushSound                         string `json:"push_sound,omitempty"`
	NewMsgSnd                         string `json:"new_msg_snd,omitempty"`
	PushLoudChannels                  string `json:"push_loud_channels,omitempty"`
	PushMentionChannels               string `json:"push_mention_channels,omitempty"`
	PushLoudChannelsSet               string `json:"push_loud_channels_set,omitempty"`
	LoudChannels                      string `json:"loud_channels,omitempty"`
	NeverChannels                     string `json:"never_channels,omitempty"`
	LoudChannelsSet                   string `json:"loud_channels_set,omitempty"`
	AtChannelSuppressedChannels       string `json:"at_channel_suppressed_channels,omitempty"`
	PushAtChannelSuppressedChannels   string `json:"push_at_channel_suppressed_channels,omitempty"`
	MutedChannels                     string `json:"muted_channels,omitempty"`
	// AllNotificationsPrefs                  unknownType `json:"all_notifications_prefs,omitempty"`
	GrowthMsgLimitApproachingCtaCount     int `json:"growth_msg_limit_approaching_cta_count,omitempty"`
	GrowthMsgLimitApproachingCtaTs        int `json:"growth_msg_limit_approaching_cta_ts,omitempty"`
	GrowthMsgLimitReachedCtaCount         int `json:"growth_msg_limit_reached_cta_count,omitempty"`
	GrowthMsgLimitReachedCtaLastTs        int `json:"growth_msg_limit_reached_cta_last_ts,omitempty"`
	GrowthMsgLimitLongReachedCtaCount     int `json:"growth_msg_limit_long_reached_cta_count,omitempty"`
	GrowthMsgLimitLongReachedCtaLastTs    int `json:"growth_msg_limit_long_reached_cta_last_ts,omitempty"`
	GrowthMsgLimitSixtyDayBannerCtaCount  int `json:"growth_msg_limit_sixty_day_banner_cta_count,omitempty"`
	GrowthMsgLimitSixtyDayBannerCtaLastTs int `json:"growth_msg_limit_sixty_day_banner_cta_last_ts,omitempty"`
	// GrowthAllBannersPrefs unknownType `json:"growth_all_banners_prefs,omitempty"`
	AnalyticsUpsellCoachmarkSeen bool `json:"analytics_upsell_coachmark_seen,omitempty"`
	SeenAppSpaceCoachmark        bool `json:"seen_app_space_coachmark,omitempty"`
	SeenAppSpaceTutorial         bool `json:"seen_app_space_tutorial,omitempty"`
	DismissedAppLauncherWelcome  bool `json:"dismissed_app_launcher_welcome,omitempty"`
	DismissedAppLauncherLimit    bool `json:"dismissed_app_launcher_limit,omitempty"`
	Purchaser                    bool `json:"purchaser,omitempty"`
	ShowEntOnboarding            bool `json:"show_ent_onboarding,omitempty"`
	FoldersEnabled               bool `json:"folders_enabled,omitempty"`
	// FolderData unknownType `json:"folder_data,omitempty"`
	SeenCorporateExportAlert               bool   `json:"seen_corporate_export_alert,omitempty"`
	ShowAutocompleteHelp                   int    `json:"show_autocomplete_help,omitempty"`
	DeprecationToastLastSeen               int    `json:"deprecation_toast_last_seen,omitempty"`
	DeprecationModalLastSeen               int    `json:"deprecation_modal_last_seen,omitempty"`
	Iap1Lab                                int    `json:"iap1_lab,omitempty"`
	IaTopNavTheme                          string `json:"ia_top_nav_theme,omitempty"`
	IaPlatformActionsLab                   int    `json:"ia_platform_actions_lab,omitempty"`
	ActivityView                           string `json:"activity_view,omitempty"`
	FailoverProxyCheckCompleted            int    `json:"failover_proxy_check_completed,omitempty"`
	EdgeUploadProxyCheckCompleted          int    `json:"edge_upload_proxy_check_completed,omitempty"`
	AppSubdomainCheckCompleted             int    `json:"app_subdomain_check_completed,omitempty"`
	AddAppsPromptDismissed                 bool   `json:"add_apps_prompt_dismissed,omitempty"`
	AddChannelPromptDismissed              bool   `json:"add_channel_prompt_dismissed,omitempty"`
	ChannelSidebarHideInvite               bool   `json:"channel_sidebar_hide_invite,omitempty"`
	InProdSurveysEnabled                   bool   `json:"in_prod_surveys_enabled,omitempty"`
	DismissedInstalledAppDmSuggestions     string `json:"dismissed_installed_app_dm_suggestions,omitempty"`
	SeenContextualMessageShortcutsModal    bool   `json:"seen_contextual_message_shortcuts_modal,omitempty"`
	SeenMessageNavigationEducationalToast  bool   `json:"seen_message_navigation_educational_toast,omitempty"`
	ContextualMessageShortcutsModalWasSeen bool   `json:"contextual_message_shortcuts_modal_was_seen,omitempty"`
	MessageNavigationToastWasSeen          bool   `json:"message_navigation_toast_was_seen,omitempty"`
	UpToBrowseKbShortcut                   bool   `json:"up_to_browse_kb_shortcut,omitempty"`
	ChannelSections                        string `json:"channel_sections,omitempty"`
	TZ                                     string `json:"tz,omitempty"`
}

UserPrefs carries a bunch of user settings including some unknown types

type UserPrefsCarrier

type UserPrefsCarrier struct {
	SlackResponse
	UserPrefs *UserPrefs `json:"prefs"`
}

type UserPresence

type UserPresence struct {
	Presence        string   `json:"presence,omitempty"`
	Online          bool     `json:"online,omitempty"`
	AutoAway        bool     `json:"auto_away,omitempty"`
	ManualAway      bool     `json:"manual_away,omitempty"`
	ConnectionCount int      `json:"connection_count,omitempty"`
	LastActivity    JSONTime `json:"last_activity,omitempty"`
}

UserPresence contains details about a user online status

type UserProfile

type UserProfile struct {
	FirstName              string                              `json:"first_name"`
	LastName               string                              `json:"last_name"`
	RealName               string                              `json:"real_name"`
	RealNameNormalized     string                              `json:"real_name_normalized"`
	DisplayName            string                              `json:"display_name"`
	DisplayNameNormalized  string                              `json:"display_name_normalized"`
	Email                  string                              `json:"email"`
	Skype                  string                              `json:"skype"`
	Phone                  string                              `json:"phone"`
	Image24                string                              `json:"image_24"`
	Image32                string                              `json:"image_32"`
	Image48                string                              `json:"image_48"`
	Image72                string                              `json:"image_72"`
	Image192               string                              `json:"image_192"`
	Image512               string                              `json:"image_512"`
	ImageOriginal          string                              `json:"image_original"`
	Title                  string                              `json:"title"`
	BotID                  string                              `json:"bot_id,omitempty"`
	ApiAppID               string                              `json:"api_app_id,omitempty"`
	StatusText             string                              `json:"status_text,omitempty"`
	StatusEmoji            string                              `json:"status_emoji,omitempty"`
	StatusEmojiDisplayInfo []UserProfileStatusEmojiDisplayInfo `json:"status_emoji_display_info,omitempty"`
	StatusExpiration       int                                 `json:"status_expiration"`
	Team                   string                              `json:"team"`
	Fields                 UserProfileCustomFields             `json:"fields"`
}

UserProfile contains all the information details of a given user

func (*UserProfile) FieldsMap

func (profile *UserProfile) FieldsMap() map[string]UserProfileCustomField

FieldsMap returns a map of custom fields.

func (*UserProfile) SetFieldsMap

func (profile *UserProfile) SetFieldsMap(m map[string]UserProfileCustomField)

SetFieldsMap sets a map of custom fields.

type UserProfileCustomField

type UserProfileCustomField struct {
	Value string `json:"value"`
	Alt   string `json:"alt"`
	Label string `json:"label"`
}

UserProfileCustomField represents a custom user profile field

type UserProfileCustomFields

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

UserProfileCustomFields represents user profile's custom fields. Slack API's response data type is inconsistent so we use the struct. For detail, please see below. https://github.com/JongsooKeum/slack/pull/298#discussion_r185159233

func (*UserProfileCustomFields) Len

func (fields *UserProfileCustomFields) Len() int

Len returns the number of custom fields.

func (UserProfileCustomFields) MarshalJSON

func (fields UserProfileCustomFields) MarshalJSON() ([]byte, error)

MarshalJSON is the implementation of the json.Marshaler interface.

func (*UserProfileCustomFields) SetMap

SetMap sets a map of custom fields.

func (*UserProfileCustomFields) ToMap

ToMap returns a map of custom fields.

func (*UserProfileCustomFields) UnmarshalJSON

func (fields *UserProfileCustomFields) UnmarshalJSON(b []byte) error

UnmarshalJSON is the implementation of the json.Unmarshaler interface.

type UserProfileStatusEmojiDisplayInfo

type UserProfileStatusEmojiDisplayInfo struct {
	EmojiName    string `json:"emoji_name"`
	DisplayAlias string `json:"display_alias,omitempty"`
	DisplayURL   string `json:"display_url,omitempty"`
	Unicode      string `json:"unicode,omitempty"`
}

type UserSetPhotoParams

type UserSetPhotoParams struct {
	CropX int
	CropY int
	CropW int
}

func NewUserSetPhotoParams

func NewUserSetPhotoParams() UserSetPhotoParams

type UserTypingEvent

type UserTypingEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

UserTypingEvent represents the user typing event

type View

type View struct {
	SlackResponse
	ID                 string           `json:"id"`
	TeamID             string           `json:"team_id"`
	Type               ViewType         `json:"type"`
	Title              *TextBlockObject `json:"title"`
	Close              *TextBlockObject `json:"close"`
	Submit             *TextBlockObject `json:"submit"`
	Blocks             Blocks           `json:"blocks"`
	PrivateMetadata    string           `json:"private_metadata"`
	CallbackID         string           `json:"callback_id"`
	State              *ViewState       `json:"state"`
	Hash               string           `json:"hash"`
	ClearOnClose       bool             `json:"clear_on_close"`
	NotifyOnClose      bool             `json:"notify_on_close"`
	RootViewID         string           `json:"root_view_id"`
	PreviousViewID     string           `json:"previous_view_id"`
	AppID              string           `json:"app_id"`
	ExternalID         string           `json:"external_id"`
	BotID              string           `json:"bot_id"`
	AppInstalledTeamID string           `json:"app_installed_team_id"`
}

type ViewClosedCallback

type ViewClosedCallback struct {
	IsCleared bool `json:"is_cleared"`
}

type ViewResponse

type ViewResponse struct {
	SlackResponse
	View `json:"view"`
}

type ViewResponseAction

type ViewResponseAction string
const (
	RAClear  ViewResponseAction = "clear"
	RAUpdate ViewResponseAction = "update"
	RAPush   ViewResponseAction = "push"
	RAErrors ViewResponseAction = "errors"
)

type ViewState

type ViewState struct {
	Values map[string]map[string]BlockAction `json:"values"`
}

type ViewSubmissionCallback

type ViewSubmissionCallback struct {
	Hash         string                              `json:"hash"`
	ResponseURLs []ViewSubmissionCallbackResponseURL `json:"response_urls,omitempty"`
}

type ViewSubmissionCallbackResponseURL

type ViewSubmissionCallbackResponseURL struct {
	BlockID     string `json:"block_id"`
	ActionID    string `json:"action_id"`
	ChannelID   string `json:"channel_id"`
	ResponseURL string `json:"response_url"`
}

type ViewSubmissionResponse

type ViewSubmissionResponse struct {
	ResponseAction ViewResponseAction `json:"response_action"`
	View           *ModalViewRequest  `json:"view,omitempty"`
	Errors         map[string]string  `json:"errors,omitempty"`
}

func NewClearViewSubmissionResponse

func NewClearViewSubmissionResponse() *ViewSubmissionResponse

func NewErrorsViewSubmissionResponse

func NewErrorsViewSubmissionResponse(errors map[string]string) *ViewSubmissionResponse

func NewPushViewSubmissionResponse

func NewPushViewSubmissionResponse(view *ModalViewRequest) *ViewSubmissionResponse

func NewUpdateViewSubmissionResponse

func NewUpdateViewSubmissionResponse(view *ModalViewRequest) *ViewSubmissionResponse

type ViewType

type ViewType string
const (
	VTModal   ViewType = "modal"
	VTHomeTab ViewType = "home"
)
const VTWorkflowStep ViewType = "workflow_step"

type WebhookMessage

type WebhookMessage struct {
	Username        string       `json:"username,omitempty"`
	IconEmoji       string       `json:"icon_emoji,omitempty"`
	IconURL         string       `json:"icon_url,omitempty"`
	Channel         string       `json:"channel,omitempty"`
	ThreadTimestamp string       `json:"thread_ts,omitempty"`
	Text            string       `json:"text,omitempty"`
	Attachments     []Attachment `json:"attachments,omitempty"`
	Parse           string       `json:"parse,omitempty"`
	Blocks          *Blocks      `json:"blocks,omitempty"`
	ResponseType    string       `json:"response_type,omitempty"`
	ReplaceOriginal bool         `json:"replace_original"`
	DeleteOriginal  bool         `json:"delete_original"`
	ReplyBroadcast  bool         `json:"reply_broadcast,omitempty"`
}

type WorkflowStepCompleteResponse

type WorkflowStepCompleteResponse struct {
	WorkflowStepEditID string                `json:"workflow_step_edit_id"`
	Inputs             *WorkflowStepInputs   `json:"inputs,omitempty"`
	Outputs            *[]WorkflowStepOutput `json:"outputs,omitempty"`
}

type WorkflowStepCompletedRequest

type WorkflowStepCompletedRequest struct {
	WorkflowStepExecuteID string            `json:"workflow_step_execute_id"`
	Outputs               map[string]string `json:"outputs"`
}

type WorkflowStepCompletedRequestOption

type WorkflowStepCompletedRequestOption func(opt WorkflowStepCompletedRequest) error

func WorkflowStepCompletedRequestOptionOutput

func WorkflowStepCompletedRequestOptionOutput(outputs map[string]string) WorkflowStepCompletedRequestOption

type WorkflowStepFailedRequest

type WorkflowStepFailedRequest struct {
	WorkflowStepExecuteID string `json:"workflow_step_execute_id"`
	Error                 struct {
		Message string `json:"message"`
	} `json:"error"`
}

type WorkflowStepInputElement

type WorkflowStepInputElement struct {
	Value                   string `json:"value"`
	SkipVariableReplacement bool   `json:"skip_variable_replacement"`
}

type WorkflowStepInputs

type WorkflowStepInputs map[string]WorkflowStepInputElement

type WorkflowStepOutput

type WorkflowStepOutput struct {
	Name  string `json:"name"`
	Type  string `json:"type"`
	Label string `json:"label"`
}

Directories

Path Synopsis
examples
internal
Package slackutilsx is a utility package that doesn't promise API stability.
Package slackutilsx is a utility package that doesn't promise API stability.

Jump to

Keyboard shortcuts

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