Add Support of changing user status (#258)
Add Support of changing user status
This commit is contained in:
parent
c6ee0d2dd5
commit
af3fe4842a
3 changed files with 60 additions and 14 deletions
21
restapi.go
21
restapi.go
|
@ -332,6 +332,27 @@ func (s *Session) UserSettings() (st *Settings, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserUpdateStatus update the user status
|
||||||
|
// status : The new status (Actual valid status are 'online','idle','dnd','invisible')
|
||||||
|
func (s *Session) UserUpdateStatus(status Status) (st *Settings, err error) {
|
||||||
|
if status == StatusOffline {
|
||||||
|
err = errors.New("You can't set your Status to offline")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := struct {
|
||||||
|
Status Status `json:"status"`
|
||||||
|
}{status}
|
||||||
|
|
||||||
|
body, err := s.Request("PATCH", EndpointUserSettings("@me"), data)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unmarshal(body, &st)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// UserChannels returns an array of Channel structures for all private
|
// UserChannels returns an array of Channel structures for all private
|
||||||
// channels.
|
// channels.
|
||||||
func (s *Session) UserChannels() (st []*Channel, err error) {
|
func (s *Session) UserChannels() (st []*Channel, err error) {
|
||||||
|
|
|
@ -131,6 +131,17 @@ func TestUserSettings(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUserUpdateStatus(t *testing.T) {
|
||||||
|
if dg == nil {
|
||||||
|
t.Skip("Cannot TestUserSettings, dg not set.")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := dg.UserUpdateStatus(StatusDoNotDisturb)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestLogout tests the Logout() function. This should not return an error.
|
// TestLogout tests the Logout() function. This should not return an error.
|
||||||
func TestLogout(t *testing.T) {
|
func TestLogout(t *testing.T) {
|
||||||
|
|
||||||
|
|
42
structs.go
42
structs.go
|
@ -267,7 +267,7 @@ type VoiceState struct {
|
||||||
// A Presence stores the online, offline, or idle and game status of Guild members.
|
// A Presence stores the online, offline, or idle and game status of Guild members.
|
||||||
type Presence struct {
|
type Presence struct {
|
||||||
User *User `json:"user"`
|
User *User `json:"user"`
|
||||||
Status string `json:"status"`
|
Status Status `json:"status"`
|
||||||
Game *Game `json:"game"`
|
Game *Game `json:"game"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,21 +304,35 @@ type User struct {
|
||||||
|
|
||||||
// A Settings stores data for a specific users Discord client settings.
|
// A Settings stores data for a specific users Discord client settings.
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
RenderEmbeds bool `json:"render_embeds"`
|
RenderEmbeds bool `json:"render_embeds"`
|
||||||
InlineEmbedMedia bool `json:"inline_embed_media"`
|
InlineEmbedMedia bool `json:"inline_embed_media"`
|
||||||
InlineAttachmentMedia bool `json:"inline_attachment_media"`
|
InlineAttachmentMedia bool `json:"inline_attachment_media"`
|
||||||
EnableTtsCommand bool `json:"enable_tts_command"`
|
EnableTtsCommand bool `json:"enable_tts_command"`
|
||||||
MessageDisplayCompact bool `json:"message_display_compact"`
|
MessageDisplayCompact bool `json:"message_display_compact"`
|
||||||
ShowCurrentGame bool `json:"show_current_game"`
|
ShowCurrentGame bool `json:"show_current_game"`
|
||||||
AllowEmailFriendRequest bool `json:"allow_email_friend_request"`
|
ConvertEmoticons bool `json:"convert_emoticons"`
|
||||||
ConvertEmoticons bool `json:"convert_emoticons"`
|
Locale string `json:"locale"`
|
||||||
Locale string `json:"locale"`
|
Theme string `json:"theme"`
|
||||||
Theme string `json:"theme"`
|
GuildPositions []string `json:"guild_positions"`
|
||||||
GuildPositions []string `json:"guild_positions"`
|
RestrictedGuilds []string `json:"restricted_guilds"`
|
||||||
RestrictedGuilds []string `json:"restricted_guilds"`
|
FriendSourceFlags *FriendSourceFlags `json:"friend_source_flags"`
|
||||||
FriendSourceFlags *FriendSourceFlags `json:"friend_source_flags"`
|
Status Status `json:"status"`
|
||||||
|
DetectPlatformAccounts bool `json:"detect_platform_accounts"`
|
||||||
|
DeveloperMode bool `json:"developer_mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Status type defination
|
||||||
|
type Status string
|
||||||
|
|
||||||
|
// Constants for Status with the different current available status
|
||||||
|
const (
|
||||||
|
StatusOnline Status = "online"
|
||||||
|
StatusIdle Status = "idle"
|
||||||
|
StatusDoNotDisturb Status = "dnd"
|
||||||
|
StatusInvisible Status = "invisible"
|
||||||
|
StatusOffline Status = "offline"
|
||||||
|
)
|
||||||
|
|
||||||
// FriendSourceFlags stores ... TODO :)
|
// FriendSourceFlags stores ... TODO :)
|
||||||
type FriendSourceFlags struct {
|
type FriendSourceFlags struct {
|
||||||
All bool `json:"all"`
|
All bool `json:"all"`
|
||||||
|
|
Loading…
Reference in a new issue