EDA.API.Member (EDA v0.3.0)

Copy Markdown View Source

REST API endpoints for Discord guild members.

All functions return {:ok, result} or {:error, reason}.

Summary

Functions

Adds a role to a guild member.

Gets a member of a guild.

Lists members of a guild.

Moves a member to a different voice channel.

Removes a member from a guild (kick).

Removes a role from a guild member.

Searches guild members by username/nickname.

Returns a lazy Stream that paginates through all members of a guild.

Functions

add_role(guild_id, user_id, role_id, opts \\ [])

@spec add_role(
  String.t() | integer(),
  String.t() | integer(),
  String.t() | integer(),
  keyword()
) :: :ok | {:error, term()}

Adds a role to a guild member.

get(guild_id, user_id)

@spec get(String.t() | integer(), String.t() | integer()) ::
  {:ok, map()} | {:error, term()}

Gets a member of a guild.

list(guild_id, opts \\ [])

@spec list(
  String.t() | integer(),
  keyword()
) :: {:ok, [map()]} | {:error, term()}

Lists members of a guild.

modify(guild_id, user_id, payload, opts \\ [])

@spec modify(String.t() | integer(), String.t() | integer(), map(), keyword()) ::
  {:ok, map()} | {:error, term()}

Modifies a guild member.

move_voice(guild_id, user_id, channel_id)

@spec move_voice(
  String.t() | integer(),
  String.t() | integer(),
  String.t() | integer() | nil
) :: {:ok, map()} | {:error, term()}

Moves a member to a different voice channel.

Pass nil as channel_id to disconnect the user from voice.

Examples

EDA.API.Member.move_voice(guild_id, user_id, new_channel_id)
EDA.API.Member.move_voice(guild_id, user_id, nil)  # disconnect

remove(guild_id, user_id, opts \\ [])

@spec remove(String.t() | integer(), String.t() | integer(), keyword()) ::
  :ok | {:error, term()}

Removes a member from a guild (kick).

remove_role(guild_id, user_id, role_id, opts \\ [])

@spec remove_role(
  String.t() | integer(),
  String.t() | integer(),
  String.t() | integer(),
  keyword()
) :: :ok | {:error, term()}

Removes a role from a guild member.

search(guild_id, query, opts \\ [])

@spec search(String.t() | integer(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, term()}

Searches guild members by username/nickname.

stream(guild_id, opts \\ [])

@spec stream(
  String.t() | integer(),
  keyword()
) :: Enumerable.t()

Returns a lazy Stream that paginates through all members of a guild.

Uses after-only pagination (Discord constraint for the members endpoint).

Options

  • :per_page — members per request (1-1000, default 1000)
  • :after — start after this user ID

Examples

EDA.API.Member.stream(guild_id) |> Enum.to_list()
EDA.API.Member.stream(guild_id) |> Stream.filter(&(&1["user"]["bot"])) |> Enum.to_list()