Current section
Files
Jump to
Current section
Files
src/discord_gleam@http@guilds.erl
-module(discord_gleam@http@guilds).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/discord_gleam/http/guilds.gleam").
-export([kick_member/4, ban_member/4]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/discord_gleam/http/guilds.gleam", 9).
?DOC(" Kick a member from a server\n").
-spec kick_member(
binary(),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:guild()),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:user()),
binary()
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
kick_member(Token, Guild_id, User_id, Reason) ->
Request = discord_gleam@http@request:new_auth_with_header(
delete,
<<<<<<"/guilds/"/utf8,
(discord_gleam@discord@snowflake:to_string(Guild_id))/binary>>/binary,
"/members/"/utf8>>/binary,
(discord_gleam@discord@snowflake:to_string(User_id))/binary>>,
Token,
{<<"X-Audit-Log-Reason"/utf8>>, Reason}
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Kicked member"/utf8>>),
{ok, nil};
429 ->
logging:log(
error,
<<"Failed to kick member: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(error, <<"Failed to kick member"/utf8>>),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(error, <<"Failed to kick member"/utf8>>),
{error, {http_error, Err}}
end.
-file("src/discord_gleam/http/guilds.gleam", 58).
?DOC(" Ban a member from a server\n").
-spec ban_member(
binary(),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:guild()),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:user()),
binary()
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
ban_member(Token, Guild_id, User_id, Reason) ->
Request = discord_gleam@http@request:new_auth_with_header(
put,
<<<<<<"/guilds/"/utf8,
(discord_gleam@discord@snowflake:to_string(Guild_id))/binary>>/binary,
"/bans/"/utf8>>/binary,
(discord_gleam@discord@snowflake:to_string(User_id))/binary>>,
Token,
{<<"X-Audit-Log-Reason"/utf8>>, Reason}
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Banned member"/utf8>>),
{ok, nil};
_ ->
logging:log(error, <<"Failed to ban member"/utf8>>),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(error, <<"Failed to ban member"/utf8>>),
{error, {http_error, Err}}
end.