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

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

    Null resets the member to their username.

    roles

    The complete set of roles after the edit, not an addition.

    channel_id

    Null disconnects 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, Null to 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 flags field. 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

    None on 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

Values

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.

Search Document