Discord/API: implement changes to permission, allow and deny fields (#141)

This commit is contained in:
Maximilian von Lindern 2020-08-18 02:10:43 +02:00 committed by GitHub
parent af7f413cea
commit a7e9439109
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 9 deletions

View File

@ -167,13 +167,14 @@ func (c *Client) DeleteChannel(channelID discord.ChannelID) error {
return c.FastRequest("DELETE", EndpointChannels+channelID.String())
}
// https://discord.com/developers/docs/resources/channel#edit-channel-permissions-json-params
type EditChannelPermissionData struct {
// Type is either "role" or "member".
Type discord.OverwriteType `json:"type"`
// Allow is a permission bit set for granted permissions.
Allow discord.Permissions `json:"allow"`
Allow discord.Permissions `json:"allow,string"`
// Deny is a permission bit set for denied permissions.
Deny discord.Permissions `json:"deny"`
Deny discord.Permissions `json:"deny,string"`
}
// EditChannelPermission edits the channel's permission overwrites for a user

View File

@ -42,7 +42,7 @@ type CreateRoleData struct {
// Permissions is the bitwise value of the enabled/disabled permissions.
//
// Default: @everyone permissions in guild
Permissions discord.Permissions `json:"permissions,omitempty"`
Permissions discord.Permissions `json:"permissions,omitempty,string"`
// Color is the RGB color value of the role.
//
// Default: 0
@ -98,7 +98,7 @@ type ModifyRoleData struct {
// Name is the name of the role.
Name option.NullableString `json:"name,omitempty"`
// Permissions is the bitwise value of the enabled/disabled permissions.
Permissions *discord.Permissions `json:"permissions,omitempty"`
Permissions *discord.Permissions `json:"permissions,omitempty,string"`
// Permissions is the bitwise value of the enabled/disabled permissions.
Color option.NullableColor `json:"color,omitempty"`
// Hoist specifies whether the role should be displayed separately in the

View File

@ -1,5 +1,7 @@
package discord
import "github.com/diamondburned/arikawa/utils/json"
// https://discord.com/developers/docs/resources/channel#channel-object
type Channel struct {
// ID is the id of this channel.
@ -103,13 +105,37 @@ var (
// https://discord.com/developers/docs/resources/channel#overwrite-object
type Overwrite struct {
// ID is the role or user id.
ID Snowflake `json:"id,string"`
ID Snowflake `json:"id"`
// Type is either "role" or "member".
Type OverwriteType `json:"type"`
// Allow is a permission bit set for granted permissions.
Allow Permissions `json:"allow"`
Allow Permissions `json:"allow,string"`
// Deny is a permission bit set for denied permissions.
Deny Permissions `json:"deny"`
Deny Permissions `json:"deny,string"`
}
// UnmarshalJSON unmarshals the passed json data into the Overwrite.
// This is necessary because Discord has different names for fields when
// sending than receiving.
func (o *Overwrite) UnmarshalJSON(data []byte) (err error) {
var recv struct {
ID Snowflake `json:"id"`
Type OverwriteType `json:"type"`
Allow Permissions `json:"allow_new,string"`
Deny Permissions `json:"deny_new,string"`
}
err = json.Unmarshal(data, &recv)
if err != nil {
return
}
o.ID = recv.ID
o.Type = recv.Type
o.Allow = recv.Allow
o.Deny = recv.Deny
return
}
type OverwriteType string

View File

@ -23,7 +23,7 @@ type Guild struct {
// Permissions are the total permissions for the user in the guild
// (excludes overrides).
Permissions Permissions `json:"permissions,omitempty"`
Permissions Permissions `json:"permissions_new,omitempty,string"`
// VoiceRegion is the voice region id for the guild.
VoiceRegion string `json:"region"`
@ -297,7 +297,7 @@ type Role struct {
Position int `json:"position"`
// Permissions is the permission bit set.
Permissions Permissions `json:"permissions"`
Permissions Permissions `json:"permissions_new,string"`
// Manages specifies whether this role is managed by an integration.
Managed bool `json:"managed"`