glyde/member
A guild member: the account plus everything true of it in one guild only.
roles is the only field every wire shape carries. Interaction resolved
data drops user, deaf and mute; GUILD_MEMBER_UPDATE drops flags.
Types
PATCH /guilds/{g}/members/@me. Every field clears on null.
pub type EditCurrentMember {
EditCurrentMember(
nick: field.Field(String),
avatar: field.Field(image.ImageData),
banner: field.Field(image.ImageData),
bio: field.Field(String),
)
}
Constructors
-
EditCurrentMember( nick: field.Field(String), avatar: field.Field(image.ImageData), banner: field.Field(image.ImageData), bio: field.Field(String), )
PATCH /guilds/{g}/members/{u}.
pub type EditGuildMember {
EditGuildMember(
nick: field.Field(String),
roles: option.Option(List(id.Id(id.Role))),
mute: option.Option(Bool),
deaf: option.Option(Bool),
channel_id: field.Field(id.Id(id.Channel)),
communication_disabled_until: field.Field(String),
bypasses_verification: option.Option(Bool),
)
}
Constructors
-
EditGuildMember( nick: field.Field(String), roles: option.Option(List(id.Id(id.Role))), mute: option.Option(Bool), deaf: option.Option(Bool), channel_id: field.Field(id.Id(id.Channel)), communication_disabled_until: field.Field(String), bypasses_verification: option.Option(Bool), )Arguments
- nick
-
Nullresets the member to their username. - roles
-
The complete set of roles after the edit, not an addition.
- channel_id
-
Nulldisconnects the member from voice. Either way they have to already be in a voice channel. - communication_disabled_until
-
An ISO-8601 instant up to 28 days out,
Nullto lift the timeout. A target with ADMINISTRATOR or one that owns the guild is a 403. - bypasses_verification
-
Discord’s member-flags table marks this the only editable one, so it is the whole
flagsfield. DID_REJOIN, COMPLETED_ONBOARDING and IS_GUEST are read-only and cannot be spelled here.
pub type GuildMember {
GuildMember(
user: option.Option(user.User),
nick: option.Option(String),
avatar: option.Option(String),
banner: option.Option(String),
roles: List(id.Id(id.Role)),
joined_at: field.Field(String),
premium_since: option.Option(String),
deaf: option.Option(Bool),
mute: option.Option(Bool),
flags: option.Option(flags.Flags(GuildMemberFlag)),
pending: option.Option(Bool),
permissions: option.Option(permissions.Effective),
communication_disabled_until: option.Option(String),
)
}
Constructors
-
GuildMember( user: option.Option(user.User), nick: option.Option(String), avatar: option.Option(String), banner: option.Option(String), roles: List(id.Id(id.Role)), joined_at: field.Field(String), premium_since: option.Option(String), deaf: option.Option(Bool), mute: option.Option(Bool), flags: option.Option(flags.Flags(GuildMemberFlag)), pending: option.Option(Bool), permissions: option.Option(permissions.Effective), communication_disabled_until: option.Option(String), )Arguments
- user
-
Absent in resolved data, where the id is the map key, and on the partial member in MESSAGE_CREATE and MESSAGE_UPDATE.
- avatar
-
Per-guild avatar hash, not the account one.
- joined_at
-
Null means invited as a guest; Absent on some partials.
- premium_since
-
ISO-8601, when the member started boosting the guild.
- flags
-
Noneon the shapes that drop the key, GUILD_MEMBER_UPDATE included. Defaulting it to 0 would let a cache merge clear flags nobody cleared. - pending
-
Only the GUILD_ events send this, so absent is not the same as false.
- permissions
-
Interactions only, and scoped to the interaction’s channel, not the guild.
- communication_disabled_until
-
ISO-8601 expiry of a timeout. A past time is not a timeout either, so compare it against the clock instead of testing for null.
pub type GuildMemberFlag {
DidRejoin
CompletedOnboarding
BypassesVerification
StartedOnboarding
IsGuest
StartedHomeActions
CompletedHomeActions
AutomodQuarantinedUsername
DmSettingsUpsellAcknowledged
AutomodQuarantinedGuildTag
}
Constructors
-
DidRejoin -
CompletedOnboarding -
BypassesVerification -
StartedOnboarding -
IsGuest -
StartedHomeActions -
CompletedHomeActions -
AutomodQuarantinedUsername -
DmSettingsUpsellAcknowledged -
AutomodQuarantinedGuildTag
pub type GuildMemberFlags =
flags.Flags(GuildMemberFlag)
Values
pub fn decoder() -> decode.Decoder(GuildMember)
pub fn display_name(member: GuildMember) -> option.Option(String)
The per-guild nickname, then whatever the account itself answers.
pub fn edit_current_member() -> EditCurrentMember
pub fn edit_current_member_body(
payload: EditCurrentMember,
) -> body.Body
pub fn edit_guild_member() -> EditGuildMember
pub fn edit_guild_member_body(
payload: EditGuildMember,
) -> body.Body
pub fn has_flag(
bits: flags.Flags(GuildMemberFlag),
flag: GuildMemberFlag,
) -> Bool
pub fn member_flags(
of chosen: List(GuildMemberFlag),
) -> flags.Flags(GuildMemberFlag)
Build the flags an edit sends. Anything decoded off the wire should be
edited with with_flag instead, so bits this build cannot name survive.
pub const no_member_flags: flags.Flags(GuildMemberFlag)
pub fn with_flag(
bits: flags.Flags(GuildMemberFlag),
flag: GuildMemberFlag,
) -> flags.Flags(GuildMemberFlag)
pub fn without_flag(
bits: flags.Flags(GuildMemberFlag),
flag: GuildMemberFlag,
) -> flags.Flags(GuildMemberFlag)