Codebase list golang-github-nlopes-slack / 5f046818-5e83-4f73-a88b-e31de9bbd4e3/main websocket_misc.go
5f046818-5e83-4f73-a88b-e31de9bbd4e3/main

Tree @5f046818-5e83-4f73-a88b-e31de9bbd4e3/main (Download .tar.gz)

websocket_misc.go @5f046818-5e83-4f73-a88b-e31de9bbd4e3/main

676c3c4
 
277e4e8
 
 
 
676c3c4
334c7e2
 
 
 
 
065c48f
334c7e2
 
32464d1
065c48f
 
 
277e4e8
 
32464d1
065c48f
277e4e8
 
 
334c7e2
065c48f
277e4e8
334c7e2
 
32464d1
334c7e2
 
065c48f
 
334c7e2
 
 
676c3c4
edab1e8
676c3c4
 
edab1e8
676c3c4
 
 
74f694f
676c3c4
 
edab1e8
676c3c4
74f694f
 
 
676c3c4
 
32464d1
676c3c4
 
 
 
 
 
edab1e8
032fa83
 
 
 
edab1e8
 
032fa83
 
 
 
edab1e8
 
032fa83
d66163e
 
 
 
179a583
d66163e
032fa83
edab1e8
 
032fa83
17d746b
 
032fa83
edab1e8
 
032fa83
17d746b
 
 
032fa83
edab1e8
 
032fa83
 
 
 
edab1e8
 
032fa83
 
 
 
edab1e8
 
032fa83
 
 
a148f03
 
 
 
 
 
package slack

import (
	"encoding/json"
	"fmt"
)

// AckMessage is used for messages received in reply to other messages
type AckMessage struct {
	ReplyTo   int    `json:"reply_to"`
	Timestamp string `json:"ts"`
	Text      string `json:"text"`
	RTMResponse
}

// RTMResponse encapsulates response details as returned by the Slack API
type RTMResponse struct {
	Ok    bool      `json:"ok"`
	Error *RTMError `json:"error"`
}

// RTMError encapsulates error information as returned by the Slack API
type RTMError struct {
	Code int
	Msg  string
}

func (s RTMError) Error() string {
	return fmt.Sprintf("Code %d - %s", s.Code, s.Msg)
}

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

// RTMEvent is the main wrapper. You will find all the other messages attached
type RTMEvent struct {
	Type string
	Data interface{}
}

// HelloEvent represents the hello event
type HelloEvent struct{}

// PresenceChangeEvent represents the presence change event
type PresenceChangeEvent struct {
	Type     string `json:"type"`
	Presence string `json:"presence"`
	User     string `json:"user"`
}

// UserTypingEvent represents the user typing event
type UserTypingEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

// PrefChangeEvent represents a user preferences change event
type PrefChangeEvent struct {
	Type  string          `json:"type"`
	Name  string          `json:"name"`
	Value json.RawMessage `json:"value"`
}

// ManualPresenceChangeEvent represents the manual presence change event
type ManualPresenceChangeEvent struct {
	Type     string `json:"type"`
	Presence string `json:"presence"`
}

// UserChangeEvent represents the user change event
type UserChangeEvent struct {
	Type string `json:"type"`
	User User   `json:"user"`
}

// EmojiChangedEvent represents the emoji changed event
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"`
}

// CommandsChangedEvent represents the commands changed event
type CommandsChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp string `json:"event_ts"`
}

// EmailDomainChangedEvent represents the email domain changed event
type EmailDomainChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp string `json:"event_ts"`
	EmailDomain    string `json:"email_domain"`
}

// BotAddedEvent represents the bot added event
type BotAddedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

// BotChangedEvent represents the bot changed event
type BotChangedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

// AccountsChangedEvent represents the accounts changed event
type AccountsChangedEvent struct {
	Type string `json:"type"`
}

// ReconnectUrlEvent represents the receiving reconnect url event
type ReconnectUrlEvent struct {
	Type string `json:"type"`
	URL  string `json:"url"`
}