-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, unban_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. -file("src/discord_gleam/http/guilds.gleam", 101). ?DOC(" Unban a member from a server\n"). -spec unban_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()}. unban_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, "/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, <<"Unbanned member"/utf8>>), {ok, nil}; 429 -> logging:log( error, <<"Failed to unban member: rate limited"/utf8>> ), {error, discord_gleam@http@request:extract_ratelimit_error(Resp)}; _ -> logging:log(error, <<"Failed to unban member"/utf8>>), {error, {api_error, erlang:element(2, Resp), erlang:element(4, Resp)}} end; {error, Err} -> logging:log(error, <<"Failed to unban member"/utf8>>), {error, {http_error, Err}} end.