@@ -13,6 +13,7 @@ import {
1313 DELETE_ALL_CHANNELS , deleteAllChannelsCommand ,
1414 MOVE , moveCommand ,
1515 LOCK , UNLOCK , lockCommand ,
16+ processCommands ,
1617} from './commands.js' ;
1718import { createInteractionResponse , editOriginalInteractionResponse } from './request.js' ;
1819
@@ -43,7 +44,7 @@ async function verifyDiscordRequest(request, env) {
4344 return { interaction : JSON . parse ( body ) , isValid : true } ;
4445 }
4546
46- async function processDiscordRequest ( request , env ) {
47+ async function processDiscordRequest ( request , env , ctx ) {
4748 try {
4849 const { isValid, interaction } = await verifyDiscordRequest (
4950 request ,
@@ -87,70 +88,18 @@ async function processDiscordRequest(request, env) {
8788 }
8889 )
8990 }
90- try {
91- await createInteractionResponse ( env , interaction , {
91+ ctx . waitUntil (
92+ processCommands (
93+ env ,
94+ interaction ,
95+ )
96+ ) ;
97+ return new JsonResponse (
98+ {
9299 type : InteractionResponseType . DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE ,
93100 data : { flags : InteractionResponseFlags . EPHEMERAL }
94- } ) ;
95- switch ( interaction . data . name . toLowerCase ( ) ) {
96- case SET_LIMIT . name . toLowerCase ( ) : {
97- await setLimitCommand ( env , interaction ) ;
98- return new Response ( null , { status : 202 } ) ;
99- }
100- case SET_CHANNEL_LIMIT . name . toLowerCase ( ) : {
101- await setChannelLimitCommand ( env , interaction ) ;
102- return new Response ( null , { status : 202 } ) ;
103- }
104- case CREATE_CHANNEL . name . toLowerCase ( ) : {
105- await createChannelCommand ( env , interaction ) ;
106- return new Response ( null , { status : 202 } ) ;
107- }
108- case DELETE_CHANNEL . name . toLowerCase ( ) : {
109- await deleteChannelCommand ( env , interaction ) ;
110- return new Response ( null , { status : 202 } ) ;
111- }
112- case CREATE_CHANNELS . name . toLowerCase ( ) : {
113- await createChannelsCommand ( env , interaction ) ;
114- return new Response ( null , { status : 202 } ) ;
115- }
116- case DELETE_ALL_CHANNELS . name . toLowerCase ( ) : {
117- await deleteAllChannelsCommand ( env , interaction ) ;
118- return new Response ( null , { status : 202 } ) ;
119- }
120- case MOVE . name . toLowerCase ( ) : {
121- await moveCommand ( env , interaction ) ;
122- return new Response ( null , { status : 202 } ) ;
123- }
124- case LOCK . name . toLowerCase ( ) : {
125- await lockCommand ( env , interaction , true ) ;
126- return new Response ( null , { status : 202 } ) ;
127- }
128- case UNLOCK . name . toLowerCase ( ) : {
129- await lockCommand ( env , interaction , false ) ;
130- return new Response ( null , { status : 202 } ) ;
131- }
132- default : {
133- await editOriginalInteractionResponse ( env , interaction , {
134- type : InteractionResponseType . CHANNEL_MESSAGE_WITH_SOURCE ,
135- data : {
136- content : "❌ Unknown Command" ,
137- flags : InteractionResponseFlags . EPHEMERAL ,
138- }
139- } ) ;
140- return new Response ( null , { status : 202 } ) ;
141- }
142101 }
143- } catch ( error ) {
144- console . error ( 'Error processing request:' , error ) ;
145- await editOriginalInteractionResponse ( env , interaction , {
146- type : InteractionResponseType . CHANNEL_MESSAGE_WITH_SOURCE ,
147- data : {
148- content : "❌ An error occurred while processing your request." ,
149- flags : InteractionResponseFlags . EPHEMERAL ,
150- }
151- } ) ;
152- return new Response ( null , { status : 202 } ) ;
153- }
102+ ) ;
154103 }
155104
156105 console . error ( 'Unknown Type' ) ;
@@ -162,9 +111,9 @@ async function processDiscordRequest(request, env) {
162111 }
163112} ;
164113
165- async function handleFetch ( request , env ) {
114+ async function handleFetch ( request , env , ctx ) {
166115 if ( request . method === 'POST' ) {
167- return await processDiscordRequest ( request , env ) ;
116+ return await processDiscordRequest ( request , env , ctx ) ;
168117 }
169118 return new Response ( 'Method Not Allowed' , { status : 405 } ) ;
170119}
0 commit comments