]> gitweb.factorcode.org Git - factor.git/commitdiff
discord: adding interactions
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 15 Dec 2023 19:08:27 +0000 (13:08 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Fri, 15 Dec 2023 19:08:27 +0000 (13:08 -0600)
extra/discord/discord.factor

index def11e55a6f7264c45b744c18590864311785e50..daf9e3b477bf9b8ff33efedf626d3d46058a798e 100644 (file)
@@ -65,10 +65,18 @@ TUPLE: discord-bot
     discord-get-request json-request ;
 : discord-post-request ( payload route -- request )
     >discord-url <post-request> add-discord-auth-header ;
+: discord-patch-request ( payload route -- request )
+    >discord-url <patch-request> add-discord-auth-header ;
+: discord-delete-request ( route -- request )
+    >discord-url <delete-request> add-discord-auth-header ;
 : discord-post ( payload route -- json )
     discord-post-request json-request ;
 : discord-post-json ( payload route -- json )
     [ >json ] dip discord-post-request add-json-header json-request ;
+: discord-patch-json ( payload route -- json )
+    [ >json ] dip discord-patch-request add-json-header json-request ;
+: discord-delete-json ( route -- json )
+    discord-delete-request add-json-header json-request ;
 
 : bot-guild-join-uri ( discord-bot-config -- uri )
     [ permissions>> ] [ client-id>> ] [ guild-id>> ] tri
@@ -85,6 +93,26 @@ TUPLE: discord-bot
 : get-discord-channel-pins ( channel-id -- json ) "/channels/%s/pins" sprintf discord-get ;
 : get-discord-channel-messages ( channel-id -- json ) "/channels/%s/messages" sprintf discord-get ;
 : get-discord-channel-message ( channel-id message-id -- json ) "/channels/%s/messages/%s" sprintf discord-get ;
+
+: set-discord-application-commands ( json application-id -- json )
+    "/applications/%s/commands" sprintf discord-post-json ;
+: set-discord-application-guild-commands ( json application-id guild-id -- json )
+    "/applications/%s/guilds/%s/commands" sprintf discord-post-json ;
+
+: delete-discord-application-command ( application-id -- json )
+    "/applications/%s/commands" sprintf discord-delete-json ;
+: delete-discord-application-guild-command ( application-id -- json )
+    "/applications/%s/commands" sprintf discord-delete-json ;
+
+: create-interaction-response ( interaction-id interaction-token -- json )
+    [ H{ { "type" 4 } { "data" "pang" } } clone ] 2dip
+    "/webhooks/%s/%s/messages/callback" sprintf discord-post ;
+
+: get-original-interaction-response ( application-id interaction-token -- json )
+    "/webhooks/%s/%s/messages/@original" sprintf discord-get ;
+
+
+
 : send-message* ( string channel-id -- json )
     [ "content" associate ] dip "/channels/%s/messages" sprintf discord-post-json ;
 : send-message ( string channel-id -- ) send-message* drop ;
@@ -172,6 +200,7 @@ SINGLETONS:
     GUILD_MEMBER_ADD GUILD_MEMBER_REMOVE GUILD_MEMBER_UPDATE GUILD_REMOVE
     GUILD_ROLE_CREATE GUILD_ROLE_DELETE GUILD_ROLE_UPDATE
     GUILD_STICKERS_UPDATE GUILD_UNAVAILABLE GUILD_UPDATE
+    INTERACTION_CREATE
     INVITE_CREATE INVITE_DELETE
     MEMBER_BAN MEMBER_JOIN MEMBER_REMOVE MEMBER_UNBAN MEMBER_UPDATE
     MESSAGE_CREATE MESSAGE_DELETE MESSAGE_EDIT
@@ -274,6 +303,7 @@ M: GUILD_BAN_REMOVE dispatch-message 2drop ;
 M: GUILD_ROLE_CREATE dispatch-message 2drop ;
 M: GUILD_ROLE_UPDATE dispatch-message 2drop ;
 M: GUILD_ROLE_DELETE dispatch-message 2drop ;
+M: INTERACTION_CREATE dispatch-message 2drop ;
 M: INVITE_CREATE dispatch-message 2drop ;
 M: INVITE_DELETE dispatch-message 2drop ;
 M: MEMBER_BAN dispatch-message 2drop ;