Current section

Files

Jump to
discord_gleam src discord_gleam@http@interactions.erl
Raw

src/discord_gleam@http@interactions.erl

-module(discord_gleam@http@interactions).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/discord_gleam/http/interactions.gleam").
-export([send_response/2, edit_original/2, delete_original/1, send_followup/2, edit_followup/3, delete_followup/2]).
-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/interactions.gleam", 12).
?DOC(" Send a basic text reply to an interaction\n").
-spec send_response(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data(),
binary()
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
send_response(Interaction, Data) ->
Request = discord_gleam@http@request:new_with_body(
post,
<<<<<<<<"/interactions/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(2, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>/binary,
"/callback"/utf8>>,
Data
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Sent interaction response"/utf8>>),
{ok, nil};
429 ->
logging:log(
error,
<<"Failed to send interaction response: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to send Interaction Response"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(
error,
<<"Error when sending Interaction Response"/utf8>>
),
{error, {http_error, Err}}
end.
-file("src/discord_gleam/http/interactions.gleam", 62).
?DOC(
" Edit the initial response to an interaction. \\\n"
" For example used after deffering the response, to then send a reply\n"
).
-spec edit_original(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data(),
binary()
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
edit_original(Interaction, Data) ->
Request = discord_gleam@http@request:new_with_body(
patch,
<<<<<<<<"/webhooks/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(3, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>/binary,
"/messages/@original"/utf8>>,
Data
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Edited interaction response"/utf8>>),
{ok, nil};
429 ->
logging:log(
error,
<<"Failed to edit interaction response: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to edit Interaction Response"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(
error,
<<"Error when editing Interaction Response"/utf8>>
),
{error, {http_error, Err}}
end.
-file("src/discord_gleam/http/interactions.gleam", 112).
?DOC(" Delete the original response to an interaction.\n").
-spec delete_original(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data()
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
delete_original(Interaction) ->
Request = discord_gleam@http@request:new(
delete,
<<<<<<<<"/webhooks/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(3, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>/binary,
"/messages/@original"/utf8>>
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Deleted interaction response"/utf8>>),
{ok, nil};
429 ->
logging:log(
error,
<<"Failed to delete interaction response: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to delete Interaction Response"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(
error,
<<"Error when deleting interaction response"/utf8>>
),
{error, {http_error, Err}}
end.
-file("src/discord_gleam/http/interactions.gleam", 160).
?DOC(" Send a separate followup message to an interaction.\n").
-spec send_followup(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data(),
discord_gleam@types@message:message()
) -> {ok, discord_gleam@types@message_send_response:message_send_response()} |
{error, discord_gleam@internal@error:discord_error()}.
send_followup(Interaction, Message) ->
Request = discord_gleam@http@request:new_with_body(
post,
<<<<<<"/webhooks/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(3, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>,
discord_gleam@types@message:to_string(Message)
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Sent followup message"/utf8>>),
Response = discord_gleam@types@message_send_response:from_json_string(
erlang:element(4, Resp)
),
case Response of
{ok, Response@1} ->
{ok, Response@1};
{error, Err} ->
logging:log(
error,
<<"Failed to decode followup message response"/utf8>>
),
{error, Err}
end;
429 ->
logging:log(
error,
<<"Failed to send followup message: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to send followup message"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err@1} ->
logging:log(error, <<"Error when sending followup message"/utf8>>),
{error, {http_error, Err@1}}
end.
-file("src/discord_gleam/http/interactions.gleam", 224).
?DOC(" Edit a followup to an interaction.\n").
-spec edit_followup(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data(),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:message()),
discord_gleam@types@message:message()
) -> {ok, discord_gleam@types@message_send_response:message_send_response()} |
{error, discord_gleam@internal@error:discord_error()}.
edit_followup(Interaction, Message_id, Message) ->
Request = discord_gleam@http@request:new_with_body(
patch,
<<<<<<<<<<"/webhooks/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(3, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>/binary,
"/messages/"/utf8>>/binary,
(discord_gleam@discord@snowflake:to_string(Message_id))/binary>>,
discord_gleam@types@message:to_string(Message)
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
200 ->
logging:log(debug, <<"Edited followup message"/utf8>>),
Response = discord_gleam@types@message_send_response:from_json_string(
erlang:element(4, Resp)
),
case Response of
{ok, Response@1} ->
{ok, Response@1};
{error, Err} ->
logging:log(
error,
<<"Failed to decode followup message response"/utf8>>
),
{error, Err}
end;
429 ->
logging:log(
error,
<<"Failed to edit followup message: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to edit followup message"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err@1} ->
logging:log(error, <<"Error when editing followup message"/utf8>>),
{error, {http_error, Err@1}}
end.
-file("src/discord_gleam/http/interactions.gleam", 291).
?DOC(" Delete a followup to an interaction.\n").
-spec delete_followup(
discord_gleam@ws@packets@interaction_create:interaction_create_packet_data(),
discord_gleam@discord@snowflake:snowflake(discord_gleam@discord@snowflake:message())
) -> {ok, nil} | {error, discord_gleam@internal@error:discord_error()}.
delete_followup(Interaction, Message_id) ->
Request = discord_gleam@http@request:new(
delete,
<<<<<<<<<<"/webhooks/"/utf8,
(discord_gleam@discord@snowflake:to_string(
erlang:element(3, Interaction)
))/binary>>/binary,
"/"/utf8>>/binary,
(erlang:element(11, Interaction))/binary>>/binary,
"/messages/"/utf8>>/binary,
(discord_gleam@discord@snowflake:to_string(Message_id))/binary>>
),
case gleam@httpc:send(Request) of
{ok, Resp} ->
case erlang:element(2, Resp) of
204 ->
logging:log(debug, <<"Deleted followup message"/utf8>>),
{ok, nil};
429 ->
logging:log(
error,
<<"Failed to delete followup message: rate limited"/utf8>>
),
{error,
discord_gleam@http@request:extract_ratelimit_error(Resp)};
_ ->
logging:log(
error,
<<"Failed to delete followup message"/utf8>>
),
{error,
{api_error,
erlang:element(2, Resp),
erlang:element(4, Resp)}}
end;
{error, Err} ->
logging:log(error, <<"Error when deleting followup message"/utf8>>),
{error, {http_error, Err}}
end.