summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matterbridge
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/matterbridge')
-rw-r--r--vendor/github.com/matterbridge/discordgo/.travis.yml2
-rw-r--r--vendor/github.com/matterbridge/discordgo/discord.go2
-rw-r--r--vendor/github.com/matterbridge/discordgo/endpoints.go5
-rw-r--r--vendor/github.com/matterbridge/discordgo/events.go3
-rw-r--r--vendor/github.com/matterbridge/discordgo/interactions.go54
-rw-r--r--vendor/github.com/matterbridge/discordgo/message.go6
-rw-r--r--vendor/github.com/matterbridge/discordgo/ratelimit.go15
-rw-r--r--vendor/github.com/matterbridge/discordgo/restapi.go39
-rw-r--r--vendor/github.com/matterbridge/discordgo/state.go22
-rw-r--r--vendor/github.com/matterbridge/discordgo/structs.go110
-rw-r--r--vendor/github.com/matterbridge/discordgo/wsapi.go50
11 files changed, 181 insertions, 127 deletions
diff --git a/vendor/github.com/matterbridge/discordgo/.travis.yml b/vendor/github.com/matterbridge/discordgo/.travis.yml
index c3cb680c..b54331b1 100644
--- a/vendor/github.com/matterbridge/discordgo/.travis.yml
+++ b/vendor/github.com/matterbridge/discordgo/.travis.yml
@@ -1,7 +1,5 @@
language: go
go:
- - 1.11.x
- - 1.12.x
- 1.13.x
- 1.14.x
- 1.15.x
diff --git a/vendor/github.com/matterbridge/discordgo/discord.go b/vendor/github.com/matterbridge/discordgo/discord.go
index 0d2aafbb..d319b7b4 100644
--- a/vendor/github.com/matterbridge/discordgo/discord.go
+++ b/vendor/github.com/matterbridge/discordgo/discord.go
@@ -22,7 +22,7 @@ import (
)
// VERSION of DiscordGo, follows Semantic Versioning. (http://semver.org/)
-const VERSION = "0.22.0"
+const VERSION = "0.23.0"
// ErrMFA will be risen by New when the user has 2FA.
var ErrMFA = errors.New("account has 2FA enabled")
diff --git a/vendor/github.com/matterbridge/discordgo/endpoints.go b/vendor/github.com/matterbridge/discordgo/endpoints.go
index 88663fe8..89d56eda 100644
--- a/vendor/github.com/matterbridge/discordgo/endpoints.go
+++ b/vendor/github.com/matterbridge/discordgo/endpoints.go
@@ -14,7 +14,7 @@ package discordgo
import "strconv"
// APIVersion is the Discord API version used for the REST and Websocket API.
-var APIVersion = "6"
+var APIVersion = "8"
// Known Discord API Endpoints.
var (
@@ -90,7 +90,8 @@ var (
EndpointGuildRoles = func(gID string) string { return EndpointGuilds + gID + "/roles" }
EndpointGuildRole = func(gID, rID string) string { return EndpointGuilds + gID + "/roles/" + rID }
EndpointGuildInvites = func(gID string) string { return EndpointGuilds + gID + "/invites" }
- EndpointGuildEmbed = func(gID string) string { return EndpointGuilds + gID + "/embed" }
+ EndpointGuildWidget = func(gID string) string { return EndpointGuilds + gID + "/widget" }
+ EndpointGuildEmbed = EndpointGuildWidget
EndpointGuildPrune = func(gID string) string { return EndpointGuilds + gID + "/prune" }
EndpointGuildIcon = func(gID, hash string) string { return EndpointCDNIcons + gID + "/" + hash + ".png" }
EndpointGuildIconAnimated = func(gID, hash string) string { return EndpointCDNIcons + gID + "/" + hash + ".gif" }
diff --git a/vendor/github.com/matterbridge/discordgo/events.go b/vendor/github.com/matterbridge/discordgo/events.go
index dd0e3d84..7488dcc7 100644
--- a/vendor/github.com/matterbridge/discordgo/events.go
+++ b/vendor/github.com/matterbridge/discordgo/events.go
@@ -196,8 +196,7 @@ type PresencesReplace []*Presence
// PresenceUpdate is the data for a PresenceUpdate event.
type PresenceUpdate struct {
Presence
- GuildID string `json:"guild_id"`
- Roles []string `json:"roles"`
+ GuildID string `json:"guild_id"`
}
// Resumed is the data for a Resumed event.
diff --git a/vendor/github.com/matterbridge/discordgo/interactions.go b/vendor/github.com/matterbridge/discordgo/interactions.go
new file mode 100644
index 00000000..6fc2f55e
--- /dev/null
+++ b/vendor/github.com/matterbridge/discordgo/interactions.go
@@ -0,0 +1,54 @@
+package discordgo
+
+import (
+ "bytes"
+ "crypto/ed25519"
+ "encoding/hex"
+ "io"
+ "io/ioutil"
+ "net/http"
+)
+
+// VerifyInteraction implements message verification of the discord interactions api
+// signing algorithm, as documented here:
+// https://discord.com/developers/docs/interactions/slash-commands#security-and-authorization
+func VerifyInteraction(r *http.Request, key ed25519.PublicKey) bool {
+ var msg bytes.Buffer
+
+ signature := r.Header.Get("X-Signature-Ed25519")
+ if signature == "" {
+ return false
+ }
+
+ sig, err := hex.DecodeString(signature)
+ if err != nil {
+ return false
+ }
+
+ if len(sig) != ed25519.SignatureSize {
+ return false
+ }
+
+ timestamp := r.Header.Get("X-Signature-Timestamp")
+ if timestamp == "" {
+ return false
+ }
+
+ msg.WriteString(timestamp)
+
+ defer r.Body.Close()
+ var body bytes.Buffer
+
+ // at the end of the function, copy the original body back into the request
+ defer func() {
+ r.Body = ioutil.NopCloser(&body)
+ }()
+
+ // copy body into buffers
+ _, err = io.Copy(&msg, io.TeeReader(r.Body, &body))
+ if err != nil {
+ return false
+ }
+
+ return ed25519.Verify(key, msg.Bytes(), sig)
+}
diff --git a/vendor/github.com/matterbridge/discordgo/message.go b/vendor/github.com/matterbridge/discordgo/message.go
index 48589388..61cd0d9c 100644
--- a/vendor/github.com/matterbridge/discordgo/message.go
+++ b/vendor/github.com/matterbridge/discordgo/message.go
@@ -34,8 +34,10 @@ const (
MessageTypeUserPremiumGuildSubscriptionTierTwo
MessageTypeUserPremiumGuildSubscriptionTierThree
MessageTypeChannelFollowAdd
- MessageTypeGuildDiscoveryDisqualified
+ MessageTypeGuildDiscoveryDisqualified = iota + 1
MessageTypeGuildDiscoveryRequalified
+ MessageTypeReply = iota + 4
+ MessageTypeApplicationCommand
)
// A Message stores all data related to a specific Discord message.
@@ -369,7 +371,7 @@ type MessageApplication struct {
type MessageReference struct {
MessageID string `json:"message_id"`
ChannelID string `json:"channel_id"`
- GuildID string `json:"guild_id"`
+ GuildID string `json:"guild_id,omitempty"`
}
// Reference returns MessageReference of given message
diff --git a/vendor/github.com/matterbridge/discordgo/ratelimit.go b/vendor/github.com/matterbridge/discordgo/ratelimit.go
index dc48c924..cd96eadf 100644
--- a/vendor/github.com/matterbridge/discordgo/ratelimit.go
+++ b/vendor/github.com/matterbridge/discordgo/ratelimit.go
@@ -1,6 +1,7 @@
package discordgo
import (
+ "math"
"net/http"
"strconv"
"strings"
@@ -140,20 +141,21 @@ func (b *Bucket) Release(headers http.Header) error {
remaining := headers.Get("X-RateLimit-Remaining")
reset := headers.Get("X-RateLimit-Reset")
global := headers.Get("X-RateLimit-Global")
- retryAfter := headers.Get("Retry-After")
+ resetAfter := headers.Get("X-RateLimit-Reset-After")
// Update global and per bucket reset time if the proper headers are available
// If global is set, then it will block all buckets until after Retry-After
// If Retry-After without global is provided it will use that for the new reset
// time since it's more accurate than X-RateLimit-Reset.
// If Retry-After after is not proided, it will update the reset time from X-RateLimit-Reset
- if retryAfter != "" {
- parsedAfter, err := strconv.ParseInt(retryAfter, 10, 64)
+ if resetAfter != "" {
+ parsedAfter, err := strconv.ParseFloat(resetAfter, 64)
if err != nil {
return err
}
- resetAt := time.Now().Add(time.Duration(parsedAfter) * time.Millisecond)
+ whole, frac := math.Modf(parsedAfter)
+ resetAt := time.Now().Add(time.Duration(whole) * time.Second).Add(time.Duration(frac*1000) * time.Millisecond)
// Lock either this single bucket or all buckets
if global != "" {
@@ -168,7 +170,7 @@ func (b *Bucket) Release(headers http.Header) error {
return err
}
- unix, err := strconv.ParseInt(reset, 10, 64)
+ unix, err := strconv.ParseFloat(reset, 64)
if err != nil {
return err
}
@@ -177,7 +179,8 @@ func (b *Bucket) Release(headers http.Header) error {
// some extra time is added because without it i still encountered 429's.
// The added amount is the lowest amount that gave no 429's
// in 1k requests
- delta := time.Unix(unix, 0).Sub(discordTime) + time.Millisecond*250
+ whole, frac := math.Modf(unix)
+ delta := time.Unix(int64(whole), 0).Add(time.Duration(frac*1000)*time.Millisecond).Sub(discordTime) + time.Millisecond*250
b.reset = time.Now().Add(delta)
}
diff --git a/vendor/github.com/matterbridge/discordgo/restapi.go b/vendor/github.com/matterbridge/discordgo/restapi.go
index 52f5b787..879a554c 100644
--- a/vendor/github.com/matterbridge/discordgo/restapi.go
+++ b/vendor/github.com/matterbridge/discordgo/restapi.go
@@ -155,7 +155,7 @@ func (s *Session) RequestWithLockedBucket(method, urlStr, contentType string, b
return
}
s.log(LogInformational, "Rate Limiting %s, retry in %d", urlStr, rl.RetryAfter)
- s.handleEvent(rateLimitEventType, RateLimit{TooManyRequests: &rl, URL: urlStr})
+ s.handleEvent(rateLimitEventType, &RateLimit{TooManyRequests: &rl, URL: urlStr})
time.Sleep(rl.RetryAfter * time.Millisecond)
// we can make the above smarter
@@ -465,7 +465,7 @@ func (s *Session) UserGuildSettingsEdit(guildID string, settings *UserGuildSetti
//
// NOTE: This function is now deprecated and will be removed in the future.
// Please see the same function inside state.go
-func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions int, err error) {
+func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions int64, err error) {
// Try to just get permissions from state.
apermissions, err = s.State.UserChannelPermissions(userID, channelID)
if err == nil {
@@ -507,7 +507,7 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions
// Calculates the permissions for a member.
// https://support.discord.com/hc/en-us/articles/206141927-How-is-the-permission-hierarchy-structured-
-func memberPermissions(guild *Guild, channel *Channel, userID string, roles []string) (apermissions int) {
+func memberPermissions(guild *Guild, channel *Channel, userID string, roles []string) (apermissions int64) {
if userID == guild.OwnerID {
apermissions = PermissionAll
return
@@ -542,13 +542,11 @@ func memberPermissions(guild *Guild, channel *Channel, userID string, roles []st
}
}
- denies := 0
- allows := 0
-
+ var denies, allows int64
// Member overwrites can override role overrides, so do two passes
for _, overwrite := range channel.PermissionOverwrites {
for _, roleID := range roles {
- if overwrite.Type == "role" && roleID == overwrite.ID {
+ if overwrite.Type == PermissionOverwriteTypeRole && roleID == overwrite.ID {
denies |= overwrite.Deny
allows |= overwrite.Allow
break
@@ -560,7 +558,7 @@ func memberPermissions(guild *Guild, channel *Channel, userID string, roles []st
apermissions |= allows
for _, overwrite := range channel.PermissionOverwrites {
- if overwrite.Type == "member" && overwrite.ID == userID {
+ if overwrite.Type == PermissionOverwriteTypeMember && overwrite.ID == userID {
apermissions &= ^overwrite.Deny
apermissions |= overwrite.Allow
break
@@ -693,6 +691,19 @@ func (s *Session) GuildBanCreate(guildID, userID string, days int) (err error) {
return s.GuildBanCreateWithReason(guildID, userID, "", days)
}
+// GuildBan finds ban by given guild and user id and returns GuildBan structure
+func (s *Session) GuildBan(guildID, userID string) (st *GuildBan, err error) {
+
+ body, err := s.RequestWithBucketID("GET", EndpointGuildBan(guildID, userID), nil, EndpointGuildBan(guildID, userID))
+ if err != nil {
+ return
+ }
+
+ err = unmarshal(body, &st)
+
+ return
+}
+
// GuildBanCreateWithReason bans the given user from the given guild also providing a reaso.
// guildID : The ID of a Guild.
// userID : The ID of a User
@@ -704,7 +715,7 @@ func (s *Session) GuildBanCreateWithReason(guildID, userID, reason string, days
queryParams := url.Values{}
if days > 0 {
- queryParams.Set("delete-message-days", strconv.Itoa(days))
+ queryParams.Set("delete_message_days", strconv.Itoa(days))
}
if reason != "" {
queryParams.Set("reason", reason)
@@ -1796,13 +1807,13 @@ func (s *Session) ChannelInviteCreate(channelID string, i Invite) (st *Invite, e
// ChannelPermissionSet creates a Permission Override for the given channel.
// NOTE: This func name may changed. Using Set instead of Create because
// you can both create a new override or update an override with this function.
-func (s *Session) ChannelPermissionSet(channelID, targetID, targetType string, allow, deny int) (err error) {
+func (s *Session) ChannelPermissionSet(channelID, targetID string, targetType PermissionOverwriteType, allow, deny int) (err error) {
data := struct {
- ID string `json:"id"`
- Type string `json:"type"`
- Allow int `json:"allow"`
- Deny int `json:"deny"`
+ ID string `json:"id"`
+ Type PermissionOverwriteType `json:"type"`
+ Allow int `json:"allow"`
+ Deny int `json:"deny"`
}{targetID, targetType, allow, deny}
_, err = s.RequestWithBucketID("PUT", EndpointChannelPermission(channelID, targetID), data, EndpointChannelPermission(channelID, ""))
diff --git a/vendor/github.com/matterbridge/discordgo/state.go b/vendor/github.com/matterbridge/discordgo/state.go
index c89f8bb4..2eeabd80 100644
--- a/vendor/github.com/matterbridge/discordgo/state.go
+++ b/vendor/github.com/matterbridge/discordgo/state.go
@@ -200,14 +200,10 @@ func (s *State) PresenceAdd(guildID string, presence *Presence) error {
//guild.Presences[i] = presence
//Update status
- guild.Presences[i].Game = presence.Game
- guild.Presences[i].Roles = presence.Roles
+ guild.Presences[i].Activities = presence.Activities
if presence.Status != "" {
guild.Presences[i].Status = presence.Status
}
- if presence.Nick != "" {
- guild.Presences[i].Nick = presence.Nick
- }
//Update the optionally sent user information
//ID Is a mandatory field so you should not need to check if it is empty
@@ -966,24 +962,12 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) {
// Member not found; this is a user coming online
m = &Member{
GuildID: t.GuildID,
- Nick: t.Nick,
User: t.User,
- Roles: t.Roles,
}
-
} else {
-
- if t.Nick != "" {
- m.Nick = t.Nick
- }
-
if t.User.Username != "" {
m.User.Username = t.User.Username
}
-
- // PresenceUpdates always contain a list of roles, so there's no need to check for an empty list here
- m.Roles = t.Roles
-
}
err = s.MemberAdd(m)
@@ -997,7 +981,7 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) {
// UserChannelPermissions returns the permission of a user in a channel.
// userID : The ID of the user to calculate permissions for.
// channelID : The ID of the channel to calculate permission for.
-func (s *State) UserChannelPermissions(userID, channelID string) (apermissions int, err error) {
+func (s *State) UserChannelPermissions(userID, channelID string) (apermissions int64, err error) {
if s == nil {
return 0, ErrNilState
}
@@ -1022,7 +1006,7 @@ func (s *State) UserChannelPermissions(userID, channelID string) (apermissions i
// MessagePermissions returns the permissions of the author of the message
// in the channel in which it was sent.
-func (s *State) MessagePermissions(message *Message) (apermissions int, err error) {
+func (s *State) MessagePermissions(message *Message) (apermissions int64, err error) {
if s == nil {
return 0, ErrNilState
}
diff --git a/vendor/github.com/matterbridge/discordgo/structs.go b/vendor/github.com/matterbridge/discordgo/structs.go
index c1a63788..8cebfdc5 100644
--- a/vendor/github.com/matterbridge/discordgo/structs.go
+++ b/vendor/github.com/matterbridge/discordgo/structs.go
@@ -14,6 +14,7 @@ package discordgo
import (
"encoding/json"
"fmt"
+ "math"
"net/http"
"strings"
"sync"
@@ -322,12 +323,22 @@ type ChannelFollow struct {
WebhookID string `json:"webhook_id"`
}
+// PermissionOverwriteType represents the type of resource on which
+// a permission overwrite acts.
+type PermissionOverwriteType int
+
+// The possible permission overwrite types.
+const (
+ PermissionOverwriteTypeRole PermissionOverwriteType = iota
+ PermissionOverwriteTypeMember
+)
+
// A PermissionOverwrite holds permission overwrite data for a Channel
type PermissionOverwrite struct {
- ID string `json:"id"`
- Type string `json:"type"`
- Deny int `json:"deny"`
- Allow int `json:"allow"`
+ ID string `json:"id"`
+ Type PermissionOverwriteType `json:"type"`
+ Deny int64 `json:"deny,string"`
+ Allow int64 `json:"allow,string"`
}
// Emoji struct holds data related to Emoji's
@@ -427,9 +438,6 @@ type Guild struct {
// The ID of the AFK voice channel.
AfkChannelID string `json:"afk_channel_id"`
- // The ID of the embed channel ID, used for embed widgets.
- EmbedChannelID string `json:"embed_channel_id"`
-
// The user ID of the owner of the guild.
OwnerID string `json:"owner_id"`
@@ -458,9 +466,6 @@ type Guild struct {
// The verification level required for the guild.
VerificationLevel VerificationLevel `json:"verification_level"`
- // Whether the guild has embedding enabled.
- EmbedEnabled bool `json:"embed_enabled"`
-
// Whether the guild is considered large. This is
// determined by a member threshold in the identify packet,
// and is currently hard-coded at 250 members in the library.
@@ -564,7 +569,7 @@ type Guild struct {
ApproximatePresenceCount int `json:"approximate_presence_count"`
// Permissions of our user
- Permissions int `json:"permissions"`
+ Permissions int64 `json:"permissions,string"`
}
// MessageNotifications is the notification level for a guild
@@ -606,7 +611,7 @@ type UserGuild struct {
Name string `json:"name"`
Icon string `json:"icon"`
Owner bool `json:"owner"`
- Permissions int `json:"permissions"`
+ Permissions int64 `json:"permissions,string"`
}
// A GuildParams stores all the data needed to update discord guild settings
@@ -650,7 +655,7 @@ type Role struct {
// The permissions of the role on the guild (doesn't include channel overrides).
// This is a combination of bit masks; the presence of a certain permission can
// be checked by performing a bitwise AND between this int and the permission.
- Permissions int `json:"permissions"`
+ Permissions int64 `json:"permissions,string"`
}
// Mention returns a string which mentions the role
@@ -688,39 +693,10 @@ type VoiceState struct {
// A Presence stores the online, offline, or idle and game status of Guild members.
type Presence struct {
- User *User `json:"user"`
- Status Status `json:"status"`
- Game *Game `json:"game"`
- Activities []*Game `json:"activities"`
- Nick string `json:"nick"`
- Roles []string `json:"roles"`
- Since *int `json:"since"`
-}
-
-// GameType is the type of "game" (see GameType* consts) in the Game struct
-type GameType int
-
-// Valid GameType values
-const (
- GameTypeGame GameType = iota
- GameTypeStreaming
- GameTypeListening
- GameTypeWatching
- GameTypeCustom
-)
-
-// A Game struct holds the name of the "playing .." game for a user
-type Game struct {
- Name string `json:"name"`
- Type GameType `json:"type"`
- URL string `json:"url,omitempty"`
- Details string `json:"details,omitempty"`
- State string `json:"state,omitempty"`
- TimeStamps TimeStamps `json:"timestamps,omitempty"`
- Assets Assets `json:"assets,omitempty"`
- ApplicationID string `json:"application_id,omitempty"`
- Instance int8 `json:"instance,omitempty"`
- // TODO: Party and Secrets (unknown structure)
+ User *User `json:"user"`
+ Status Status `json:"status"`
+ Activities []*Activity `json:"activities"`
+ Since *int `json:"since"`
}
// A TimeStamps struct contains start and end times used in the rich presence "playing .." Game
@@ -778,6 +754,9 @@ type Member struct {
// When the user used their Nitro boost on the server
PremiumSince Timestamp `json:"premium_since"`
+
+ // Is true while the member hasn't accepted the membership screen.
+ Pending bool `json:"pending"`
}
// Mention creates a member mention
@@ -838,6 +817,26 @@ type TooManyRequests struct {
RetryAfter time.Duration `json:"retry_after"`
}
+// UnmarshalJSON helps support translation of a milliseconds-based float
+// into a time.Duration on TooManyRequests.
+func (t *TooManyRequests) UnmarshalJSON(b []byte) error {
+ u := struct {
+ Bucket string `json:"bucket"`
+ Message string `json:"message"`
+ RetryAfter float64 `json:"retry_after"`
+ }{}
+ err := json.Unmarshal(b, &u)
+ if err != nil {
+ return err
+ }
+
+ t.Bucket = u.Bucket
+ t.Message = u.Message
+ whole, frac := math.Modf(u.RetryAfter)
+ t.RetryAfter = time.Duration(whole)*time.Second + time.Duration(frac*1000)*time.Millisecond
+ return nil
+}
+
// A ReadState stores data on the read state of channels.
type ReadState struct {
MentionCount int `json:"mention_count"`
@@ -1117,9 +1116,9 @@ type GatewayStatusUpdate struct {
// Activity defines the Activity sent with GatewayStatusUpdate
// https://discord.com/developers/docs/topics/gateway#activity-object
type Activity struct {
- Name string
- Type ActivityType
- URL string
+ Name string `json:"name"`
+ Type ActivityType `json:"type"`
+ URL string `json:"url,omitempty"`
}
// ActivityType is the type of Activity (see ActivityType* consts) in the Activity struct
@@ -1128,7 +1127,7 @@ type ActivityType int
// Valid ActivityType values
const (
- ActivityTypeGame GameType = iota
+ ActivityTypeGame ActivityType = iota
ActivityTypeStreaming
ActivityTypeListening
// ActivityTypeWatching // not valid in this use case?
@@ -1145,7 +1144,7 @@ type Identify struct {
Shard *[2]int `json:"shard,omitempty"`
Presence GatewayStatusUpdate `json:"presence,omitempty"`
GuildSubscriptions bool `json:"guild_subscriptions"`
- Intents *Intent `json:"intents,omitempty"`
+ Intents Intent `json:"intents"`
}
// IdentifyProperties contains the "properties" portion of an Identify packet
@@ -1253,6 +1252,7 @@ const (
ErrCodeUnknownUser = 10013
ErrCodeUnknownEmoji = 10014
ErrCodeUnknownWebhook = 10015
+ ErrCodeUnknownBan = 10026
ErrCodeBotsCannotUseEndpoint = 20001
ErrCodeOnlyBotsCanUseEndpoint = 20002
@@ -1331,7 +1331,9 @@ const (
IntentsNone Intent = 0
)
-// MakeIntent helps convert a gateway intent value for use in the Identify structure.
-func MakeIntent(intents Intent) *Intent {
- return &intents
+// MakeIntent used to help convert a gateway intent value for use in the Identify structure;
+// this was useful to help support the use of a pointer type when intents were optional.
+// This is now a no-op, and is not necessary to use.
+func MakeIntent(intents Intent) Intent {
+ return intents
}
diff --git a/vendor/github.com/matterbridge/discordgo/wsapi.go b/vendor/github.com/matterbridge/discordgo/wsapi.go
index 1cf1598e..29a4f613 100644
--- a/vendor/github.com/matterbridge/discordgo/wsapi.go
+++ b/vendor/github.com/matterbridge/discordgo/wsapi.go
@@ -322,10 +322,10 @@ func (s *Session) heartbeat(wsConn *websocket.Conn, listening <-chan interface{}
// UpdateStatusData ia provided to UpdateStatusComplex()
type UpdateStatusData struct {
- IdleSince *int `json:"since"`
- Game *Game `json:"game"`
- AFK bool `json:"afk"`
- Status string `json:"status"`
+ IdleSince *int `json:"since"`
+ Activities []*Activity `json:"activities"`
+ AFK bool `json:"afk"`
+ Status string `json:"status"`
}
type updateStatusOp struct {
@@ -333,7 +333,7 @@ type updateStatusOp struct {
Data UpdateStatusData `json:"d"`
}
-func newUpdateStatusData(idle int, gameType GameType, game, url string) *UpdateStatusData {
+func newUpdateStatusData(idle int, activityType ActivityType, name, url string) *UpdateStatusData {
usd := &UpdateStatusData{
Status: "online",
}
@@ -342,43 +342,43 @@ func newUpdateStatusData(idle int, gameType GameType, game, url string) *UpdateS
usd.IdleSince = &idle
}
- if game != "" {
- usd.Game = &Game{
- Name: game,
- Type: gameType,
+ if name != "" {
+ usd.Activities = []*Activity{{
+ Name: name,
+ Type: activityType,
URL: url,
- }
+ }}
}
return usd
}
-// UpdateStatus is used to update the user's status.
+// UpdateGameStatus is used to update the user's status.
// If idle>0 then set status to idle.
-// If game!="" then set game.
-// if otherwise, set status to active, and no game.
-func (s *Session) UpdateStatus(idle int, game string) (err error) {
- return s.UpdateStatusComplex(*newUpdateStatusData(idle, GameTypeGame, game, ""))
+// If name!="" then set game.
+// if otherwise, set status to active, and no activity.
+func (s *Session) UpdateGameStatus(idle int, name string) (err error) {
+ return s.UpdateStatusComplex(*newUpdateStatusData(idle, ActivityTypeGame, name, ""))
}
// UpdateStreamingStatus is used to update the user's streaming status.
// If idle>0 then set status to idle.
-// If game!="" then set game.
-// If game!="" and url!="" then set the status type to streaming with the URL set.
+// If name!="" then set game.
+// If name!="" and url!="" then set the status type to streaming with the URL set.
// if otherwise, set status to active, and no game.
-func (s *Session) UpdateStreamingStatus(idle int, game string, url string) (err error) {
- gameType := GameTypeGame
+func (s *Session) UpdateStreamingStatus(idle int, name string, url string) (err error) {
+ gameType := ActivityTypeGame
if url != "" {
- gameType = GameTypeStreaming
+ gameType = ActivityTypeStreaming
}
- return s.UpdateStatusComplex(*newUpdateStatusData(idle, gameType, game, url))
+ return s.UpdateStatusComplex(*newUpdateStatusData(idle, gameType, name, url))
}
// UpdateListeningStatus is used to set the user to "Listening to..."
-// If game!="" then set to what user is listening to
-// Else, set user to active and no game.
-func (s *Session) UpdateListeningStatus(game string) (err error) {
- return s.UpdateStatusComplex(*newUpdateStatusData(0, GameTypeListening, game, ""))
+// If name!="" then set to what user is listening to
+// Else, set user to active and no activity.
+func (s *Session) UpdateListeningStatus(name string) (err error) {
+ return s.UpdateStatusComplex(*newUpdateStatusData(0, ActivityTypeListening, name, ""))
}
// UpdateStatusComplex allows for sending the raw status update data untouched by discordgo.