-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.