Noizu.Discord (Noizu.Discord v0.1.0)

Copy Markdown View Source

Discord REST API v10 client for Elixir.

REST-only — no gateway/websocket connection: this library sends requests (messages, threads, reactions, webhooks, interaction callbacks) but does not receive gateway events. Use HTTP interactions (Noizu.Discord.Interactions) to receive slash commands and component clicks.

Every call returns {:ok, term} | {:error, %Noizu.Discord.Error{}} (errors are returned, never raised; pass meta: true for {:ok, term, meta} with rate-limit headers).

Quick start

# config/runtime.exs (optional — DISCORD_BOT_TOKEN is read as a fallback)
config :noizu_discord, :client, token: System.get_env("DISCORD_BOT_TOKEN")

client = Noizu.Discord.client()
{:ok, me} = Noizu.Discord.Users.me(client)

embed =
  Noizu.Discord.Embeds.new()
  |> Noizu.Discord.Embeds.title("Hello")
  |> Noizu.Discord.Embeds.description("From Elixir")

{:ok, _msg} =
  Noizu.Discord.Channels.create_message(client, channel_id, %{
    content: "hi",
    embeds: [embed]
  })

# Long markdown -> Discord content, split at 2000 chars
for part <- markdown |> Noizu.Discord.Markdown.from_markdown() |> Noizu.Discord.Markdown.chunk() do
  Noizu.Discord.Channels.create_message(client, channel_id, %{content: part})
end

# History, lazily (newest first)
client |> Noizu.Discord.Channels.messages_stream(channel_id) |> Enum.take(250)

Modules

ModuleSurface
Noizu.Discord.Clienttoken, base URL, user agent, retry, Req options
Noizu.Discord.Requestrequest engine, retry/rate-limit policy
Noizu.Discord.Users/users/@me, /users/{id}
Noizu.Discord.Guildsguilds, channels, members, /users/@me/guilds
Noizu.Discord.Channelschannels, messages, threads, typing, pins
Noizu.Discord.Reactionsmessage reactions
Noizu.Discord.Webhooksexecute (no bot token), create, list
Noizu.Discord.InteractionsEd25519 verification, callbacks
Noizu.Discord.Embedsembed builders + limit validation
Noizu.Discord.MarkdownGFM conversion + 2000-char chunking
Noizu.Discord.Paginationsnowflake-cursor streams
Noizu.Discord.Errorstructured errors

Summary

Functions

Builds a client — shorthand for Noizu.Discord.Client.new/1.

Functions

client(opts \\ [])

@spec client(keyword()) :: Noizu.Discord.Client.t()

Builds a client — shorthand for Noizu.Discord.Client.new/1.