27 lines
697 B
Elixir
27 lines
697 B
Elixir
defmodule Mithridate.Option.Attachment do
|
|
alias Mithridate.Option
|
|
alias Nostrum.Constants.ApplicationCommandOptionType
|
|
|
|
@behaviour Option
|
|
|
|
@impl Option
|
|
def parse(value, interaction), do: Map.fetch!(interaction.data.resolved.attachments, value)
|
|
|
|
@impl Option
|
|
def new(name, description, options) do
|
|
%Option{
|
|
name: name,
|
|
description: description,
|
|
type: ApplicationCommandOptionType.attachment(),
|
|
required: Keyword.get(options, :required),
|
|
kind: __MODULE__
|
|
}
|
|
end
|
|
|
|
@impl Option
|
|
def to_discord(%Option{} = option) do
|
|
option
|
|
|> Map.take([:name, :description, :type, :required])
|
|
|> Map.replace_lazy(:name, &Atom.to_string/1)
|
|
end
|
|
end
|