Combine ChatIn and ChatOut structs to ChatAPI and move them to types.go
This commit is contained in:
126
chatIn.go
126
chatIn.go
@ -7,118 +7,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ChatIn holds information about a message received by the `keybase chat api-listen` command
|
|
||||||
type ChatIn struct {
|
|
||||||
Type string `json:"type"`
|
|
||||||
Source string `json:"source"`
|
|
||||||
Msg chatInMsg `json:"msg"`
|
|
||||||
}
|
|
||||||
type chatInSender struct {
|
|
||||||
UID string `json:"uid"`
|
|
||||||
Username string `json:"username"`
|
|
||||||
DeviceID string `json:"device_id"`
|
|
||||||
DeviceName string `json:"device_name"`
|
|
||||||
}
|
|
||||||
type chatInAddedtoteam struct {
|
|
||||||
Team string `json:"team"`
|
|
||||||
Adder string `json:"adder"`
|
|
||||||
Addee string `json:"addee"`
|
|
||||||
Owners []string `json:"owners"`
|
|
||||||
Admins []string `json:"admins"`
|
|
||||||
Writers []string `json:"writers"`
|
|
||||||
Readers []string `json:"readers"`
|
|
||||||
}
|
|
||||||
type chatInBulkaddtoconv struct {
|
|
||||||
Usernames []string `json:"usernames"`
|
|
||||||
}
|
|
||||||
type chatInCommits struct {
|
|
||||||
CommitHash string `json:"commitHash"`
|
|
||||||
Message string `json:"message"`
|
|
||||||
AuthorName string `json:"authorName"`
|
|
||||||
AuthorEmail string `json:"authorEmail"`
|
|
||||||
Ctime int `json:"ctime"`
|
|
||||||
}
|
|
||||||
type chatInRefs struct {
|
|
||||||
RefName string `json:"refName"`
|
|
||||||
Commits []chatInCommits `json:"commits"`
|
|
||||||
MoreCommitsAvailable bool `json:"moreCommitsAvailable"`
|
|
||||||
IsDelete bool `json:"isDelete"`
|
|
||||||
}
|
|
||||||
type chatInGitpush struct {
|
|
||||||
Team string `json:"team"`
|
|
||||||
Pusher string `json:"pusher"`
|
|
||||||
RepoName string `json:"repoName"`
|
|
||||||
RepoID string `json:"repoID"`
|
|
||||||
Refs []chatInRefs `json:"refs"`
|
|
||||||
PushType int `json:"pushType"`
|
|
||||||
PreviousRepoName string `json:"previousRepoName"`
|
|
||||||
}
|
|
||||||
type chatInSystem struct {
|
|
||||||
SystemType int `json:"systemType"`
|
|
||||||
Addedtoteam chatInAddedtoteam `json:"addedtoteam"`
|
|
||||||
Bulkaddtoconv chatInBulkaddtoconv `json:"bulkaddtoconv"`
|
|
||||||
Gitpush chatInGitpush `json:"gitpush"`
|
|
||||||
}
|
|
||||||
type chatInResult struct {
|
|
||||||
ResultTyp int `json:"resultTyp"`
|
|
||||||
Sent string `json:"sent"`
|
|
||||||
}
|
|
||||||
type chatInPayments struct {
|
|
||||||
Username string `json:"username"`
|
|
||||||
PaymentText string `json:"paymentText"`
|
|
||||||
Result chatInResult `json:"result"`
|
|
||||||
}
|
|
||||||
type chatInUserMentions struct {
|
|
||||||
Text string `json:"text"`
|
|
||||||
UID string `json:"uid"`
|
|
||||||
}
|
|
||||||
type chatInTeamMentions struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Channel string `json:"channel"`
|
|
||||||
}
|
|
||||||
type chatInReaction struct {
|
|
||||||
M int `json:"m"`
|
|
||||||
B string `json:"b"`
|
|
||||||
}
|
|
||||||
type chatInDelete struct {
|
|
||||||
MessageIDs []int `json:"messageIDs"`
|
|
||||||
}
|
|
||||||
type chatInEdit struct {
|
|
||||||
MessageID int `json:"messageID"`
|
|
||||||
Body string `json:"body"`
|
|
||||||
Payments []chatInPayments `json:"payments"`
|
|
||||||
UserMentions []chatInUserMentions `json:"userMentions"`
|
|
||||||
TeamMentions []chatInTeamMentions `json:"teamMentions"`
|
|
||||||
}
|
|
||||||
type chatInText struct {
|
|
||||||
Body string `json:"body"`
|
|
||||||
Payments []chatInPayments `json:"payments"`
|
|
||||||
UserMentions []chatInUserMentions `json:"userMentions"`
|
|
||||||
TeamMentions []chatInTeamMentions `json:"teamMentions"`
|
|
||||||
}
|
|
||||||
type chatInContent struct {
|
|
||||||
Type string `json:"type"`
|
|
||||||
Delete chatInDelete `json:"delete"`
|
|
||||||
Edit chatInEdit `json:"edit"`
|
|
||||||
Reaction chatInReaction `json:"reaction"`
|
|
||||||
System chatInSystem `json:"system"`
|
|
||||||
Text chatInText `json:"text"`
|
|
||||||
}
|
|
||||||
type chatInMsg struct {
|
|
||||||
ID int `json:"id"`
|
|
||||||
Channel Channel `json:"channel"`
|
|
||||||
Sender chatInSender `json:"sender"`
|
|
||||||
SentAt int `json:"sent_at"`
|
|
||||||
SentAtMs int64 `json:"sent_at_ms"`
|
|
||||||
Content chatInContent `json:"content"`
|
|
||||||
Unread bool `json:"unread"`
|
|
||||||
AtMentionUsernames []string `json:"at_mention_usernames"`
|
|
||||||
IsEphemeral bool `json:"is_ephemeral"`
|
|
||||||
Etime int64 `json:"etime"`
|
|
||||||
HasPairwiseMacs bool `json:"has_pairwise_macs"`
|
|
||||||
ChannelMention string `json:"channel_mention"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunOptions holds a set of options to be passed to Run
|
// RunOptions holds a set of options to be passed to Run
|
||||||
type RunOptions struct {
|
type RunOptions struct {
|
||||||
Heartbeat int64 // Send a heartbeat through the channel every X minutes (0 = off)
|
Heartbeat int64 // Send a heartbeat through the channel every X minutes (0 = off)
|
||||||
@ -149,7 +37,7 @@ func createFiltersString(channels []Channel) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run `keybase chat api-listen` to get new messages coming into keybase and send them into the channel
|
// Run `keybase chat api-listen` to get new messages coming into keybase and send them into the channel
|
||||||
func getNewMessages(k *Keybase, c chan<- ChatIn, execOptions []string) {
|
func getNewMessages(k *Keybase, c chan<- ChatAPI, execOptions []string) {
|
||||||
execString := []string{"chat", "api-listen"}
|
execString := []string{"chat", "api-listen"}
|
||||||
if len(execOptions) > 0 {
|
if len(execOptions) > 0 {
|
||||||
execString = append(execString, execOptions...)
|
execString = append(execString, execOptions...)
|
||||||
@ -159,8 +47,8 @@ func getNewMessages(k *Keybase, c chan<- ChatIn, execOptions []string) {
|
|||||||
stdOut, _ := execCmd.StdoutPipe()
|
stdOut, _ := execCmd.StdoutPipe()
|
||||||
execCmd.Start()
|
execCmd.Start()
|
||||||
scanner := bufio.NewScanner(stdOut)
|
scanner := bufio.NewScanner(stdOut)
|
||||||
go func(scanner *bufio.Scanner, c chan<- ChatIn) {
|
go func(scanner *bufio.Scanner, c chan<- ChatAPI) {
|
||||||
var jsonData ChatIn
|
var jsonData ChatAPI
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
json.Unmarshal([]byte(scanner.Text()), &jsonData)
|
json.Unmarshal([]byte(scanner.Text()), &jsonData)
|
||||||
c <- jsonData
|
c <- jsonData
|
||||||
@ -171,7 +59,7 @@ func getNewMessages(k *Keybase, c chan<- ChatIn, execOptions []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run runs `keybase chat api-listen`, and passes incoming messages to the message handler func
|
// Run runs `keybase chat api-listen`, and passes incoming messages to the message handler func
|
||||||
func (k *Keybase) Run(handler func(ChatIn), options ...RunOptions) {
|
func (k *Keybase) Run(handler func(ChatAPI), options ...RunOptions) {
|
||||||
var heartbeatFreq int64
|
var heartbeatFreq int64
|
||||||
runOptions := make([]string, 0)
|
runOptions := make([]string, 0)
|
||||||
if len(options) > 0 {
|
if len(options) > 0 {
|
||||||
@ -197,7 +85,7 @@ func (k *Keybase) Run(handler func(ChatIn), options ...RunOptions) {
|
|||||||
runOptions = append(runOptions, createFilterString(options[0].FilterChannel))
|
runOptions = append(runOptions, createFilterString(options[0].FilterChannel))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c := make(chan ChatIn, 50)
|
c := make(chan ChatAPI, 50)
|
||||||
defer close(c)
|
defer close(c)
|
||||||
if heartbeatFreq > 0 {
|
if heartbeatFreq > 0 {
|
||||||
go heartbeat(c, time.Duration(heartbeatFreq)*time.Minute)
|
go heartbeat(c, time.Duration(heartbeatFreq)*time.Minute)
|
||||||
@ -209,8 +97,8 @@ func (k *Keybase) Run(handler func(ChatIn), options ...RunOptions) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// heartbeat sends a message through the channel with a message type of `heartbeat`
|
// heartbeat sends a message through the channel with a message type of `heartbeat`
|
||||||
func heartbeat(c chan<- ChatIn, freq time.Duration) {
|
func heartbeat(c chan<- ChatAPI, freq time.Duration) {
|
||||||
m := ChatIn{
|
m := ChatAPI{
|
||||||
Type: "heartbeat",
|
Type: "heartbeat",
|
||||||
}
|
}
|
||||||
count := 0
|
count := 0
|
||||||
|
|||||||
94
chatOut.go
94
chatOut.go
@ -6,89 +6,39 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// chatOut holds data to be sent to the Chat API
|
|
||||||
type chatOut struct {
|
|
||||||
Method string `json:"method"`
|
|
||||||
Params chatOutParams `json:"params"`
|
|
||||||
}
|
|
||||||
type Channel struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Public bool `json:"public,omitempty"`
|
|
||||||
MembersType string `json:"members_type,omitempty"`
|
|
||||||
TopicType string `json:"topic_type,omitempty"`
|
|
||||||
TopicName string `json:"topic_name,omitempty"`
|
|
||||||
}
|
|
||||||
type chatOutMessage struct {
|
|
||||||
Body string `json:"body"`
|
|
||||||
}
|
|
||||||
type chatOutOptions struct {
|
|
||||||
Channel Channel `json:"channel"`
|
|
||||||
MessageID int `json:"message_id"`
|
|
||||||
Message chatOutMessage `json:"message"`
|
|
||||||
}
|
|
||||||
type chatOutParams struct {
|
|
||||||
Options chatOutOptions `json:"options"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// chatOutResult holds data received after sending to API
|
|
||||||
type chatOutResult struct {
|
|
||||||
Result ChatOut `json:"result"`
|
|
||||||
}
|
|
||||||
type chatOutResultRatelimits struct {
|
|
||||||
Tank string `json:"tank,omitempty"`
|
|
||||||
Capacity int `json:"capacity,omitempty"`
|
|
||||||
Reset int `json:"reset,omitempty"`
|
|
||||||
Gas int `json:"gas,omitempty"`
|
|
||||||
}
|
|
||||||
type conversation struct {
|
|
||||||
ID string `json:"id"`
|
|
||||||
Channel Channel `json:"channel"`
|
|
||||||
Unread bool `json:"unread"`
|
|
||||||
ActiveAt int `json:"active_at"`
|
|
||||||
ActiveAtMs int64 `json:"active_at_ms"`
|
|
||||||
MemberStatus string `json:"member_status"`
|
|
||||||
}
|
|
||||||
type ChatOut struct {
|
|
||||||
Message string `json:"message,omitempty"`
|
|
||||||
ID int `json:"id,omitempty"`
|
|
||||||
Ratelimits []chatOutResultRatelimits `json:"ratelimits,omitempty"`
|
|
||||||
Conversations []conversation `json:"conversations,omitempty"`
|
|
||||||
Offline bool `json:"offline,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// chatAPIOut sends JSON requests to the chat API and returns its response.
|
// chatAPIOut sends JSON requests to the chat API and returns its response.
|
||||||
func chatAPIOut(keybasePath string, c chatOut) (chatOutResult, error) {
|
func chatAPIOut(keybasePath string, c ChatAPI) (ChatAPI, error) {
|
||||||
jsonBytes, _ := json.Marshal(c)
|
jsonBytes, _ := json.Marshal(c)
|
||||||
|
|
||||||
cmd := exec.Command(keybasePath, "chat", "api", "-m", string(jsonBytes))
|
cmd := exec.Command(keybasePath, "chat", "api", "-m", string(jsonBytes))
|
||||||
cmdOut, err := cmd.Output()
|
cmdOut, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return chatOutResult{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var r chatOutResult
|
var r ChatAPI
|
||||||
json.Unmarshal(cmdOut, &r)
|
json.Unmarshal(cmdOut, &r)
|
||||||
|
|
||||||
return r, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send sends a chat message
|
// Send sends a chat message
|
||||||
func (c Chat) Send(message ...string) (ChatOut, error) {
|
func (c Chat) Send(message ...string) (ChatAPI, error) {
|
||||||
m := chatOut{}
|
m := ChatAPI{}
|
||||||
m.Method = "send"
|
m.Method = "send"
|
||||||
m.Params.Options.Channel = c.Channel
|
m.Params.Options.Channel = c.Channel
|
||||||
m.Params.Options.Message.Body = strings.Join(message, " ")
|
m.Params.Options.Message.Body = strings.Join(message, " ")
|
||||||
|
|
||||||
r, err := chatAPIOut(c.keybase.Path, m)
|
r, err := chatAPIOut(c.keybase.Path, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ChatOut{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
return r.Result, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Edit edits a previously sent chat message
|
// Edit edits a previously sent chat message
|
||||||
func (c Chat) Edit(messageId int, message ...string) (ChatOut, error) {
|
func (c Chat) Edit(messageId int, message ...string) (ChatAPI, error) {
|
||||||
m := chatOut{}
|
m := ChatAPI{}
|
||||||
m.Method = "edit"
|
m.Method = "edit"
|
||||||
m.Params.Options.Channel = c.Channel
|
m.Params.Options.Channel = c.Channel
|
||||||
m.Params.Options.Message.Body = strings.Join(message, " ")
|
m.Params.Options.Message.Body = strings.Join(message, " ")
|
||||||
@ -96,14 +46,14 @@ func (c Chat) Edit(messageId int, message ...string) (ChatOut, error) {
|
|||||||
|
|
||||||
r, err := chatAPIOut(c.keybase.Path, m)
|
r, err := chatAPIOut(c.keybase.Path, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ChatOut{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
return r.Result, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// React sends a reaction to a message.
|
// React sends a reaction to a message.
|
||||||
func (c Chat) React(messageId int, reaction string) (ChatOut, error) {
|
func (c Chat) React(messageId int, reaction string) (ChatAPI, error) {
|
||||||
m := chatOut{}
|
m := ChatAPI{}
|
||||||
m.Method = "reaction"
|
m.Method = "reaction"
|
||||||
m.Params.Options.Channel = c.Channel
|
m.Params.Options.Channel = c.Channel
|
||||||
m.Params.Options.Message.Body = reaction
|
m.Params.Options.Message.Body = reaction
|
||||||
@ -111,30 +61,30 @@ func (c Chat) React(messageId int, reaction string) (ChatOut, error) {
|
|||||||
|
|
||||||
r, err := chatAPIOut(c.keybase.Path, m)
|
r, err := chatAPIOut(c.keybase.Path, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ChatOut{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
return r.Result, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete deletes a chat message
|
// Delete deletes a chat message
|
||||||
func (c Chat) Delete(messageId int) (ChatOut, error) {
|
func (c Chat) Delete(messageId int) (ChatAPI, error) {
|
||||||
m := chatOut{}
|
m := ChatAPI{}
|
||||||
m.Method = "delete"
|
m.Method = "delete"
|
||||||
m.Params.Options.Channel = c.Channel
|
m.Params.Options.Channel = c.Channel
|
||||||
m.Params.Options.MessageID = messageId
|
m.Params.Options.MessageID = messageId
|
||||||
|
|
||||||
r, err := chatAPIOut(c.keybase.Path, m)
|
r, err := chatAPIOut(c.keybase.Path, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ChatOut{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
return r.Result, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChatList returns a list of all conversations.
|
// ChatList returns a list of all conversations.
|
||||||
func (k *Keybase) ChatList() ([]conversation, error) {
|
func (k *Keybase) ChatList() (ChatAPI, error) {
|
||||||
m := chatOut{}
|
m := ChatAPI{}
|
||||||
m.Method = "list"
|
m.Method = "list"
|
||||||
|
|
||||||
r, err := chatAPIOut(k.Path, m)
|
r, err := chatAPIOut(k.Path, m)
|
||||||
return r.Result.Conversations, err
|
return r, err
|
||||||
}
|
}
|
||||||
|
|||||||
10
keybase.go
10
keybase.go
@ -32,15 +32,15 @@ type Chat struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type chat interface {
|
type chat interface {
|
||||||
Send(message ...string) (ChatOut, error)
|
Send(message ...string) (ChatAPI, error)
|
||||||
Edit(messageId int, message ...string) (ChatOut, error)
|
Edit(messageId int, message ...string) (ChatAPI, error)
|
||||||
React(messageId int, reaction string) (ChatOut, error)
|
React(messageId int, reaction string) (ChatAPI, error)
|
||||||
Delete(messageId int) (ChatOut, error)
|
Delete(messageId int) (ChatAPI, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type keybase interface {
|
type keybase interface {
|
||||||
NewChat(channel Channel) Chat
|
NewChat(channel Channel) Chat
|
||||||
Run(handler func(ChatIn), options ...RunOptions)
|
Run(handler func(ChatAPI), options ...RunOptions)
|
||||||
ChatList() ([]conversation, error)
|
ChatList() ([]conversation, error)
|
||||||
loggedIn() bool
|
loggedIn() bool
|
||||||
username() string
|
username() string
|
||||||
|
|||||||
166
types.go
Normal file
166
types.go
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
package keybase
|
||||||
|
|
||||||
|
// ChatAPI holds information about a message received by the `keybase chat api-listen` command
|
||||||
|
type ChatAPI struct {
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
Source string `json:"source,omitempty"`
|
||||||
|
Msg msg `json:"msg,omitempty"`
|
||||||
|
Method string `json:"method,omitempty"`
|
||||||
|
Params params `json:"params,omitempty"`
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
ID int `json:"id,omitempty"`
|
||||||
|
Ratelimits []rateLimits `json:"ratelimits,omitempty"`
|
||||||
|
Conversations []conversation `json:"conversations,omitempty"`
|
||||||
|
Offline bool `json:"offline,omitempty"`
|
||||||
|
Result result `json:"result,omitempty"`
|
||||||
|
}
|
||||||
|
type sender struct {
|
||||||
|
UID string `json:"uid"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
DeviceID string `json:"device_id"`
|
||||||
|
DeviceName string `json:"device_name"`
|
||||||
|
}
|
||||||
|
type addedtoteam struct {
|
||||||
|
Team string `json:"team"`
|
||||||
|
Adder string `json:"adder"`
|
||||||
|
Addee string `json:"addee"`
|
||||||
|
Owners []string `json:"owners"`
|
||||||
|
Admins []string `json:"admins"`
|
||||||
|
Writers []string `json:"writers"`
|
||||||
|
Readers []string `json:"readers"`
|
||||||
|
}
|
||||||
|
type bulkaddtoconv struct {
|
||||||
|
Usernames []string `json:"usernames"`
|
||||||
|
}
|
||||||
|
type commits struct {
|
||||||
|
CommitHash string `json:"commitHash"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
AuthorName string `json:"authorName"`
|
||||||
|
AuthorEmail string `json:"authorEmail"`
|
||||||
|
Ctime int `json:"ctime"`
|
||||||
|
}
|
||||||
|
type refs struct {
|
||||||
|
RefName string `json:"refName"`
|
||||||
|
Commits []commits `json:"commits"`
|
||||||
|
MoreCommitsAvailable bool `json:"moreCommitsAvailable"`
|
||||||
|
IsDelete bool `json:"isDelete"`
|
||||||
|
}
|
||||||
|
type gitpush struct {
|
||||||
|
Team string `json:"team"`
|
||||||
|
Pusher string `json:"pusher"`
|
||||||
|
RepoName string `json:"repoName"`
|
||||||
|
RepoID string `json:"repoID"`
|
||||||
|
Refs []refs `json:"refs"`
|
||||||
|
PushType int `json:"pushType"`
|
||||||
|
PreviousRepoName string `json:"previousRepoName"`
|
||||||
|
}
|
||||||
|
type system struct {
|
||||||
|
SystemType int `json:"systemType"`
|
||||||
|
Addedtoteam addedtoteam `json:"addedtoteam"`
|
||||||
|
Bulkaddtoconv bulkaddtoconv `json:"bulkaddtoconv"`
|
||||||
|
Gitpush gitpush `json:"gitpush"`
|
||||||
|
}
|
||||||
|
type paymentsResult struct {
|
||||||
|
ResultTyp int `json:"resultTyp"`
|
||||||
|
Sent string `json:"sent"`
|
||||||
|
}
|
||||||
|
type payments struct {
|
||||||
|
Username string `json:"username"`
|
||||||
|
PaymentText string `json:"paymentText"`
|
||||||
|
Result paymentsResult `json:"result"`
|
||||||
|
}
|
||||||
|
type userMentions struct {
|
||||||
|
Text string `json:"text"`
|
||||||
|
UID string `json:"uid"`
|
||||||
|
}
|
||||||
|
type teamMentions struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Channel string `json:"channel"`
|
||||||
|
}
|
||||||
|
type reaction struct {
|
||||||
|
M int `json:"m"`
|
||||||
|
B string `json:"b"`
|
||||||
|
}
|
||||||
|
type delete struct {
|
||||||
|
MessageIDs []int `json:"messageIDs"`
|
||||||
|
}
|
||||||
|
type edit struct {
|
||||||
|
MessageID int `json:"messageID"`
|
||||||
|
Body string `json:"body"`
|
||||||
|
Payments []payments `json:"payments"`
|
||||||
|
UserMentions []userMentions `json:"userMentions"`
|
||||||
|
TeamMentions []teamMentions `json:"teamMentions"`
|
||||||
|
}
|
||||||
|
type text struct {
|
||||||
|
Body string `json:"body"`
|
||||||
|
Payments []payments `json:"payments"`
|
||||||
|
UserMentions []userMentions `json:"userMentions"`
|
||||||
|
TeamMentions []teamMentions `json:"teamMentions"`
|
||||||
|
}
|
||||||
|
type content struct {
|
||||||
|
Type string `json:"type"`
|
||||||
|
Delete delete `json:"delete"`
|
||||||
|
Edit edit `json:"edit"`
|
||||||
|
Reaction reaction `json:"reaction"`
|
||||||
|
System system `json:"system"`
|
||||||
|
Text text `json:"text"`
|
||||||
|
}
|
||||||
|
type msg struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Channel Channel `json:"channel"`
|
||||||
|
Sender sender `json:"sender"`
|
||||||
|
SentAt int `json:"sent_at"`
|
||||||
|
SentAtMs int64 `json:"sent_at_ms"`
|
||||||
|
Content content `json:"content"`
|
||||||
|
Unread bool `json:"unread"`
|
||||||
|
AtMentionUsernames []string `json:"at_mention_usernames"`
|
||||||
|
IsEphemeral bool `json:"is_ephemeral"`
|
||||||
|
Etime int64 `json:"etime"`
|
||||||
|
HasPairwiseMacs bool `json:"has_pairwise_macs"`
|
||||||
|
ChannelMention string `json:"channel_mention"`
|
||||||
|
}
|
||||||
|
type Channel struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Public bool `json:"public,omitempty"`
|
||||||
|
MembersType string `json:"members_type,omitempty"`
|
||||||
|
TopicType string `json:"topic_type,omitempty"`
|
||||||
|
TopicName string `json:"topic_name,omitempty"`
|
||||||
|
}
|
||||||
|
type message struct {
|
||||||
|
Body string `json:"body"`
|
||||||
|
}
|
||||||
|
type options struct {
|
||||||
|
Channel Channel `json:"channel"`
|
||||||
|
MessageID int `json:"message_id"`
|
||||||
|
Message message `json:"message"`
|
||||||
|
Pagination pagination `json:"pagination"`
|
||||||
|
}
|
||||||
|
type params struct {
|
||||||
|
Options options `json:"options"`
|
||||||
|
}
|
||||||
|
type pagination struct {
|
||||||
|
Next string `json:"next"`
|
||||||
|
Previous string `json:"previous"`
|
||||||
|
Num int `json:"num"`
|
||||||
|
}
|
||||||
|
type result struct {
|
||||||
|
Messages []messages `json:"messages,omitempty"`
|
||||||
|
Pagination pagination `json:"pagination"`
|
||||||
|
}
|
||||||
|
type messages struct {
|
||||||
|
Msg msg `json:"msg,omitempty"`
|
||||||
|
}
|
||||||
|
type rateLimits struct {
|
||||||
|
Tank string `json:"tank,omitempty"`
|
||||||
|
Capacity int `json:"capacity,omitempty"`
|
||||||
|
Reset int `json:"reset,omitempty"`
|
||||||
|
Gas int `json:"gas,omitempty"`
|
||||||
|
}
|
||||||
|
type conversation struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Channel Channel `json:"channel"`
|
||||||
|
Unread bool `json:"unread"`
|
||||||
|
ActiveAt int `json:"active_at"`
|
||||||
|
ActiveAtMs int64 `json:"active_at_ms"`
|
||||||
|
MemberStatus string `json:"member_status"`
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user