Documentation ¶
Index ¶
- Constants
- Variables
- func GetOAuthToken(clientID, clientSecret, code, redirectURI string, debug bool) (accessToken string, scope string, err error)
- type AccountsChangedEvent
- type AckErrorEvent
- type AckMessage
- type Attachment
- type AttachmentField
- type AuthTestResponse
- type Bot
- type BotAddedEvent
- type BotChangedEvent
- type Channel
- type ChannelArchiveEvent
- type ChannelCreatedEvent
- type ChannelCreatedInfo
- type ChannelDeletedEvent
- type ChannelHistoryChangedEvent
- type ChannelInfoEvent
- type ChannelJoinedEvent
- type ChannelLeftEvent
- type ChannelMarkedEvent
- type ChannelRenameEvent
- type ChannelRenameInfo
- type ChannelUnarchiveEvent
- type Client
- func (api *Client) AddReaction(name string, item ItemRef) error
- func (api *Client) ArchiveChannel(channel string) error
- func (api *Client) ArchiveGroup(group string) error
- func (api *Client) AuthTest() (response *AuthTestResponse, error error)
- func (api *Client) CloseGroup(group string) (bool, bool, error)
- func (api *Client) CloseIMChannel(channel string) (bool, bool, error)
- func (api *Client) CreateChannel(channel string) (*Channel, error)
- func (api *Client) CreateChildGroup(group string) (*Group, error)
- func (api *Client) CreateGroup(group string) (*Group, error)
- func (api *Client) Debugf(format string, v ...interface{})
- func (api *Client) Debugln(v ...interface{})
- func (api *Client) DeleteFile(fileID string) error
- func (api *Client) DeleteMessage(channel, messageTimestamp string) (string, string, error)
- func (api *Client) DisableUser(teamName string, user string) error
- func (api *Client) GetChannelHistory(channel string, params HistoryParameters) (*History, error)
- func (api *Client) GetChannelInfo(channel string) (*Channel, error)
- func (api *Client) GetChannels(excludeArchived bool) ([]Channel, error)
- func (api *Client) GetEmoji() (map[string]string, error)
- func (api *Client) GetFileInfo(fileID string, count, page int) (*File, []Comment, *Paging, error)
- func (api *Client) GetFiles(params GetFilesParameters) ([]File, *Paging, error)
- func (api *Client) GetGroupHistory(group string, params HistoryParameters) (*History, error)
- func (api *Client) GetGroupInfo(group string) (*Group, error)
- func (api *Client) GetGroups(excludeArchived bool) ([]Group, error)
- func (api *Client) GetIMChannels() ([]IM, error)
- func (api *Client) GetIMHistory(channel string, params HistoryParameters) (*History, error)
- func (api *Client) GetReactions(item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)
- func (api *Client) GetStarred(params StarsParameters) ([]StarredItem, *Paging, error)
- func (api *Client) GetUserInfo(user string) (*User, error)
- func (api *Client) GetUserPresence(user string) (*UserPresence, error)
- func (api *Client) GetUsers() ([]User, error)
- func (api *Client) InviteGuest(teamName string, channel string, firstName string, lastName string, ...) error
- func (api *Client) InviteRestricted(teamName string, channel string, firstName string, lastName string, ...) error
- func (api *Client) InviteUserToChannel(channel, user string) (*Channel, error)
- func (api *Client) InviteUserToGroup(group, user string) (*Group, bool, error)
- func (api *Client) JoinChannel(channel string) (*Channel, error)
- func (api *Client) KickUserFromChannel(channel, user string) error
- func (api *Client) KickUserFromGroup(group, user string) error
- func (api *Client) LeaveChannel(channel string) (bool, error)
- func (api *Client) LeaveGroup(group string) error
- func (api *Client) ListReactions(params ListReactionsParameters) ([]ReactedItem, *Paging, error)
- func (api *Client) MarkIMChannel(channel, ts string) (err error)
- func (api *Client) NewRTM() *RTM
- func (api *Client) OpenGroup(group string) (bool, bool, error)
- func (api *Client) OpenIMChannel(user string) (bool, bool, string, error)
- func (api *Client) PostMessage(channel, text string, params PostMessageParameters) (string, string, error)
- func (api *Client) RemoveReaction(name string, item ItemRef) error
- func (api *Client) RenameChannel(channel, name string) (*Channel, error)
- func (api *Client) RenameGroup(group, name string) (*Channel, error)
- func (api *Client) Search(query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)
- func (api *Client) SearchFiles(query string, params SearchParameters) (*SearchFiles, error)
- func (api *Client) SearchMessages(query string, params SearchParameters) (*SearchMessages, error)
- func (api *Client) SendSSOBindingEmail(teamName string, user string) error
- func (api *Client) SetChannelPurpose(channel, purpose string) (string, error)
- func (api *Client) SetChannelReadMark(channel, ts string) error
- func (api *Client) SetChannelTopic(channel, topic string) (string, error)
- func (api *Client) SetDebug(debug bool)
- func (api *Client) SetGroupPurpose(group, purpose string) (string, error)
- func (api *Client) SetGroupReadMark(group, ts string) error
- func (api *Client) SetGroupTopic(group, topic string) (string, error)
- func (api *Client) SetRegular(teamName string, user string) error
- func (api *Client) SetUserAsActive() error
- func (api *Client) SetUserPresence(presence string) error
- func (api *Client) StartRTM() (info *Info, websocketURL string, err error)
- func (api *Client) UnarchiveChannel(channel string) error
- func (api *Client) UnarchiveGroup(group string) error
- func (api *Client) UpdateMessage(channel, timestamp, text string) (string, string, string, error)
- func (api *Client) UploadFile(params FileUploadParameters) (file *File, err error)
- type CommandsChangedEvent
- type Comment
- type ConnectedEvent
- type ConnectingEvent
- type ConnectionErrorEvent
- type CtxChannel
- type CtxMessage
- type DisconnectedEvent
- type Edited
- type EmailDomainChangedEvent
- type EmojiChangedEvent
- type Event
- type File
- type FileChangeEvent
- type FileCommentAddedEvent
- type FileCommentDeletedEvent
- type FileCommentEditedEvent
- type FileCreatedEvent
- type FileDeletedEvent
- type FilePrivateEvent
- type FilePublicEvent
- type FileSharedEvent
- type FileUnsharedEvent
- type FileUploadParameters
- type GetFilesParameters
- type GetReactionsParameters
- type Group
- type GroupArchiveEvent
- type GroupCloseEvent
- type GroupCreatedEvent
- type GroupHistoryChangedEvent
- type GroupJoinedEvent
- type GroupLeftEvent
- type GroupMarkedEvent
- type GroupOpenEvent
- type GroupRenameEvent
- type GroupRenameInfo
- type GroupUnarchiveEvent
- type HelloEvent
- type History
- type HistoryParameters
- type IDGenerator
- type IM
- type IMCloseEvent
- type IMCreatedEvent
- type IMHistoryChangedEvent
- type IMMarkedEvent
- type IMMarkedHistoryChanged
- type IMOpenEvent
- type Icon
- type Icons
- type IncomingEventError
- type Info
- type InvalidAuthEvent
- type Item
- type ItemReaction
- type ItemRef
- type JSONTime
- type JSONTimeString
- type LatencyReport
- type ListReactionsParameters
- type ManualPresenceChangeEvent
- type Message
- type MessageEvent
- type MessageTooLongEvent
- type Msg
- type OutgoingErrorEvent
- type OutgoingMessage
- type Pagination
- type Paging
- type Ping
- type Pong
- type PostMessageParameters
- type PrefChangeEvent
- type PresenceChangeEvent
- type Purpose
- type RTM
- type RTMError
- type RTMEvent
- type RTMResponse
- type ReactedItem
- type ReactionAddedEvent
- type ReactionRemovedEvent
- type SearchFiles
- type SearchMessage
- type SearchMessages
- type SearchParameters
- type SlackErrorEvent
- type SlackResponse
- type StarAddedEvent
- type StarRemovedEvent
- type StarredItem
- type StarsParameters
- type Team
- type TeamDomainChangeEvent
- type TeamJoinEvent
- type TeamMigrationStartedEvent
- type TeamPrefChangeEvent
- type TeamRenameEvent
- type Topic
- type UnmarshallingErrorEvent
- type User
- type UserChangeEvent
- type UserDetails
- type UserPrefs
- type UserPresence
- type UserProfile
- type UserTypingEvent
- type WebError
- type WebResponse
Constants ¶
const ( DEFAULT_MESSAGE_USERNAME = "" DEFAULT_MESSAGE_ASUSER = false DEFAULT_MESSAGE_PARSE = "" 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 )
const ( // Add here the defaults in the siten DEFAULT_FILES_USER = "" DEFAULT_FILES_TS_FROM = 0 DEFAULT_FILES_TS_TO = -1 DEFAULT_FILES_TYPES = "all" DEFAULT_FILES_COUNT = 100 DEFAULT_FILES_PAGE = 1 )
const ( DEFAULT_HISTORY_LATEST = "" DEFAULT_HISTORY_OLDEST = "0" DEFAULT_HISTORY_COUNT = 100 DEFAULT_HISTORY_INCLUSIVE = false )
const ( TYPE_MESSAGE = "message" TYPE_FILE = "file" TYPE_FILE_COMMENT = "file_comment" TYPE_CHANNEL = "channel" TYPE_IM = "im" TYPE_GROUP = "group" )
const ( DEFAULT_REACTIONS_USER = "" DEFAULT_REACTIONS_COUNT = 100 DEFAULT_REACTIONS_PAGE = 1 DEFAULT_REACTIONS_FULL = false )
const ( DEFAULT_SEARCH_SORT = "score" DEFAULT_SEARCH_SORT_DIR = "desc" DEFAULT_SEARCH_HIGHLIGHT = false DEFAULT_SEARCH_COUNT = 100 DEFAULT_SEARCH_PAGE = 1 )
const ( DEFAULT_STARS_USER = "" DEFAULT_STARS_COUNT = 100 DEFAULT_STARS_PAGE = 1 )
const ( // MaxMessageTextLength is the current maximum message length in number of characters as defined here // https://api.slack.com/rtm#limits MaxMessageTextLength = 4000 )
Variables ¶
var SLACK_API string = "https://slack.com/api/"
Added as a var so that we can change this for testing purposes
var SLACK_WEB_API_FORMAT string = "https://%s.slack.com/api/users.admin.%s?t=%s"
Functions ¶
Types ¶
type AccountsChangedEvent ¶
type AccountsChangedEvent struct {
Type string `json:"type"`
}
AccountsChangedEvent represents the accounts changed event
type AckErrorEvent ¶
type AckErrorEvent struct {
ErrorObj error
}
func (*AckErrorEvent) Error ¶
func (a *AckErrorEvent) Error() string
type AckMessage ¶
type AckMessage struct { ReplyTo int `json:"reply_to"` Timestamp string `json:"ts"` Text string `json:"text"` RTMResponse }
AckMessage is used for messages received in reply to other messages
type Attachment ¶
type Attachment struct { Color string `json:"color,omitempty"` Fallback string `json:"fallback"` 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"` MarkdownIn []string `json:"mrkdwn_in,omitempty"` }
Attachment contains all the information for an attachment
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 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 ¶
BotAddedEvent represents the bot added event
type BotChangedEvent ¶
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"` // 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 JSONTimeString `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 JSONTimeString `json:"latest"` Timestamp JSONTimeString `json:"ts"` EventTimestamp JSONTimeString `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 *JSONTimeString `json:"ts,omitempty"` }
ChannelInfoEvent represents the Channel info event
type ChannelJoinedEvent ¶
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 *JSONTimeString `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 ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) AddReaction ¶
AddReaction adds a reaction emoji to a message, file or file comment.
func (*Client) ArchiveChannel ¶
ArchiveChannel archives the given channel
func (*Client) ArchiveGroup ¶
ArchiveGroup archives a private group
func (*Client) AuthTest ¶
func (api *Client) AuthTest() (response *AuthTestResponse, error error)
AuthTest tests if the user is able to do authenticated requests or not
func (*Client) CloseGroup ¶
CloseGroup closes a private group
func (*Client) CloseIMChannel ¶
CloseIMChannel closes the direct message channel
func (*Client) CreateChannel ¶
CreateChannel creates a channel with the given name and returns a *Channel
func (*Client) CreateChildGroup ¶
CreateChildGroup creates a new private group archiving the old one This method takes an existing private group and performs the following steps:
- Renames the existing group (from "example" to "example-archived").
- Archives the existing group.
- Creates a new group with the name of the existing group.
- Adds all members of the existing group to the new group.
func (*Client) CreateGroup ¶
CreateGroup creates a private group
func (*Client) DeleteFile ¶
DeleteFile deletes a file
func (*Client) DeleteMessage ¶
DeleteMessage deletes a message in a channel
func (*Client) DisableUser ¶
DisableUser disabled a user account
func (*Client) GetChannelHistory ¶
func (api *Client) GetChannelHistory(channel string, params HistoryParameters) (*History, error)
GetChannelHistory retrieves the channel history
func (*Client) GetChannelInfo ¶
GetChannelInfo retrieves the given channel
func (*Client) GetChannels ¶
GetChannels retrieves all the channels
func (*Client) GetFileInfo ¶
GetFileInfo retrieves a file and related comments
func (*Client) GetFiles ¶
func (api *Client) GetFiles(params GetFilesParameters) ([]File, *Paging, error)
GetFiles retrieves all files according to the parameters given
func (*Client) GetGroupHistory ¶
func (api *Client) GetGroupHistory(group string, params HistoryParameters) (*History, error)
GetGroupHistory fetches all the history for a private group
func (*Client) GetGroupInfo ¶
GetGroupInfo retrieves the given group
func (*Client) GetIMChannels ¶
GetIMChannels returns the list of direct message channels
func (*Client) GetIMHistory ¶
func (api *Client) GetIMHistory(channel string, params HistoryParameters) (*History, error)
GetIMHistory retrieves the direct message channel history
func (*Client) GetReactions ¶
func (api *Client) GetReactions(item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)
GetReactions returns details about the reactions on an item.
func (*Client) GetStarred ¶
func (api *Client) GetStarred(params StarsParameters) ([]StarredItem, *Paging, error)
GetStarred returns a list of StarredItem items. The user then has to iterate over them and figure out what they should be looking at according to what is in the Type.
for _, item := range items { switch c.Type { case "file_comment": log.Println(c.Comment) case "file": ... } }
func (*Client) GetUserInfo ¶
GetUserInfo will retrive the complete user information
func (*Client) GetUserPresence ¶
func (api *Client) GetUserPresence(user string) (*UserPresence, error)
GetUserPresence will retrieve the current presence status of given user.
func (*Client) InviteGuest ¶
func (api *Client) InviteGuest( teamName string, channel string, firstName string, lastName string, emailAddress string, ) error
InviteGuest invites a user to Slack as a single-channel guest
func (*Client) InviteRestricted ¶
func (api *Client) InviteRestricted( teamName string, channel string, firstName string, lastName string, emailAddress string, ) error
InviteRestricted invites a user to Slack as a restricted account
func (*Client) InviteUserToChannel ¶
InviteUserToChannel invites a user to a given channel and returns a *Channel
func (*Client) InviteUserToGroup ¶
InviteUserToGroup invites a specific user to a private group
func (*Client) JoinChannel ¶
JoinChannel joins the currently authenticated user to a channel
func (*Client) KickUserFromChannel ¶
KickUserFromChannel kicks a user from a given channel
func (*Client) KickUserFromGroup ¶
KickUserFromGroup kicks a user from a group
func (*Client) LeaveChannel ¶
LeaveChannel makes the authenticated user leave the given channel
func (*Client) LeaveGroup ¶
LeaveGroup makes authenticated user leave the group
func (*Client) ListReactions ¶
func (api *Client) ListReactions(params ListReactionsParameters) ([]ReactedItem, *Paging, error)
ListReactions returns information about the items a user reacted to.
func (*Client) MarkIMChannel ¶
MarkIMChannel sets the read mark of a direct message channel to a specific point
func (*Client) NewRTM ¶
NewRTM returns a RTM, which provides a fully managed connection to Slack's websocket-based Real-Time Messaging protocol./
func (*Client) OpenIMChannel ¶
OpenIMChannel opens a direct message channel to the user provided as argument Returns some status and the channel ID
func (*Client) PostMessage ¶
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) RemoveReaction ¶
RemoveReaction removes a reaction emoji from a message, file or file comment.
func (*Client) RenameChannel ¶
RenameChannel renames a given channel
func (*Client) RenameGroup ¶
RenameGroup renames a group XXX: They return a channel, not a group. What is this crap? :( Inconsistent api it seems.
func (*Client) Search ¶
func (api *Client) Search(query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)
func (*Client) SearchFiles ¶
func (api *Client) SearchFiles(query string, params SearchParameters) (*SearchFiles, error)
func (*Client) SearchMessages ¶
func (api *Client) SearchMessages(query string, params SearchParameters) (*SearchMessages, error)
func (*Client) SendSSOBindingEmail ¶
SendSSOBindingEmail sends an SSO binding email to the specified user
func (*Client) SetChannelPurpose ¶
SetChannelPurpose sets the channel purpose and returns the purpose that was successfully set
func (*Client) SetChannelReadMark ¶
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.
func (*Client) SetChannelTopic ¶
SetChannelTopic sets the channel topic and returns the topic that was successfully set
func (*Client) SetDebug ¶
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 ¶
SetGroupPurpose sets the group purpose
func (*Client) SetGroupReadMark ¶
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) SetGroupTopic ¶
SetGroupTopic sets the group topic
func (*Client) SetRegular ¶
SetRegular enables the specified user
func (*Client) SetUserAsActive ¶
SetUserAsActive marks the currently authenticated user as active
func (*Client) SetUserPresence ¶
SetUserPresence changes the currently authenticated user presence
func (*Client) StartRTM ¶
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) UnarchiveChannel ¶
UnarchiveChannel unarchives the given channel
func (*Client) UnarchiveGroup ¶
UnarchiveGroup unarchives a private group
func (*Client) UpdateMessage ¶
UpdateMessage updates a message in a channel
func (*Client) UploadFile ¶
func (api *Client) UploadFile(params FileUploadParameters) (file *File, err error)
UploadFile uploads a file
type CommandsChangedEvent ¶
type CommandsChangedEvent struct { Type string `json:"type"` EventTimestamp JSONTimeString `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 ConnectingEvent ¶
type ConnectionErrorEvent ¶
func (*ConnectionErrorEvent) Error ¶
func (c *ConnectionErrorEvent) Error() string
type CtxChannel ¶
type CtxMessage ¶
type DisconnectedEvent ¶
type DisconnectedEvent struct {
Intentional bool
}
type EmailDomainChangedEvent ¶
type EmailDomainChangedEvent struct { Type string `json:"type"` EventTimestamp JSONTimeString `json:"event_ts"` EmailDomain string `json:"email_domain"` }
EmailDomainChangedEvent represents the email domain changed event
type EmojiChangedEvent ¶
type EmojiChangedEvent struct { Type string `json:"type"` EventTimestamp JSONTimeString `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"` 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"` URLDownload string `json:"url_download"` URLPrivate string `json:"url_private"` URLPrivateDownload string `json:"url_private_download"` Thumb64 string `json:"thumb_64"` Thumb80 string `json:"thumb_80"` Thumb360 string `json:"thumb_360"` Thumb360Gif string `json:"thumb_360_gif"` Thumb360W int `json:"thumb_360_w"` Thumb360H int `json:"thumb_360_h"` Permalink string `json:"permalink"` 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"` Channels []string `json:"channels"` Groups []string `json:"groups"` InitialComment Comment `json:"initial_comment"` 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 Filetype string Filename string Title string InitialComment string Channels []string }
FileUploadParameters contains all the parameters necessary (including the optional ones) for an UploadFile() request
type GetFilesParameters ¶
type GetFilesParameters struct { User 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 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 ¶
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 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 ¶
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 ¶
type IDGenerator interface {
Next() int
}
IDGenerator provides an interface for generating integer ID values.
func NewSafeID ¶
func NewSafeID(startID int) IDGenerator
NewSafeID returns a new instance of an IDGenerator which is safe for concurrent use by multiple goroutines.
type IM ¶
type IM struct { 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 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 Icon ¶
type Icon struct { IconURL string `json:"icon_url,omitempty"` IconEmoji string `json:"icon_emoji,omitempty"` }
Icon is used for bot messages
type Icons ¶
type Icons struct {
Image48 string `json:"image_48"`
}
Icons XXX: needs further investigation
type IncomingEventError ¶
type IncomingEventError struct {
ErrorObj error
}
func (*IncomingEventError) Error ¶
func (i *IncomingEventError) Error() string
type Info ¶
type Info struct { URL string `json:"url,omitempty"` User *UserDetails `json:"self,omitempty"` Team *Team `json:"team,omitempty"` 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 ¶
GetBotByID returns a bot given a bot id
func (Info) GetChannelByID ¶
GetChannelByID returns a channel given a channel id
func (Info) GetGroupByID ¶
GetGroupByID returns a group given a group id
func (Info) GetUserByID ¶
GetUserByID returns a user given a user id
type InvalidAuthEvent ¶
type InvalidAuthEvent struct{}
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 ¶
NewChannelItem turns a channel id into a typed channel struct.
func NewFileCommentItem ¶
NewFileCommentItem turns a file and comment into a typed file_comment struct.
func NewFileItem ¶
NewFileItem turns a file into a typed file struct.
func NewGroupItem ¶
NewGroupItem turns a channel id into a typed group struct.
func NewMessageItem ¶
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 ¶
NewRefToComment initializes a reference to a file comment.
func NewRefToFile ¶
NewRefToFile initializes a reference to a file.
func NewRefToMessage ¶
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
type JSONTimeString ¶
type JSONTimeString string
func (JSONTimeString) String ¶
func (t JSONTimeString) String() string
String converts the unix timestamp into a string
type LatencyReport ¶
type ListReactionsParameters ¶
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 ManualPresenceChangeEvent ¶
type ManualPresenceChangeEvent struct { Type string `json:"type"` Presence string `json:"presence"` }
ManualPresenceChangeEvent represents the manual presence change event
type MessageEvent ¶
type MessageEvent Message
type MessageTooLongEvent ¶
type MessageTooLongEvent struct { Message OutgoingMessage MaxLength int }
func (*MessageTooLongEvent) Error ¶
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"` IsStarred bool `json:"is_starred,omitempty"` PinnedTo []string `json:"pinned_to, omitempty"` Attachments []Attachment `json:"attachments,omitempty"` Edited *Edited `json:"edited,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"` // file_share, file_comment, file_mention File *File `json:"file,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"` }
Msg contains information about a slack message
type OutgoingErrorEvent ¶
type OutgoingErrorEvent struct { Message OutgoingMessage ErrorObj error }
func (OutgoingErrorEvent) Error ¶
func (o OutgoingErrorEvent) Error() string
type OutgoingMessage ¶
type OutgoingMessage struct { ID int `json:"id"` Channel string `json:"channel,omitempty"` Text string `json:"text,omitempty"` Type string `json:"type,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 PostMessageParameters ¶
type PostMessageParameters struct { Text string Username string AsUser bool Parse string LinkNames int Attachments []Attachment UnfurlLinks bool UnfurlMedia bool IconURL string IconEmoji string Markdown bool `json:"mrkdwn,omitempty"` EscapeText bool }
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"` }
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 ¶
type Purpose struct { Value string `json:"value"` Creator string `json:"creator"` LastSet JSONTime `json:"last_set"` }
Purpose contains information about the purpose
type RTM ¶
type RTM struct { 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().
func (*RTM) Disconnect ¶
Disconnect and wait, blocking until a successful disconnection.
func (*RTM) GetInfo ¶
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 ¶
func (rtm *RTM) ManageConnection()
ManageConnection can be called on a Slack RTM instance returned by the NewRTM method. It will connect to the slack RTM API and handle all incoming and outgoing events. If a connection fails then it will attempt to reconnect and will notify any listeners through an error event on the IncomingEvents channel.
If the connection ends and the disconnect was unintentional then this will attempt to reconnect.
This should only be called once per slack API! Otherwise expect undefined behavior.
The defined error events are located in websocket_internals.go.
func (*RTM) NewOutgoingMessage ¶
func (rtm *RTM) NewOutgoingMessage(text string, channel string) *OutgoingMessage
NewOutgoingMessage prepares an OutgoingMessage that the user can use to send a message. Use this function to properly set the messageID.
func (*RTM) Reconnect ¶
Reconnect only makes sense if you've successfully disconnectd with Disconnect().
func (*RTM) SendMessage ¶
func (rtm *RTM) SendMessage(msg *OutgoingMessage)
SendMessage submits a simple message through the websocket. For more complicated messages, use `rtm.PostMessage` with a complete struct describing your attachments and all.
type RTMEvent ¶
type RTMEvent struct { Type string Data interface{} }
RTMEvent is the main wrapper. You will find all the other messages attached
type RTMResponse ¶
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 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"` 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 ¶
func NewSearchParameters ¶
func NewSearchParameters() SearchParameters
type SlackErrorEvent ¶
type SlackErrorEvent struct {
ErrorObj error
}
func (SlackErrorEvent) Error ¶
func (s SlackErrorEvent) Error() string
type SlackResponse ¶
type StarRemovedEvent ¶
type StarRemovedEvent starEvent
StarRemovedEvent represents the Star removed event
type StarsParameters ¶
func NewStarsParameters ¶
func NewStarsParameters() StarsParameters
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 TeamJoinEvent ¶
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 *JSONTimeString `json:"event_ts,omitempty"` }
TeamRenameEvent represents the Team rename event
type Topic ¶
type Topic struct { Value string `json:"value"` Creator string `json:"creator"` LastSet JSONTime `json:"last_set"` }
Topic contains information about the topic
type UnmarshallingErrorEvent ¶
type UnmarshallingErrorEvent struct {
ErrorObj error
}
func (UnmarshallingErrorEvent) Error ¶
func (u UnmarshallingErrorEvent) Error() string
type User ¶
type User struct { ID string `json:"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"` Has2FA bool `json:"has_2fa"` HasFiles bool `json:"has_files"` Presence string `json:"presence"` }
User contains all the information of a user
type UserChangeEvent ¶
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 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"` 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"` }
UserProfile contains all the information details of a given user
type UserTypingEvent ¶
type UserTypingEvent struct { Type string `json:"type"` User string `json:"user"` Channel string `json:"channel"` }
UserTypingEvent represents the user typing event
type WebResponse ¶
Source Files ¶
- admin.go
- attachments.go
- backoff.go
- channels.go
- chat.go
- comment.go
- conversation.go
- emoji.go
- files.go
- groups.go
- history.go
- im.go
- info.go
- item.go
- messageID.go
- messages.go
- misc.go
- oauth.go
- pagination.go
- reactions.go
- rtm.go
- search.go
- slack.go
- stars.go
- users.go
- websocket.go
- websocket_channels.go
- websocket_dm.go
- websocket_files.go
- websocket_groups.go
- websocket_internals.go
- websocket_managed_conn.go
- websocket_misc.go
- websocket_reactions.go
- websocket_stars.go
- websocket_teams.go
- websocket_utils.go