Noizu.Discord.Channels (Noizu.Discord v0.1.0)

Copy Markdown View Source

Channel, message, thread, typing and pin endpoints.

Message params (create_message/4, edit_message/5) are passed through as JSON: content, embeds, components, message_reference, allowed_mentions, flags, … Build embeds with Noizu.Discord.Embeds and convert/split long markdown with Noizu.Discord.Markdown.

Summary

Functions

POST /channels/{channel.id}/messages — send a message.

DELETE /channels/{channel.id}/messages/{message.id} — delete a message ({:ok, nil}).

PATCH /channels/{channel.id}/messages/{message.id} — edit a message.

GET /channels/{channel.id} — a channel (or thread) by id.

GET /channels/{channel.id}/messages/{message.id} — one message.

GET /guilds/{guild.id}/threads/active — all active threads in a guild (%{"threads" => [...], "members" => [...]}). Note the argument is a guild id: API v10 has no per-channel active-threads endpoint.

GET /channels/{channel.id}/messages — one page of messages (newest first). Query opts: :before, :after, :around (mutually exclusive), :limit (1–100).

GET /channels/{channel.id}/messages — lazy stream over history.

PUT /channels/{channel.id}/messages/pins/{message.id} — pin a message ({:ok, nil}). Accepts :reason (audit log).

POST /channels/{channel.id}/threads — start a thread without a message. params: %{name, type, auto_archive_duration, invitable, rate_limit_per_user} (forum/media channels also take message).

POST /channels/{channel.id}/messages/{message.id}/threads — start a thread from a message. params: %{name, auto_archive_duration, rate_limit_per_user}.

POST /channels/{channel.id}/typing — trigger the typing indicator ({:ok, nil}).

Functions

create_message(client, channel_id, params, opts \\ [])

POST /channels/{channel.id}/messages — send a message.

params: %{content, embeds, components, message_reference, allowed_mentions, …} (atom or string keys). Content is limited to 2000 characters — see Noizu.Discord.Markdown.chunk/2.

delete_message(client, channel_id, message_id, opts \\ [])

DELETE /channels/{channel.id}/messages/{message.id} — delete a message ({:ok, nil}).

edit_message(client, channel_id, message_id, params, opts \\ [])

PATCH /channels/{channel.id}/messages/{message.id} — edit a message.

get(client, channel_id, opts \\ [])

GET /channels/{channel.id} — a channel (or thread) by id.

get_message(client, channel_id, message_id, opts \\ [])

GET /channels/{channel.id}/messages/{message.id} — one message.

list_active_threads(client, guild_id, opts \\ [])

@spec list_active_threads(Noizu.Discord.Client.t(), String.t(), keyword()) ::
  Noizu.Discord.Request.result()

GET /guilds/{guild.id}/threads/active — all active threads in a guild (%{"threads" => [...], "members" => [...]}). Note the argument is a guild id: API v10 has no per-channel active-threads endpoint.

messages(client, channel_id, opts \\ [])

GET /channels/{channel.id}/messages — one page of messages (newest first). Query opts: :before, :after, :around (mutually exclusive), :limit (1–100).

messages_stream(client, channel_id, opts \\ [])

@spec messages_stream(Noizu.Discord.Client.t(), String.t(), keyword()) ::
  Enumerable.t()

GET /channels/{channel.id}/messages — lazy stream over history.

Default walks backwards from the newest message (before paging; pass :before to start below a given id). Pass :after to walk forwards from that id instead. :limit is the page size (default 100). :around is not supported for streams.

pin_message(client, channel_id, message_id, opts \\ [])

PUT /channels/{channel.id}/messages/pins/{message.id} — pin a message ({:ok, nil}). Accepts :reason (audit log).

start_thread(client, channel_id, params, opts \\ [])

POST /channels/{channel.id}/threads — start a thread without a message. params: %{name, type, auto_archive_duration, invitable, rate_limit_per_user} (forum/media channels also take message).

start_thread_from_message(client, channel_id, message_id, params, opts \\ [])

@spec start_thread_from_message(
  Noizu.Discord.Client.t(),
  String.t(),
  String.t(),
  map(),
  keyword()
) ::
  Noizu.Discord.Request.result()

POST /channels/{channel.id}/messages/{message.id}/threads — start a thread from a message. params: %{name, auto_archive_duration, rate_limit_per_user}.

typing(client, channel_id, opts \\ [])

POST /channels/{channel.id}/typing — trigger the typing indicator ({:ok, nil}).