type snowflake = abstract type user = abstract type t = { user: user; ?nick: string option; roles: snowflake list; joined_at: string; deaf: bool; mute: bool; }