Discord: use Enum type for types mentioned in #29

This commit is contained in:
mavolin 2020-05-11 03:26:46 +02:00
parent e522aaef9b
commit c1f942bb92
No known key found for this signature in database
GPG Key ID: D8681218EDF216DF
1 changed files with 63 additions and 16 deletions

View File

@ -1,5 +1,7 @@
package discord
import "github.com/diamondburned/arikawa/utils/json/option"
// Guild.MaxPresences is 5000 when it's 0.
const DefaultMaxPresences = 5000
@ -49,38 +51,83 @@ const (
Banner GuildFeature = "BANNER"
)
type ExplicitFilter uint8
// ExplicitFilter is the explicit content filter level of a guild.
type ExplicitFilter option.Enum
const (
NoContentFilter ExplicitFilter = iota
MembersWithoutRoles
AllMembers
var (
// NullExplicitFilter serialized to JSON null.
// This should only be used on nullable fields.
NullExplicitFilter ExplicitFilter = option.EnumNull
// NoContentFilter disables content filtering for the guild.
NoContentFilter ExplicitFilter = 0
// MembersWithoutRoles filters only members without roles.
MembersWithoutRoles ExplicitFilter = 1
// AllMembers enables content filtering for all members.
AllMembers ExplicitFilter = 2
)
type Notification uint8
func (f *ExplicitFilter) UnmarshalJSON(b []byte) error {
i, err := option.EnumFromJSON(b)
*f = ExplicitFilter(i)
const (
AllMessages Notification = iota
OnlyMentions
return err
}
func (f ExplicitFilter) MarshalJSON() ([]byte, error) { return option.EnumToJSON(option.Enum(f)), nil }
// Notification is the default message notification level of a guild.
type Notification option.Enum
var (
// NullNotification serialized to JSON null.
// This should only be used on nullable fields.
NullNotification Notification = option.EnumNull
// AllMessages sends notifications for all messages.
AllMessages Notification = 0
// OnlyMentions sends notifications only on mention.
OnlyMentions Notification = 1
)
type Verification uint8
func (n *Notification) UnmarshalJSON(b []byte) error {
i, err := option.EnumFromJSON(b)
*n = Notification(i)
const (
NoVerification Verification = iota
return err
}
func (n Notification) MarshalJSON() ([]byte, error) { return option.EnumToJSON(option.Enum(n)), nil }
// Verification is the verification level required for a guild.
type Verification option.Enum
var (
// NullVerification serialized to JSON null.
// This should only be used on nullable fields.
NullVerification Verification = option.EnumNull
// NoVerification required no verification.
NoVerification Verification = 0
// LowVerification requires a verified email
LowVerification
LowVerification Verification = 1
// MediumVerification requires the user be registered for at least 5
// minutes.
MediumVerification
MediumVerification Verification = 2
// HighVerification requires the member be in the server for more than 10
// minutes.
HighVerification
HighVerification Verification = 3
// VeryHighVerification requires the member to have a verified phone
// number.
VeryHighVerification
VeryHighVerification Verification = 4
)
func (v *Verification) UnmarshalJSON(b []byte) error {
i, err := option.EnumFromJSON(b)
*v = Verification(i)
return err
}
func (v Verification) MarshalJSON() ([]byte, error) { return option.EnumToJSON(option.Enum(v)), nil }
// Service is used for guild integrations and user connections.
type Service string