holder/lib/mithridate/option/boolean.ex

27 lines
641 B
Elixir

defmodule Mithridate.Option.Boolean do
alias Mithridate.Option
alias Nostrum.Constants.ApplicationCommandOptionType
@behaviour Option
@impl Option
def parse(value, _interaction), do: value
@impl Option
def new(name, description, options) do
%Option{
name: name,
description: description,
type: ApplicationCommandOptionType.boolean(),
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