EDA.Cache.Member (EDA v0.3.0)

Copy Markdown View Source

ETS-based cache for Discord guild members.

Stores guild-specific member data (nickname, roles, join date, etc.) separately from the global user cache. Keyed by {guild_id, user_id}.

Automatically populated from GUILD_CREATE, GUILD_MEMBER_ADD/UPDATE/REMOVE, and VOICE_STATE_UPDATE events (which include a member object).

Summary

Functions

Returns a specification to start this module under a supervisor.

Returns the total number of cached members.

Returns the number of members for a guild.

Creates or replaces a member in the cache.

Removes a member from the cache.

Removes all members for a guild.

Gets all members for a guild.

Gets a member in a guild.

Updates a member in the cache (merges fields).

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

count()

@spec count() :: non_neg_integer()

Returns the total number of cached members.

count_for_guild(guild_id)

@spec count_for_guild(String.t() | integer()) :: non_neg_integer()

Returns the number of members for a guild.

create(guild_id, member)

@spec create(String.t(), map()) :: map()

Creates or replaces a member in the cache.

delete(guild_id, user_id)

@spec delete(String.t() | integer(), String.t() | integer()) :: :ok

Removes a member from the cache.

delete_guild(guild_id)

@spec delete_guild(String.t() | integer()) :: :ok

Removes all members for a guild.

for_guild(guild_id)

@spec for_guild(String.t() | integer()) :: [map()]

Gets all members for a guild.

get(guild_id, user_id)

@spec get(String.t() | integer(), String.t() | integer()) :: map() | nil

Gets a member in a guild.

start_link(opts)

update(guild_id, user_id, updates)

@spec update(String.t(), String.t(), map()) :: map() | nil

Updates a member in the cache (merges fields).