slack

package module
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2018 License: BSD-2-Clause Imports: 23 Imported by: 0

README

Slack API in Go GoDoc Build Status

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.

Change log

Support for the EventsAPI has recently been added. It is still in its early stages but nearly all events have been added and tested (except for those events in Developer Preview mode). API stability for events is not promised at this time.

v0.2.0 - Feb 10, 2018

Release adds a bunch of functionality and improvements, mainly to give people a recent version to vendor against.

Please check 0.2.0

CHANGELOG.md

CHANGELOG.md is available. Please visit it for updates.

Installing

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

Example

Getting all groups
import (
	"fmt"

	"github.com/nlopes/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
	// api.SetDebug(true)
	groups, err := api.GetGroups(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/nlopes/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 RTM usage:

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

Minimal EventsAPI usage:

See https://github.com/nlopes/slack/blob/master/examples/eventsapi/events.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.

License

BSD 2 Clause license

Documentation

Index

Constants

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 (
	// 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
)
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 (
	TYPE_MESSAGE      = "message"
	TYPE_FILE         = "file"
	TYPE_FILE_COMMENT = "file_comment"
	TYPE_CHANNEL      = "channel"
	TYPE_IM           = "im"
	TYPE_GROUP        = "group"
)
View Source
const (
	DEFAULT_REACTIONS_USER  = ""
	DEFAULT_REACTIONS_COUNT = 100
	DEFAULT_REACTIONS_PAGE  = 1
	DEFAULT_REACTIONS_FULL  = false
)
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 (
	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{},
}

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.

View Source
var HTTPClient = &http.Client{}

HTTPClient sets a custom http.Client deprecated: in favor of SetHTTPClient()

View Source
var SLACK_API string = "https://slack.com/api/"

Added as a var so that we can change this for testing purposes

View Source
var SLACK_WEB_API_FORMAT string = "https://%s.slack.com/api/users.admin.%s?t=%s"

Functions

func ApplyMsgOptions added in v0.1.0

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

ApplyMsgOptions utility function for debugging/testing chat requests.

func GetOAuthToken

func GetOAuthToken(clientID, clientSecret, code, redirectURI string, debug bool) (accessToken string, scope string, err error)

GetOAuthToken retrieves an AccessToken

func GetOAuthTokenContext added in v0.2.0

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

GetOAuthTokenContext retrieves an AccessToken with a custom context

func OptionHTTPClient added in v0.2.0

func OptionHTTPClient(c HTTPRequester) func(*Client)

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

func PostWebhook added in v0.4.0

func PostWebhook(url string, msg *WebhookMessage) error

func SetHTTPClient added in v0.1.0

func SetHTTPClient(client HTTPRequester)

SetHTTPClient allows you to specify a custom http.Client Use this instead of the package level HTTPClient variable if you want to use a custom client like the Stackdriver Trace HTTPClient https://godoc.org/cloud.google.com/go/trace#HTTPClient

func SetLogger added in v0.1.0

func SetLogger(l logProvider)

SetLogger let's library users supply a logger, so that api debugging can be logged along with the application's debugging info.

Types

type AccessLogParameters added in v0.1.0

type AccessLogParameters struct {
	Count int
	Page  int
}

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

func NewAccessLogParameters added in v0.1.0

func NewAccessLogParameters() AccessLogParameters

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

type AccountsChangedEvent

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

AccountsChangedEvent represents the accounts changed event

type AckErrorEvent added in v0.1.0

type AckErrorEvent struct {
	ErrorObj error
}

AckErrorEvent i

func (*AckErrorEvent) Error added in v0.1.0

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 Attachment

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

	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"`

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

	Fields     []AttachmentField  `json:"fields,omitempty"`
	Actions    []AttachmentAction `json:"actions,omitempty"`
	MarkdownIn []string           `json:"mrkdwn_in,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 added in v0.1.0

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            string                        `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 added in v0.1.0

type AttachmentActionCallback struct {
	Actions    []AttachmentAction `json:"actions"`
	CallbackID string             `json:"callback_id"`
	Team       Team               `json:"team"`
	Channel    Channel            `json:"channel"`
	User       User               `json:"user"`

	Name  string `json:"name"`
	Value string `json:"value"`

	OriginalMessage Message `json:"original_message"`

	ActionTs     string `json:"action_ts"`
	MessageTs    string `json:"message_ts"`
	AttachmentID string `json:"attachment_id"`
	Token        string `json:"token"`
	ResponseURL  string `json:"response_url"`
	TriggerID    string `json:"trigger_id"`
}

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

type AttachmentActionOption added in v0.1.0

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 added in v0.1.0

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 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"`
}

type BillableInfoResponse added in v0.1.0

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

type BillingActive added in v0.1.0

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

type Bot

type Bot struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Deleted bool   `json:"deleted"`
	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 Channel

type Channel struct {
	IsChannel bool   `json:"is_channel"`
	IsGeneral bool   `json:"is_general"`
	IsMember  bool   `json:"is_member"`
	Locale    string `json:"locale"`
	// contains filtered or unexported fields
}

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 string `json:"created"`
}

ChannelRenameInfo represents the information associated with a Channel rename event

type ChannelUnarchiveEvent

type ChannelUnarchiveEvent ChannelInfoEvent

ChannelUnarchiveEvent represents the Channel unarchive event

type Client added in v0.1.0

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) AddPin added in v0.1.0

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

AddPin pins an item in a channel

func (*Client) AddPinContext added in v0.2.0

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 added in v0.1.0

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

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

func (*Client) AddReactionContext added in v0.2.0

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) AddStar added in v0.1.0

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

AddStar stars an item in a channel

func (*Client) AddStarContext added in v0.2.0

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) ArchiveChannel added in v0.1.0

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

ArchiveChannel archives the given channel see https://api.slack.com/methods/channels.archive

func (*Client) ArchiveChannelContext added in v0.2.0

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

ArchiveChannelContext archives the given channel with a custom context see https://api.slack.com/methods/channels.archive

func (*Client) ArchiveConversation added in v0.2.0

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

ArchiveConversation archives a conversation

func (*Client) ArchiveConversationContext added in v0.2.0

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

ArchiveConversationContext archives a conversation with a custom context

func (*Client) ArchiveGroup added in v0.1.0

func (api *Client) ArchiveGroup(group string) error

ArchiveGroup archives a private group

func (*Client) ArchiveGroupContext added in v0.2.0

func (api *Client) ArchiveGroupContext(ctx context.Context, group string) error

ArchiveGroupContext archives a private group

func (*Client) AuthTest added in v0.1.0

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

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

func (*Client) AuthTestContext added in v0.2.0

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

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

func (*Client) CloseConversation added in v0.2.0

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 added in v0.2.0

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) CloseGroup added in v0.1.0

func (api *Client) CloseGroup(group string) (bool, bool, error)

CloseGroup closes a private group

func (*Client) CloseGroupContext added in v0.2.0

func (api *Client) CloseGroupContext(ctx context.Context, group string) (bool, bool, error)

CloseGroupContext closes a private group with a custom context

func (*Client) CloseIMChannel added in v0.1.0

func (api *Client) CloseIMChannel(channel string) (bool, bool, error)

CloseIMChannel closes the direct message channel

func (*Client) CloseIMChannelContext added in v0.2.0

func (api *Client) CloseIMChannelContext(ctx context.Context, channel string) (bool, bool, error)

CloseIMChannelContext closes the direct message channel with a custom context

func (*Client) ConnectRTM added in v0.1.0

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 added in v0.2.0

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) CreateChannel added in v0.1.0

func (api *Client) CreateChannel(channelName string) (*Channel, error)

CreateChannel creates a channel with the given name and returns a *Channel see https://api.slack.com/methods/channels.create

func (*Client) CreateChannelContext added in v0.2.0

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

CreateChannelContext creates a channel with the given name and returns a *Channel with a custom context see https://api.slack.com/methods/channels.create

func (*Client) CreateChildGroup added in v0.1.0

func (api *Client) CreateChildGroup(group string) (*Group, error)

CreateChildGroup creates a new private group archiving the old one This method takes an existing private group and performs the following steps:

  1. Renames the existing group (from "example" to "example-archived").
  2. Archives the existing group.
  3. Creates a new group with the name of the existing group.
  4. Adds all members of the existing group to the new group.

func (*Client) CreateChildGroupContext added in v0.2.0

func (api *Client) CreateChildGroupContext(ctx context.Context, group string) (*Group, error)

CreateChildGroupContext creates a new private group archiving the old one with a custom context For more information see CreateChildGroup

func (*Client) CreateConversation added in v0.2.0

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

CreateConversation initiates a public or private channel-based conversation

func (*Client) CreateConversationContext added in v0.2.0

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) CreateGroup added in v0.1.0

func (api *Client) CreateGroup(group string) (*Group, error)

CreateGroup creates a private group

func (*Client) CreateGroupContext added in v0.2.0

func (api *Client) CreateGroupContext(ctx context.Context, group string) (*Group, error)

CreateGroupContext creates a private group

func (*Client) CreateUserGroup added in v0.1.0

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

CreateUserGroup creates a new user group

func (*Client) CreateUserGroupContext added in v0.2.0

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

CreateUserGroupContext creates a new user group with a custom context

func (*Client) Debugf added in v0.1.0

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

Debugf print a formatted debug line.

func (*Client) Debugln added in v0.1.0

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

Debugln print a debug line.

func (*Client) DeleteFile added in v0.1.0

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

DeleteFile deletes a file

func (*Client) DeleteFileComment added in v0.2.0

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

DeleteFileComment deletes a file's comment

func (*Client) DeleteFileCommentContext added in v0.2.0

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 added in v0.2.0

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

DeleteFileContext deletes a file with a custom context

func (*Client) DeleteMessage added in v0.1.0

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

DeleteMessage deletes a message in a channel

func (*Client) DeleteMessageContext added in v0.2.0

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) DeleteUserPhoto added in v0.1.0

func (api *Client) DeleteUserPhoto() error

DeleteUserPhoto deletes the current authenticated user's profile image

func (*Client) DeleteUserPhotoContext added in v0.2.0

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

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

func (*Client) DisableUser added in v0.1.0

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

DisableUser disabled a user account, given a user ID

func (*Client) DisableUserContext added in v0.2.0

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 added in v0.1.0

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

DisableUserGroup disables an existing user group

func (*Client) DisableUserGroupContext added in v0.2.0

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

DisableUserGroupContext disables an existing user group with a custom context

func (*Client) EnableUserGroup added in v0.1.0

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

EnableUserGroup enables an existing user group

func (*Client) EnableUserGroupContext added in v0.2.0

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

EnableUserGroupContext enables an existing user group with a custom context

func (*Client) EndDND added in v0.1.0

func (api *Client) EndDND() error

EndDND ends the user's scheduled Do Not Disturb session

func (*Client) EndDNDContext added in v0.2.0

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 added in v0.1.0

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

EndSnooze ends the current user's snooze mode

func (*Client) EndSnoozeContext added in v0.2.0

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

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

func (*Client) GetAccessLogs added in v0.1.0

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

GetAccessLogs retrieves a page of logins according to the parameters given

func (*Client) GetAccessLogsContext added in v0.2.0

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) GetBillableInfo added in v0.1.0

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

func (*Client) GetBillableInfoContext added in v0.2.0

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

func (*Client) GetBillableInfoForTeam added in v0.1.0

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

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

func (*Client) GetBillableInfoForTeamContext added in v0.2.0

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 added in v0.1.0

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

GetBotInfo will retrieve the complete bot information

func (*Client) GetBotInfoContext added in v0.2.0

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

GetBotInfoContext will retrieve the complete bot information using a custom context

func (*Client) GetChannelHistory added in v0.1.0

func (api *Client) GetChannelHistory(channelID string, params HistoryParameters) (*History, error)

GetChannelHistory retrieves the channel history see https://api.slack.com/methods/channels.history

func (*Client) GetChannelHistoryContext added in v0.2.0

func (api *Client) GetChannelHistoryContext(ctx context.Context, channelID string, params HistoryParameters) (*History, error)

GetChannelHistoryContext retrieves the channel history with a custom context see https://api.slack.com/methods/channels.history

func (*Client) GetChannelInfo added in v0.1.0

func (api *Client) GetChannelInfo(channelID string) (*Channel, error)

GetChannelInfo retrieves the given channel see https://api.slack.com/methods/channels.info

func (*Client) GetChannelInfoContext added in v0.2.0

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

GetChannelInfoContext retrieves the given channel with a custom context see https://api.slack.com/methods/channels.info

func (*Client) GetChannelReplies added in v0.1.0

func (api *Client) GetChannelReplies(channelID, thread_ts string) ([]Message, error)

GetChannelReplies gets an entire thread (a message plus all the messages in reply to it). see https://api.slack.com/methods/channels.replies

func (*Client) GetChannelRepliesContext added in v0.2.0

func (api *Client) GetChannelRepliesContext(ctx context.Context, channelID, thread_ts string) ([]Message, error)

GetChannelRepliesContext gets an entire thread (a message plus all the messages in reply to it) with a custom context see https://api.slack.com/methods/channels.replies

func (*Client) GetChannels added in v0.1.0

func (api *Client) GetChannels(excludeArchived bool) ([]Channel, error)

GetChannels retrieves all the channels see https://api.slack.com/methods/channels.list

func (*Client) GetChannelsContext added in v0.2.0

func (api *Client) GetChannelsContext(ctx context.Context, excludeArchived bool) ([]Channel, error)

GetChannelsContext retrieves all the channels with a custom context see https://api.slack.com/methods/channels.list

func (*Client) GetConversationHistory added in v0.2.0

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

GetConversationHistory joins an existing conversation

func (*Client) GetConversationHistoryContext added in v0.2.0

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

GetConversationHistoryContext joins an existing conversation with a custom context

func (*Client) GetConversationInfo added in v0.2.0

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

GetConversationInfo retrieves information about a conversation

func (*Client) GetConversationInfoContext added in v0.2.0

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 added in v0.2.0

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 added in v0.2.0

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 added in v0.2.0

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 added in v0.2.0

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) GetDNDInfo added in v0.1.0

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

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

func (*Client) GetDNDInfoContext added in v0.2.0

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 added in v0.1.0

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 added in v0.2.0

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 added in v0.1.0

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

GetEmoji retrieves all the emojis

func (*Client) GetEmojiContext added in v0.2.0

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

GetEmojiContext retrieves all the emojis with a custom context

func (*Client) GetFileInfo added in v0.1.0

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

GetFileInfo retrieves a file and related comments

func (*Client) GetFileInfoContext added in v0.2.0

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 added in v0.1.0

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

GetFiles retrieves all files according to the parameters given

func (*Client) GetFilesContext added in v0.2.0

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 (*Client) GetGroupHistory added in v0.1.0

func (api *Client) GetGroupHistory(group string, params HistoryParameters) (*History, error)

GetGroupHistory fetches all the history for a private group

func (*Client) GetGroupHistoryContext added in v0.2.0

func (api *Client) GetGroupHistoryContext(ctx context.Context, group string, params HistoryParameters) (*History, error)

GetGroupHistoryContext fetches all the history for a private group with a custom context

func (*Client) GetGroupInfo added in v0.1.0

func (api *Client) GetGroupInfo(group string) (*Group, error)

GetGroupInfo retrieves the given group

func (*Client) GetGroupInfoContext added in v0.2.0

func (api *Client) GetGroupInfoContext(ctx context.Context, group string) (*Group, error)

GetGroupInfoContext retrieves the given group with a custom context

func (*Client) GetGroups added in v0.1.0

func (api *Client) GetGroups(excludeArchived bool) ([]Group, error)

GetGroups retrieves all groups

func (*Client) GetGroupsContext added in v0.2.0

func (api *Client) GetGroupsContext(ctx context.Context, excludeArchived bool) ([]Group, error)

GetGroupsContext retrieves all groups with a custom context

func (*Client) GetIMChannels added in v0.1.0

func (api *Client) GetIMChannels() ([]IM, error)

GetIMChannels returns the list of direct message channels

func (*Client) GetIMChannelsContext added in v0.2.0

func (api *Client) GetIMChannelsContext(ctx context.Context) ([]IM, error)

GetIMChannelsContext returns the list of direct message channels with a custom context

func (*Client) GetIMHistory added in v0.1.0

func (api *Client) GetIMHistory(channel string, params HistoryParameters) (*History, error)

GetIMHistory retrieves the direct message channel history

func (*Client) GetIMHistoryContext added in v0.2.0

func (api *Client) GetIMHistoryContext(ctx context.Context, channel string, params HistoryParameters) (*History, error)

GetIMHistoryContext retrieves the direct message channel history with a custom context

func (*Client) GetReactions added in v0.1.0

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

GetReactions returns details about the reactions on an item.

func (*Client) GetReactionsContext added in v0.2.0

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) GetStarred added in v0.1.0

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 added in v0.2.0

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 added in v0.1.0

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

GetTeamInfo gets the Team Information of the user

func (*Client) GetTeamInfoContext added in v0.2.0

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

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

func (*Client) GetUserByEmail added in v0.2.0

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

GetUserByEmail will retrieve the complete user information by email

func (*Client) GetUserByEmailContext added in v0.2.0

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 added in v0.1.0

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

GetUserGroupMembers will retrieve the current list of users in a group

func (*Client) GetUserGroupMembersContext added in v0.2.0

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 added in v0.1.0

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

GetUserGroups returns a list of user groups for the team

func (*Client) GetUserGroupsContext added in v0.2.0

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

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

func (*Client) GetUserIdentity added in v0.1.0

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

GetUserIdentity will retrieve user info available per identity scopes

func (*Client) GetUserIdentityContext added in v0.2.0

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

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

func (*Client) GetUserInfo added in v0.1.0

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

GetUserInfo will retrieve the complete user information

func (*Client) GetUserInfoContext added in v0.2.0

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

GetUserInfoContext will retrieve the complete user information with a custom context

func (*Client) GetUserPresence added in v0.1.0

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

GetUserPresence will retrieve the current presence status of given user.

func (*Client) GetUserPresenceContext added in v0.2.0

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 added in v0.3.0

func (api *Client) GetUserProfile(userID string, includeLabels bool) (*UserProfile, error)

GetUserProfile retrieves a user's profile information.

func (*Client) GetUserProfileContext added in v0.3.0

func (api *Client) GetUserProfileContext(ctx context.Context, userID string, includeLabels bool) (*UserProfile, error)

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

func (*Client) GetUsers added in v0.1.0

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

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

func (*Client) GetUsersContext added in v0.2.0

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

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

func (*Client) GetUsersInConversation added in v0.2.0

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

GetUsersInConversation returns the list of users in a conversation

func (*Client) GetUsersInConversationContext added in v0.2.0

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) GetUsersPaginated added in v0.3.0

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

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

func (*Client) InviteGuest added in v0.1.0

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 added in v0.2.0

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 added in v0.1.0

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

InviteRestricted invites a user to Slack as a restricted account

func (*Client) InviteRestrictedContext added in v0.2.0

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 added in v0.1.0

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

InviteToTeam invites a user to a Slack team

func (*Client) InviteToTeamContext added in v0.2.0

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) InviteUserToChannel added in v0.1.0

func (api *Client) InviteUserToChannel(channelID, user string) (*Channel, error)

InviteUserToChannel invites a user to a given channel and returns a *Channel see https://api.slack.com/methods/channels.invite

func (*Client) InviteUserToChannelContext added in v0.2.0

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

InviteUserToChannelCustom invites a user to a given channel and returns a *Channel with a custom context see https://api.slack.com/methods/channels.invite

func (*Client) InviteUserToGroup added in v0.1.0

func (api *Client) InviteUserToGroup(group, user string) (*Group, bool, error)

InviteUserToGroup invites a specific user to a private group

func (*Client) InviteUserToGroupContext added in v0.2.0

func (api *Client) InviteUserToGroupContext(ctx context.Context, group, user string) (*Group, bool, error)

InviteUserToGroupContext invites a specific user to a private group with a custom context

func (*Client) InviteUsersToConversation added in v0.2.0

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

InviteUsersToConversation invites users to a channel

func (*Client) InviteUsersToConversationContext added in v0.2.0

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) JoinChannel added in v0.1.0

func (api *Client) JoinChannel(channelName string) (*Channel, error)

JoinChannel joins the currently authenticated user to a channel see https://api.slack.com/methods/channels.join

func (*Client) JoinChannelContext added in v0.2.0

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

JoinChannelContext joins the currently authenticated user to a channel with a custom context see https://api.slack.com/methods/channels.join

func (*Client) JoinConversation added in v0.2.0

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

JoinConversation joins an existing conversation

func (*Client) JoinConversationContext added in v0.2.0

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

JoinConversationContext joins an existing conversation with a custom context

func (*Client) KickUserFromChannel added in v0.1.0

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

KickUserFromChannel kicks a user from a given channel see https://api.slack.com/methods/channels.kick

func (*Client) KickUserFromChannelContext added in v0.2.0

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

KickUserFromChannelContext kicks a user from a given channel with a custom context see https://api.slack.com/methods/channels.kick

func (*Client) KickUserFromConversation added in v0.2.0

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

KickUserFromConversation removes a user from a conversation

func (*Client) KickUserFromConversationContext added in v0.2.0

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) KickUserFromGroup added in v0.1.0

func (api *Client) KickUserFromGroup(group, user string) error

KickUserFromGroup kicks a user from a group

func (*Client) KickUserFromGroupContext added in v0.2.0

func (api *Client) KickUserFromGroupContext(ctx context.Context, group, user string) (err error)

KickUserFromGroupContext kicks a user from a group with a custom context

func (*Client) LeaveChannel added in v0.1.0

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

LeaveChannel makes the authenticated user leave the given channel see https://api.slack.com/methods/channels.leave

func (*Client) LeaveChannelContext added in v0.2.0

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

LeaveChannelContext makes the authenticated user leave the given channel with a custom context see https://api.slack.com/methods/channels.leave

func (*Client) LeaveConversation added in v0.2.0

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

LeaveConversation leaves a conversation

func (*Client) LeaveConversationContext added in v0.2.0

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

LeaveConversationContext leaves a conversation with a custom context

func (*Client) LeaveGroup added in v0.1.0

func (api *Client) LeaveGroup(group string) error

LeaveGroup makes authenticated user leave the group

func (*Client) LeaveGroupContext added in v0.2.0

func (api *Client) LeaveGroupContext(ctx context.Context, group string) (err error)

LeaveGroupContext makes authenticated user leave the group with a custom context

func (*Client) ListPins added in v0.1.0

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

ListPins returns information about the items a user reacted to.

func (*Client) ListPinsContext added in v0.2.0

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 added in v0.1.0

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

ListReactions returns information about the items a user reacted to.

func (*Client) ListReactionsContext added in v0.2.0

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) ListStars added in v0.1.0

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

ListStars returns information about the stars a user added

func (*Client) ListStarsContext added in v0.2.0

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) MarkIMChannel added in v0.1.0

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

MarkIMChannel sets the read mark of a direct message channel to a specific point

func (*Client) MarkIMChannelContext added in v0.2.0

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

MarkIMChannelContext sets the read mark of a direct message channel to a specific point with a custom context

func (*Client) NewRTM added in v0.1.0

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) NewRTMWithOptions added in v0.1.0

func (api *Client) NewRTMWithOptions(options *RTMOptions) *RTM

NewRTMWithOptions Deprecated just use NewRTM(RTMOptionsUseStart(true)) returns a RTM, which provides a fully managed connection to Slack's websocket-based Real-Time Messaging protocol. This also allows to configure various options available for RTM API.

func (*Client) OpenConversation added in v0.2.0

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 added in v0.2.0

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 added in v0.3.0

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

OpenDialog opens a dialog window where the triggerId originated from

func (*Client) OpenDialogContext added in v0.3.0

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

func (*Client) OpenGroup added in v0.1.0

func (api *Client) OpenGroup(group string) (bool, bool, error)

OpenGroup opens a private group

func (*Client) OpenGroupContext added in v0.2.0

func (api *Client) OpenGroupContext(ctx context.Context, group string) (bool, bool, error)

OpenGroupContext opens a private group with a custom context

func (*Client) OpenIMChannel added in v0.1.0

func (api *Client) OpenIMChannel(user string) (bool, bool, string, error)

OpenIMChannel opens a direct message channel to the user provided as argument Returns some status and the channel ID

func (*Client) OpenIMChannelContext added in v0.2.0

func (api *Client) OpenIMChannelContext(ctx context.Context, user string) (bool, bool, string, error)

OpenIMChannelContext opens a direct message channel to the user provided as argument with a custom context Returns some status and the channel ID

func (*Client) PostEphemeral added in v0.2.0

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 added in v0.2.0

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 added in v0.1.0

func (api *Client) PostMessage(channel, text string, params PostMessageParameters) (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 added in v0.2.0

func (api *Client) PostMessageContext(ctx context.Context, channel, text string, params PostMessageParameters) (string, string, error)

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

func (*Client) RemovePin added in v0.1.0

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

RemovePin un-pins an item from a channel

func (*Client) RemovePinContext added in v0.2.0

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 added in v0.1.0

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

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

func (*Client) RemoveReactionContext added in v0.2.0

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) RemoveStar added in v0.1.0

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

RemoveStar removes a starred item from a channel

func (*Client) RemoveStarContext added in v0.2.0

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) RenameChannel added in v0.1.0

func (api *Client) RenameChannel(channelID, name string) (*Channel, error)

RenameChannel renames a given channel see https://api.slack.com/methods/channels.rename

func (*Client) RenameChannelContext added in v0.2.0

func (api *Client) RenameChannelContext(ctx context.Context, channelID, name string) (*Channel, error)

RenameChannelContext renames a given channel with a custom context see https://api.slack.com/methods/channels.rename

func (*Client) RenameConversation added in v0.2.0

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

RenameConversation renames a conversation

func (*Client) RenameConversationContext added in v0.2.0

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

RenameConversationContext renames a conversation with a custom context

func (*Client) RenameGroup added in v0.1.0

func (api *Client) RenameGroup(group, name string) (*Channel, error)

RenameGroup renames a group XXX: They return a channel, not a group. What is this crap? :( Inconsistent api it seems.

func (*Client) RenameGroupContext added in v0.2.0

func (api *Client) RenameGroupContext(ctx context.Context, group, name string) (*Channel, error)

RenameGroupContext renames a group with a custom context

func (*Client) RevokeFilePublicURL added in v0.1.0

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

RevokeFilePublicURL disables public/external sharing for a file

func (*Client) RevokeFilePublicURLContext added in v0.2.0

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) Search added in v0.1.0

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

func (*Client) SearchContext added in v0.2.0

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

func (*Client) SearchFiles added in v0.1.0

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

func (*Client) SearchFilesContext added in v0.2.0

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

func (*Client) SearchMessages added in v0.1.0

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

func (*Client) SearchMessagesContext added in v0.2.0

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

func (*Client) SendMessage added in v0.1.0

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

SendMessage more flexible method for configuring messages.

func (*Client) SendMessageContext added in v0.2.0

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 added in v0.1.0

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

SendSSOBindingEmail sends an SSO binding email to the specified user

func (*Client) SendSSOBindingEmailContext added in v0.2.0

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) SetChannelPurpose added in v0.1.0

func (api *Client) SetChannelPurpose(channelID, purpose string) (string, error)

SetChannelPurpose sets the channel purpose and returns the purpose that was successfully set see https://api.slack.com/methods/channels.setPurpose

func (*Client) SetChannelPurposeContext added in v0.2.0

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

SetChannelPurposeContext sets the channel purpose and returns the purpose that was successfully set with a custom context see https://api.slack.com/methods/channels.setPurpose

func (*Client) SetChannelReadMark added in v0.1.0

func (api *Client) SetChannelReadMark(channelID, ts string) error

SetChannelReadMark sets the read mark of a given channel to a specific point Clients should try to avoid making this call too often. When needing to mark a read position, a client should set a timer before making the call. In this way, any further updates needed during the timeout will not generate extra calls (just one per channel). This is useful for when reading scroll-back history, or following a busy live channel. A timeout of 5 seconds is a good starting point. Be sure to flush these calls on shutdown/logout. see https://api.slack.com/methods/channels.mark

func (*Client) SetChannelReadMarkContext added in v0.2.0

func (api *Client) SetChannelReadMarkContext(ctx context.Context, channelID, ts string) (err error)

SetChannelReadMarkContext sets the read mark of a given channel to a specific point with a custom context For more details see SetChannelReadMark documentation see https://api.slack.com/methods/channels.mark

func (*Client) SetChannelTopic added in v0.1.0

func (api *Client) SetChannelTopic(channelID, topic string) (string, error)

SetChannelTopic sets the channel topic and returns the topic that was successfully set see https://api.slack.com/methods/channels.setTopic

func (*Client) SetChannelTopicContext added in v0.2.0

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

SetChannelTopicContext sets the channel topic and returns the topic that was successfully set with a custom context see https://api.slack.com/methods/channels.setTopic

func (*Client) SetDebug added in v0.1.0

func (api *Client) SetDebug(debug bool)

SetDebug switches the api into debug mode When in debug mode, it logs various info about what its doing If you ever use this in production, don't call SetDebug(true)

func (*Client) SetGroupPurpose added in v0.1.0

func (api *Client) SetGroupPurpose(group, purpose string) (string, error)

SetGroupPurpose sets the group purpose

func (*Client) SetGroupPurposeContext added in v0.2.0

func (api *Client) SetGroupPurposeContext(ctx context.Context, group, purpose string) (string, error)

SetGroupPurposeContext sets the group purpose with a custom context

func (*Client) SetGroupReadMark added in v0.1.0

func (api *Client) SetGroupReadMark(group, ts string) error

SetGroupReadMark sets the read mark on a private group Clients should try to avoid making this call too often. When needing to mark a read position, a client should set a timer before making the call. In this way, any further updates needed during the timeout will not generate extra calls (just one per channel). This is useful for when reading scroll-back history, or following a busy live channel. A timeout of 5 seconds is a good starting point. Be sure to flush these calls on shutdown/logout.

func (*Client) SetGroupReadMarkContext added in v0.2.0

func (api *Client) SetGroupReadMarkContext(ctx context.Context, group, ts string) (err error)

SetGroupReadMarkContext sets the read mark on a private group with a custom context For more details see SetGroupReadMark

func (*Client) SetGroupTopic added in v0.1.0

func (api *Client) SetGroupTopic(group, topic string) (string, error)

SetGroupTopic sets the group topic

func (*Client) SetGroupTopicContext added in v0.2.0

func (api *Client) SetGroupTopicContext(ctx context.Context, group, topic string) (string, error)

SetGroupTopicContext sets the group topic with a custom context

func (*Client) SetPurposeOfConversation added in v0.2.0

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

SetPurposeOfConversation sets the purpose for a conversation

func (*Client) SetPurposeOfConversationContext added in v0.2.0

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 added in v0.1.0

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

SetRegular enables the specified user

func (*Client) SetRegularContext added in v0.2.0

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

SetRegularContext enables the specified user with a custom context

func (*Client) SetRestricted added in v0.1.0

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

SetRestricted converts a user into a restricted account

func (*Client) SetRestrictedContext added in v0.2.0

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

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

func (*Client) SetSnooze added in v0.1.0

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 added in v0.2.0

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

SetSnooze 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 added in v0.2.0

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

SetTopicOfConversation sets the topic for a conversation

func (*Client) SetTopicOfConversationContext added in v0.2.0

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 added in v0.1.0

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

SetUltraRestricted converts a user into a single-channel guest

func (*Client) SetUltraRestrictedContext added in v0.2.0

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 added in v0.1.0

func (api *Client) SetUserAsActive() error

SetUserAsActive marks the currently authenticated user as active

func (*Client) SetUserAsActiveContext added in v0.2.0

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

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

func (*Client) SetUserCustomStatus added in v0.1.0

func (api *Client) SetUserCustomStatus(statusText, statusEmoji string) 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.

func (*Client) SetUserCustomStatusContext added in v0.2.0

func (api *Client) SetUserCustomStatusContext(ctx context.Context, statusText, statusEmoji string) 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) SetUserPhoto added in v0.1.0

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

SetUserPhoto changes the currently authenticated user's profile image

func (*Client) SetUserPhotoContext added in v0.2.0

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

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

func (*Client) SetUserPresence added in v0.1.0

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

SetUserPresence changes the currently authenticated user presence

func (*Client) SetUserPresenceContext added in v0.2.0

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

SetUserPresenceContext changes the currently authenticated user presence with a custom context

func (*Client) ShareFilePublicURL added in v0.1.0

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

ShareFilePublicURL enabled public/external sharing for a file

func (*Client) ShareFilePublicURLContext added in v0.2.0

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) StartRTM added in v0.1.0

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 added in v0.2.0

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) UnArchiveConversation added in v0.2.0

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

UnArchiveConversation reverses conversation archival

func (*Client) UnArchiveConversationContext added in v0.2.0

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

UnArchiveConversationContext reverses conversation archival with a custom context

func (*Client) UnarchiveChannel added in v0.1.0

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

UnarchiveChannel unarchives the given channel see https://api.slack.com/methods/channels.unarchive

func (*Client) UnarchiveChannelContext added in v0.2.0

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

UnarchiveChannelContext unarchives the given channel with a custom context see https://api.slack.com/methods/channels.unarchive

func (*Client) UnarchiveGroup added in v0.1.0

func (api *Client) UnarchiveGroup(group string) error

UnarchiveGroup unarchives a private group

func (*Client) UnarchiveGroupContext added in v0.2.0

func (api *Client) UnarchiveGroupContext(ctx context.Context, group string) error

UnarchiveGroupContext unarchives a private group

func (*Client) UnsetUserCustomStatus added in v0.1.0

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 added in v0.2.0

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 added in v0.1.0

func (api *Client) UpdateMessage(channelID, timestamp, text string) (string, string, string, error)

UpdateMessage updates a message in a channel

func (*Client) UpdateMessageContext added in v0.2.0

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

UpdateMessageContext updates a message in a channel

func (*Client) UpdateUserGroup added in v0.1.0

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

UpdateUserGroup will update an existing user group

func (*Client) UpdateUserGroupContext added in v0.2.0

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

UpdateUserGroupContext will update an existing user group with a custom context

func (*Client) UpdateUserGroupMembers added in v0.1.0

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

UpdateUserGroupMembers will update the members of an existing user group

func (*Client) UpdateUserGroupMembersContext added in v0.2.0

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) UploadFile added in v0.1.0

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

UploadFile uploads a file

func (*Client) UploadFileContext added in v0.2.0

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

UploadFileContext uploads a file and setting a custom context

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 ConfirmationField added in v0.1.0

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 added in v0.1.0

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

ConnectedEvent is used for when we connect to Slack

type ConnectingEvent added in v0.1.0

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

ConnectingEvent contains information about our connection attempt

type ConnectionErrorEvent added in v0.1.0

type ConnectionErrorEvent struct {
	Attempt  int
	ErrorObj error
}

ConnectionErrorEvent contains information about a connection error

func (*ConnectionErrorEvent) Error added in v0.1.0

func (c *ConnectionErrorEvent) Error() string

type CtxChannel

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

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 added in v0.1.0

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 added in v0.1.0

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 Dialog added in v0.3.0

type Dialog struct {
	CallbackId     string          `json:"callback_id"`                //Required.
	Title          string          `json:"title"`                      //Required.
	SubmitLabel    string          `json:"submit_label,omitempty"`     //Optional. Default value is 'Submit'
	NotifyOnCancel bool            `json:"notify_on_cancel,omitempty"` //Optional. Default value is false
	Elements       []DialogElement `json:"elements"`                   //Required.
}

type DialogCallback added in v0.3.0

type DialogCallback struct {
	Type        string            `json:"type"`
	CallbackID  string            `json:"callback_id"`
	Team        Team              `json:"team"`
	Channel     Channel           `json:"channel"`
	User        User              `json:"user"`
	ActionTs    string            `json:"action_ts"`
	Token       string            `json:"token"`
	ResponseURL string            `json:"response_url"`
	Submission  map[string]string `json:"submission"`
}

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

type DialogElement added in v0.3.0

type DialogElement interface{}

type DialogElementOption added in v0.3.0

type DialogElementOption struct {
	Label string `json:"label"` //Required.
	Value string `json:"value"` //Required.
}

type DialogSelectElement added in v0.3.0

type DialogSelectElement struct {
	Label           string                `json:"label"`                      //Required.
	Name            string                `json:"name"`                       //Required.
	Type            string                `json:"type"`                       //Required. Allowed values: "text", "textarea", "select".
	Placeholder     string                `json:"placeholder,omitempty"`      //Optional.
	Optional        bool                  `json:"optional,omitempty"`         //Optional. Default value is false
	Value           string                `json:"value,omitempty"`            //Optional.
	DataSource      string                `json:"data_source,omitempty"`      //Optional. Allowed values: "users", "channels", "conversations", "external".
	SelectedOptions string                `json:"selected_options,omitempty"` //Optional. Default value for "external" only
	Options         []DialogElementOption `json:"options,omitempty"`          //One of options or option_groups is required.
	OptionGroups    []DialogElementOption `json:"option_groups,omitempty"`    //Provide up to 100 options.
}

type DialogSuggestionCallback added in v0.3.0

type DialogSuggestionCallback struct {
	Type        string  `json:"type"`
	Token       string  `json:"token"`
	ActionTs    string  `json:"action_ts"`
	Team        Team    `json:"team"`
	User        User    `json:"user"`
	Channel     Channel `json:"channel"`
	ElementName string  `json:"name"`
	Value       string  `json:"value"`
	CallbackID  string  `json:"callback_id"`
}

DialogSuggestionCallback is sent from Slack when a user types in a select field with an external data source

type DialogTextElement added in v0.3.0

type DialogTextElement struct {
	Label       string `json:"label"`                 //Required.
	Name        string `json:"name"`                  //Required.
	Type        string `json:"type"`                  //Required. Allowed values: "text", "textarea", "select".
	Placeholder string `json:"placeholder,omitempty"` //Optional.
	Optional    bool   `json:"optional,omitempty"`    //Optional. Default value is false
	Value       string `json:"value,omitempty"`       //Optional.
	MaxLength   int    `json:"max_length,omitempty"`  //Optional.
	MinLength   int    `json:"min_length,omitempty"`  //Optional,. Default value is 0
	Hint        string `json:"hint,omitempty"`        //Optional.
	Subtype     string `json:"subtype,omitempty"`     //Optional. Allowed values: "email", "number", "tel", "url".
}

type DialogTrigger added in v0.3.0

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

type DisconnectedEvent added in v0.1.0

type DisconnectedEvent struct {
	Intentional bool
}

DisconnectedEvent contains information about how we disconnected

type Edited added in v0.1.0

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 Event

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

Event contains the event type

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"`
}

File contains all the information for a file

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
}

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.

type GetConversationHistoryParameters added in v0.2.0

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

type GetConversationHistoryResponse added in v0.2.0

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 added in v0.2.0

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

type GetConversationsParameters added in v0.2.0

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

type GetFilesParameters

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

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 GetUsersInConversationParameters added in v0.2.0

type GetUsersInConversationParameters struct {
	ChannelID string
	Cursor    string
	Limit     int
}

type GetUsersOption added in v0.3.0

type GetUsersOption func(*UserPagination)

GetUsersOption options for the GetUsers method call.

func GetUsersOptionLimit added in v0.3.0

func GetUsersOptionLimit(n int) GetUsersOption

GetUsersOptionLimit limit the number of users returned

func GetUsersOptionPresence added in v0.3.0

func GetUsersOptionPresence(n bool) GetUsersOption

GetUsersOptionPresence include user presence

type Group

type Group struct {
	IsGroup bool `json:"is_group"`
	// contains filtered or unexported fields
}

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 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 added in v0.1.0

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 HTTPRequester added in v0.1.0

type HTTPRequester interface {
	Do(*http.Request) (*http.Response, error)
}

HTTPRequester defines the minimal interface needed for an http.Client to be implemented.

Use it in conjunction with the SetHTTPClient function to allow for other capabilities like a tracing http.Client

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"`
}

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 IDGenerator added in v0.1.0

type IDGenerator interface {
	Next() int
}

IDGenerator provides an interface for generating integer ID values.

func NewSafeID added in v0.1.0

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 {
	IsIM          bool   `json:"is_im"`
	User          string `json:"user"`
	IsUserDeleted bool   `json:"is_user_deleted"`
	// contains filtered or unexported fields
}

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 added in v0.1.0

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 IncomingEventError added in v0.1.0

type IncomingEventError struct {
	ErrorObj error
}

IncomingEventError contains information about an unexpected error receiving a websocket event

func (*IncomingEventError) Error added in v0.1.0

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"`
	Users    []User       `json:"users,omitempty"`
	Channels []Channel    `json:"channels,omitempty"`
	Groups   []Group      `json:"groups,omitempty"`
	Bots     []Bot        `json:"bots,omitempty"`
	IMs      []IM         `json:"ims,omitempty"`
}

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

func (Info) GetBotByID added in v0.1.0

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

GetBotByID returns a bot given a bot id

func (Info) GetChannelByID added in v0.1.0

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

GetChannelByID returns a channel given a channel id

func (Info) GetGroupByID added in v0.1.0

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

GetGroupByID returns a group given a group id

func (Info) GetIMByID added in v0.1.0

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

GetIMByID returns an IM given an IM id

func (Info) GetUserByID added in v0.1.0

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

GetUserByID returns a user given a user id

type InvalidAuthEvent added in v0.1.0

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 added in v0.1.0

func (t JSONTime) Time() time.Time

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

func (*JSONTime) UnmarshalJSON added in v0.3.0

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 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 Login added in v0.1.0

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 added in v0.1.0

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 added in v0.3.0

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 added in v0.3.0

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

MemberJoinedChannelEvent, a user left a public or private channel

type Message

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

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

type MessageEvent

type MessageEvent Message

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

type MessageTooLongEvent added in v0.1.0

type MessageTooLongEvent struct {
	Message   OutgoingMessage
	MaxLength int
}

MessageTooLongEvent is used when sending a message that is too long

func (*MessageTooLongEvent) Error added in v0.1.0

func (m *MessageTooLongEvent) Error() string

type Msg

type Msg struct {
	// Basic Message
	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"`

	// 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"`

	// 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"`
}

Msg contains information about a slack message

type MsgOption added in v0.1.0

type MsgOption func(*sendConfig) error

MsgOption option provided when sending a message.

func MsgOptionAsUser added in v0.1.0

func MsgOptionAsUser(b bool) MsgOption

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

func MsgOptionAttachments added in v0.1.0

func MsgOptionAttachments(attachments ...Attachment) MsgOption

MsgOptionAttachments provide attachments for the message.

func MsgOptionBroadcast added in v0.3.0

func MsgOptionBroadcast() MsgOption

MsgOptionBroadcast sets reply_broadcast to true

func MsgOptionCompose added in v0.3.0

func MsgOptionCompose(options ...MsgOption) MsgOption

this function combines multiple options into a single option.

func MsgOptionDelete added in v0.1.0

func MsgOptionDelete(timestamp string) MsgOption

MsgOptionDelete deletes a message based on the timestamp.

func MsgOptionDisableLinkUnfurl added in v0.2.0

func MsgOptionDisableLinkUnfurl() MsgOption

MsgOptionDisableLinkUnfurl disables link unfurling

func MsgOptionDisableMarkdown added in v0.1.0

func MsgOptionDisableMarkdown() MsgOption

MsgOptionDisableMarkdown disables markdown.

func MsgOptionDisableMediaUnfurl added in v0.1.0

func MsgOptionDisableMediaUnfurl() MsgOption

MsgOptionDisableMediaUnfurl disables media unfurling.

func MsgOptionEnableLinkUnfurl added in v0.1.0

func MsgOptionEnableLinkUnfurl() MsgOption

MsgOptionEnableLinkUnfurl enables link unfurling

func MsgOptionMeMessage added in v0.3.0

func MsgOptionMeMessage() MsgOption

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

func MsgOptionParse added in v0.3.0

func MsgOptionParse(b bool) MsgOption

func MsgOptionPost added in v0.1.0

func MsgOptionPost() MsgOption

MsgOptionPost posts a messages, this is the default.

func MsgOptionPostEphemeral added in v0.2.0

func MsgOptionPostEphemeral() MsgOption

MsgOptionPostEphemeral - DEPRECATED: use MsgOptionPostEphemeral2 posts an ephemeral message.

func MsgOptionPostEphemeral2 added in v0.3.0

func MsgOptionPostEphemeral2(userID string) MsgOption

MsgOptionPostEphemeral2 - posts an ephemeral message to the provided user.

func MsgOptionPostMessageParameters added in v0.1.0

func MsgOptionPostMessageParameters(params PostMessageParameters) MsgOption

MsgOptionPostMessageParameters maintain backwards compatibility.

func MsgOptionTS added in v0.3.0

func MsgOptionTS(ts string) MsgOption

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

func MsgOptionText added in v0.1.0

func MsgOptionText(text string, escape bool) MsgOption

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

func MsgOptionUpdate added in v0.1.0

func MsgOptionUpdate(timestamp string) MsgOption

MsgOptionUpdate updates a message based on the timestamp.

func MsgOptionUser added in v0.3.0

func MsgOptionUser(userID string) MsgOption

MsgOptionUser set the user for the message.

type OAuthResponse added in v0.1.0

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
}

func GetOAuthResponse added in v0.1.0

func GetOAuthResponse(clientID, clientSecret, code, redirectURI string, debug bool) (resp *OAuthResponse, err error)

func GetOAuthResponseContext added in v0.2.0

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

type OAuthResponseBot added in v0.1.0

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

type OAuthResponseIncomingWebhook added in v0.1.0

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

type OpenConversationParameters added in v0.2.0

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

type Option added in v0.2.0

type Option func(*Client)

Option defines an option for a Client

type OutgoingErrorEvent added in v0.1.0

type OutgoingErrorEvent struct {
	Message  OutgoingMessage
	ErrorObj error
}

OutgoingErrorEvent contains information in case there were errors sending messages

func (OutgoingErrorEvent) Error added in v0.1.0

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"`
}

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

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 PinAddedEvent added in v0.1.0

type PinAddedEvent pinEvent

PinAddedEvent represents the Pin added event

type PinRemovedEvent added in v0.1.0

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 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"`
	Attachments     []Attachment `json:"attachments"`
	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"`
}

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"`
}

PresenceChangeEvent represents the presence change event

type Purpose added in v0.1.0

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

Purpose contains information about the purpose

type RTM added in v0.1.0

type RTM struct {
	IncomingEvents chan RTMEvent

	// Client is the main API, embedded
	Client
	// 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 added in v0.1.0

func (rtm *RTM) Disconnect() error

Disconnect and wait, blocking until a successful disconnection.

func (*RTM) GetInfo added in v0.1.0

func (rtm *RTM) GetInfo() *Info

GetInfo returns the info structure received when calling "startrtm", holding all channels, groups and other metadata needed to implement a full chat client. It will be non-nil after a call to StartRTM().

func (*RTM) ManageConnection added in v0.1.0

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 added in v0.1.0

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) NewTypingMessage added in v0.1.0

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 added in v0.1.0

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 added in v0.1.0

type RTMError struct {
	Code int
	Msg  string
}

RTMError encapsulates error information as returned by the Slack API

func (RTMError) Error added in v0.1.0

func (s RTMError) Error() string

type RTMEvent added in v0.1.0

type RTMEvent struct {
	Type string
	Data interface{}
}

RTMEvent is the main wrapper. You will find all the other messages attached

type RTMOption added in v0.3.0

type RTMOption func(*RTM)

RTMOption options for the managed RTM.

func RTMOptionDialer added in v0.3.0

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 added in v0.3.0

func RTMOptionPingInterval(d time.Duration) RTMOption

RTMOptionPingInterval determines how often to deliver a ping message to slack.

func RTMOptionUseStart added in v0.3.0

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 RTMOptions added in v0.1.0

type RTMOptions struct {
	// UseRTMStart set to true in order to use rtm.start or false to use rtm.connect
	// 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
	UseRTMStart bool
}

RTMOptions allows configuration of various options available for RTM messaging

This structure will evolve in time so please make sure you are always using the named keys for every entry available as per Go 1 compatibility promise adding fields to this structure should not be considered a breaking change.

type RTMResponse added in v0.1.0

type RTMResponse struct {
	Ok    bool      `json:"ok"`
	Error *RTMError `json:"error"`
}

RTMResponse encapsulates response details as returned by the Slack API

type RTMsgOption added in v0.3.0

type RTMsgOption func(*OutgoingMessage)

RTMsgOption allows configuration of various options available for sending an RTM message

func RTMsgOptionBroadcast added in v0.3.0

func RTMsgOptionBroadcast() RTMsgOption

RTMsgOptionBroadcast sets broadcast reply to channel to "true"

func RTMsgOptionTS added in v0.3.0

func RTMsgOptionTS(threadTimestamp string) RTMsgOption

RTMsgOptionTS sets thead timestamp of an outgoing message in order to respond to a thread

type RateLimitEvent added in v0.2.0

type RateLimitEvent struct{}

RateLimitEvent is used when Slack warns that rate-limits are being hit.

func (*RateLimitEvent) Error added in v0.2.0

func (e *RateLimitEvent) Error() string

type RateLimitedError added in v0.2.0

type RateLimitedError struct {
	RetryAfter time.Duration
}

func (*RateLimitedError) Error added in v0.2.0

func (e *RateLimitedError) Error() string

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 added in v0.1.0

type ReconnectUrlEvent struct {
	Type string `json:"type"`
	URL  string `json:"url"`
}

ReconnectUrlEvent represents the receiving reconnect url event

type Reply added in v0.1.0

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

Reply contains information about a reply for a thread

type ResponseMetadata added in v0.3.0

type ResponseMetadata struct {
	Cursor string `json:"next_cursor"`
}

ResponseMetadata holds pagination metadata

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"`
	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 SlackResponse

type SlackResponse struct {
	Ok    bool   `json:"ok"`
	Error string `json:"error"`
}

func (SlackResponse) Err added in v0.3.0

func (t SlackResponse) Err() error

type SlashCommand added in v0.2.0

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"`
}

SlashCommand contains information about a request of the slash command

func SlashCommandParse added in v0.2.0

func SlashCommandParse(r *http.Request) (s SlashCommand, err error)

SlashCommandParse will parse the request of the slash command

func (SlashCommand) ValidateToken added in v0.2.0

func (s SlashCommand) ValidateToken(verificationTokens ...string) bool

ValidateToken validates verificationTokens

type SnoozeDebug added in v0.1.0

type SnoozeDebug struct {
	SnoozeEndDate string `json:"snooze_end_date"`
}

type SnoozeInfo added in v0.1.0

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 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 StarsParameters

type StarsParameters struct {
	User  string
	Count int
	Page  int
}

func NewStarsParameters

func NewStarsParameters() StarsParameters

NewStarsParameters initialises StarsParameters with default values

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 added in v0.1.0

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 added in v0.1.0

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 added in v0.1.0

type TeamResponse struct {
	Team TeamInfo `json:"team"`
	SlackResponse
}

type Topic added in v0.1.0

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

Topic contains information about the topic

type UnmarshallingErrorEvent added in v0.1.0

type UnmarshallingErrorEvent struct {
	ErrorObj error
}

UnmarshallingErrorEvent is used when there are issues deconstructing a response

func (UnmarshallingErrorEvent) Error added in v0.1.0

func (u UnmarshallingErrorEvent) Error() string

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"`
	Has2FA            bool        `json:"has_2fa"`
	HasFiles          bool        `json:"has_files"`
	Presence          string      `json:"presence"`
	Locale            string      `json:"locale"`
}

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 added in v0.1.0

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"`
}

UserGroup contains all the information of a user group

type UserGroupPrefs added in v0.1.0

type UserGroupPrefs struct {
	Channels []string `json:"channels"`
	Groups   []string `json:"groups"`
}

UserGroupPrefs contains default channels and groups (private channels)

type UserIdentity added in v0.1.0

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 added in v0.1.0

type UserIdentityResponse struct {
	User UserIdentity `json:"user"`
	Team TeamIdentity `json:"team"`
	SlackResponse
}

type UserPagination added in v0.3.0

type UserPagination struct {
	Users []User
	// contains filtered or unexported fields
}

UserPagination allows for paginating over the users

func (UserPagination) Done added in v0.3.0

func (UserPagination) Done(err error) bool

Done checks if the pagination has completed

func (UserPagination) Failure added in v0.3.0

func (t UserPagination) Failure(err error) error

Failure checks if pagination failed.

func (UserPagination) Next added in v0.3.0

func (t UserPagination) Next(ctx context.Context) (_ UserPagination, err error)

type UserPrefs

type UserPrefs struct {
}

UserPrefs needs to be implemented

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"`
	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"`
	Team                  string                  `json:"team"`
	Fields                UserProfileCustomFields `json:"fields"`
}

UserProfile contains all the information details of a given user

func (*UserProfile) FieldsMap added in v0.3.0

func (profile *UserProfile) FieldsMap() map[string]UserProfileCustomField

FieldsMap returns a map of custom fields.

func (*UserProfile) SetFieldsMap added in v0.3.0

func (profile *UserProfile) SetFieldsMap(m map[string]UserProfileCustomField)

SetFieldsMap sets a map of custom fields.

type UserProfileCustomField added in v0.3.0

type UserProfileCustomField struct {
	Value string `json:"value"`
	Alt   string `json:"alt"`
	Label string `json:"label"`
}

UserProfileCustomField represents a custom user profile field

type UserProfileCustomFields added in v0.3.0

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/nlopes/slack/pull/298#discussion_r185159233

func (*UserProfileCustomFields) Len added in v0.3.0

func (fields *UserProfileCustomFields) Len() int

Len returns the number of custom fields.

func (UserProfileCustomFields) MarshalJSON added in v0.3.0

func (fields UserProfileCustomFields) MarshalJSON() ([]byte, error)

MarshalJSON is the implementation of the json.Marshaler interface.

func (*UserProfileCustomFields) SetMap added in v0.3.0

SetMap sets a map of custom fields.

func (*UserProfileCustomFields) ToMap added in v0.3.0

ToMap returns a map of custom fields.

func (*UserProfileCustomFields) UnmarshalJSON added in v0.3.0

func (fields *UserProfileCustomFields) UnmarshalJSON(b []byte) error

UnmarshalJSON is the implementation of the json.Unmarshaler interface.

type UserSetPhotoParams added in v0.1.0

type UserSetPhotoParams struct {
	CropX int
	CropY int
	CropW int
}

func NewUserSetPhotoParams added in v0.1.0

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 WebhookMessage added in v0.4.0

type WebhookMessage struct {
	Text        string       `json:"text,omitempty"`
	Attachments []Attachment `json:"attachments,omitempty"`
}

Directories

Path Synopsis
examples
ims
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