diff --git a/channel.go b/channel.go index 75fecba..7e92229 100644 --- a/channel.go +++ b/channel.go @@ -143,12 +143,7 @@ func (c Channel) FetchMessage(id string) (*Message, error) { } err = json.Unmarshal(resp, msg) - - if err != nil { - return msg, err - } - - return msg, nil + return msg, err } // Edit channel. @@ -160,23 +155,13 @@ func (c Channel) Edit(ec *EditChannel) error { } _, err = c.Client.Request("PATCH", "/channels/"+c.Id, data) - - if err != nil { - return err - } - - return nil + return err } // Delete channel. func (c Channel) Delete() error { _, err := c.Client.Request("DELETE", "/channels/"+c.Id, []byte{}) - - if err != nil { - return err - } - - return nil + return err } // Create a new invite. @@ -193,12 +178,7 @@ func (c Channel) CreateInvite() (string, error) { }{} err = json.Unmarshal(data, dataStruct) - - if err != nil { - return dataStruct.InviteCode, err - } - - return dataStruct.InviteCode, nil + return dataStruct.InviteCode, err } // Set channel permissions for a role. @@ -209,10 +189,5 @@ func (c Channel) SetPermissions(role_id string, permissions uint) error { } _, err := c.Client.Request("PUT", "/channels/"+c.Id+"/permissions/"+role_id, []byte(fmt.Sprintf("{\"permissions\":%d}", permissions))) - - if err != nil { - return err - } - - return nil + return err } diff --git a/client.go b/client.go index 80e8309..2fe3804 100644 --- a/client.go +++ b/client.go @@ -125,11 +125,7 @@ func (c *Client) FetchChannel(id string) (*Channel, error) { } err = json.Unmarshal(data, channel) - - if err != nil { - return channel, err - } - return channel, nil + return channel, err } // Fetch an user by Id. @@ -144,12 +140,7 @@ func (c *Client) FetchUser(id string) (*User, error) { } err = json.Unmarshal(data, user) - - if err != nil { - return user, err - } - - return user, nil + return user, err } // Fetch a server by Id. @@ -164,12 +155,7 @@ func (c *Client) FetchServer(id string) (*Server, error) { } err = json.Unmarshal(data, server) - - if err != nil { - return server, err - } - - return server, nil + return server, err } // Create a server. @@ -184,12 +170,7 @@ func (c *Client) CreateServer(name, description string) (*Server, error) { } err = json.Unmarshal(data, server) - - if err != nil { - return server, err - } - - return server, nil + return server, err } // Auth client user. @@ -205,12 +186,31 @@ func (c *Client) Auth() error { } err = json.Unmarshal(resp, c.SelfBot) + return err +} + +// Fetch all of the DMs. +func (c *Client) FetchDirectMessages() ([]*Channel, error) { + var dmChannels []*Channel + + resp, err := c.Request("GET", "/users/dms", []byte{}) if err != nil { - return err + return dmChannels, err } - return nil + err = json.Unmarshal(resp, &dmChannels) + + if err != nil { + return dmChannels, err + } + + // Prepare channels. + for _, i := range dmChannels { + i.Client = c + } + + return dmChannels, nil } // Get a channel from cache by Id. diff --git a/message.go b/message.go index 31956b3..65776fb 100644 --- a/message.go +++ b/message.go @@ -108,12 +108,7 @@ func (m *Message) Edit(content string) error { // Delete the message. func (m Message) Delete() error { _, err := m.Client.Request("DELETE", "/channels/"+m.ChannelId+"/messages/"+m.Id, []byte{}) - - if err != nil { - return err - } - - return nil + return err } // Reply to the message. diff --git a/user.go b/user.go index 8eab361..992246e 100644 --- a/user.go +++ b/user.go @@ -1,6 +1,7 @@ package revoltgo import ( + "encoding/json" "time" "github.com/oklog/ulid/v2" @@ -56,3 +57,18 @@ func (u *User) CalculateCreationDate() error { func (u User) FormatMention() string { return "<@" + u.Id + ">" } + +// Create a DM with the user. +func (u User) CreateDirectMessage() (*Channel, error) { + dmChannel := &Channel{} + dmChannel.Client = u.Client + + resp, err := u.Client.Request("GET", "/users/"+u.Id+"/dm", []byte{}) + + if err != nil { + return dmChannel, err + } + + err = json.Unmarshal(resp, dmChannel) + return dmChannel, err +}