added dm channel support.

This commit is contained in:
5elenay 2021-08-28 18:38:26 +03:00
parent a2e5584d93
commit 10de8762c7
4 changed files with 47 additions and 61 deletions

View File

@ -143,14 +143,9 @@ func (c Channel) FetchMessage(id string) (*Message, error) {
} }
err = json.Unmarshal(resp, msg) err = json.Unmarshal(resp, msg)
if err != nil {
return msg, err return msg, err
} }
return msg, nil
}
// Edit channel. // Edit channel.
func (c Channel) Edit(ec *EditChannel) error { func (c Channel) Edit(ec *EditChannel) error {
data, err := json.Marshal(ec) data, err := json.Marshal(ec)
@ -160,25 +155,15 @@ func (c Channel) Edit(ec *EditChannel) error {
} }
_, err = c.Client.Request("PATCH", "/channels/"+c.Id, data) _, err = c.Client.Request("PATCH", "/channels/"+c.Id, data)
if err != nil {
return err return err
} }
return nil
}
// Delete channel. // Delete channel.
func (c Channel) Delete() error { func (c Channel) Delete() error {
_, err := c.Client.Request("DELETE", "/channels/"+c.Id, []byte{}) _, err := c.Client.Request("DELETE", "/channels/"+c.Id, []byte{})
if err != nil {
return err return err
} }
return nil
}
// Create a new invite. // Create a new invite.
// Returns a string (invite code) and error (nil if not exists). // Returns a string (invite code) and error (nil if not exists).
func (c Channel) CreateInvite() (string, error) { func (c Channel) CreateInvite() (string, error) {
@ -193,14 +178,9 @@ func (c Channel) CreateInvite() (string, error) {
}{} }{}
err = json.Unmarshal(data, dataStruct) err = json.Unmarshal(data, dataStruct)
if err != nil {
return dataStruct.InviteCode, err return dataStruct.InviteCode, err
} }
return dataStruct.InviteCode, nil
}
// Set channel permissions for a role. // Set channel permissions for a role.
// Leave role field empty if you want to edit default permissions // Leave role field empty if you want to edit default permissions
func (c Channel) SetPermissions(role_id string, permissions uint) error { func (c Channel) SetPermissions(role_id string, permissions uint) error {
@ -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))) _, err := c.Client.Request("PUT", "/channels/"+c.Id+"/permissions/"+role_id, []byte(fmt.Sprintf("{\"permissions\":%d}", permissions)))
if err != nil {
return err return err
} }
return nil
}

View File

@ -125,12 +125,8 @@ func (c *Client) FetchChannel(id string) (*Channel, error) {
} }
err = json.Unmarshal(data, channel) err = json.Unmarshal(data, channel)
if err != nil {
return channel, err return channel, err
} }
return channel, nil
}
// Fetch an user by Id. // Fetch an user by Id.
func (c *Client) FetchUser(id string) (*User, error) { func (c *Client) FetchUser(id string) (*User, error) {
@ -144,14 +140,9 @@ func (c *Client) FetchUser(id string) (*User, error) {
} }
err = json.Unmarshal(data, user) err = json.Unmarshal(data, user)
if err != nil {
return user, err return user, err
} }
return user, nil
}
// Fetch a server by Id. // Fetch a server by Id.
func (c *Client) FetchServer(id string) (*Server, error) { func (c *Client) FetchServer(id string) (*Server, error) {
server := &Server{} server := &Server{}
@ -164,14 +155,9 @@ func (c *Client) FetchServer(id string) (*Server, error) {
} }
err = json.Unmarshal(data, server) err = json.Unmarshal(data, server)
if err != nil {
return server, err return server, err
} }
return server, nil
}
// Create a server. // Create a server.
func (c *Client) CreateServer(name, description string) (*Server, error) { func (c *Client) CreateServer(name, description string) (*Server, error) {
server := &Server{} server := &Server{}
@ -184,14 +170,9 @@ func (c *Client) CreateServer(name, description string) (*Server, error) {
} }
err = json.Unmarshal(data, server) err = json.Unmarshal(data, server)
if err != nil {
return server, err return server, err
} }
return server, nil
}
// Auth client user. // Auth client user.
func (c *Client) Auth() error { func (c *Client) Auth() error {
if c.SelfBot == nil { if c.SelfBot == nil {
@ -205,12 +186,31 @@ func (c *Client) Auth() error {
} }
err = json.Unmarshal(resp, c.SelfBot) err = json.Unmarshal(resp, c.SelfBot)
if err != nil {
return err return err
} }
return nil // 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 dmChannels, err
}
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. // Get a channel from cache by Id.

View File

@ -108,14 +108,9 @@ func (m *Message) Edit(content string) error {
// Delete the message. // Delete the message.
func (m Message) Delete() error { func (m Message) Delete() error {
_, err := m.Client.Request("DELETE", "/channels/"+m.ChannelId+"/messages/"+m.Id, []byte{}) _, err := m.Client.Request("DELETE", "/channels/"+m.ChannelId+"/messages/"+m.Id, []byte{})
if err != nil {
return err return err
} }
return nil
}
// Reply to the message. // Reply to the message.
func (m Message) Reply(mention bool, sm *SendMessage) (*Message, error) { func (m Message) Reply(mention bool, sm *SendMessage) (*Message, error) {
if sm.Nonce == "" { if sm.Nonce == "" {

16
user.go
View File

@ -1,6 +1,7 @@
package revoltgo package revoltgo
import ( import (
"encoding/json"
"time" "time"
"github.com/oklog/ulid/v2" "github.com/oklog/ulid/v2"
@ -56,3 +57,18 @@ func (u *User) CalculateCreationDate() error {
func (u User) FormatMention() string { func (u User) FormatMention() string {
return "<@" + u.Id + ">" 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
}