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)
if err != nil {
return msg, err
}
return msg, nil
}
// Edit channel.
func (c Channel) Edit(ec *EditChannel) error {
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)
if err != nil {
return err
}
return nil
}
// Delete channel.
func (c Channel) Delete() error {
_, err := c.Client.Request("DELETE", "/channels/"+c.Id, []byte{})
if err != nil {
return err
}
return nil
}
// Create a new invite.
// Returns a string (invite code) and error (nil if not exists).
func (c Channel) CreateInvite() (string, error) {
@ -193,14 +178,9 @@ func (c Channel) CreateInvite() (string, error) {
}{}
err = json.Unmarshal(data, dataStruct)
if err != nil {
return dataStruct.InviteCode, err
}
return dataStruct.InviteCode, nil
}
// Set channel permissions for a role.
// Leave role field empty if you want to edit default permissions
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)))
if err != nil {
return err
}
return nil
}

View File

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

View File

@ -108,14 +108,9 @@ 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
}
// Reply to the message.
func (m Message) Reply(mention bool, sm *SendMessage) (*Message, error) {
if sm.Nonce == "" {

16
user.go
View File

@ -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
}