@@ -7,6 +7,7 @@ import { logger } from '../utils/logger.js';
77import { InteractionHelper } from '../utils/interactionHelper.js' ;
88import { checkRateLimit } from '../utils/rateLimiter.js' ;
99import { replyUserError , ErrorTypes } from '../utils/errorHandler.js' ;
10+ import { getTicketPermissionContext } from '../utils/ticketPermissions.js' ;
1011
1112function escapeHtml ( text ) {
1213 if ( ! text ) return '' ;
@@ -30,6 +31,17 @@ async function ensureGuildContext(interaction) {
3031 return false ;
3132}
3233
34+ async function replyPermissionCheckFailure ( interaction , permissionCheck ) {
35+ let type = ErrorTypes . UNKNOWN ;
36+ if ( permissionCheck . error === 'Permission Denied' ) {
37+ type = ErrorTypes . PERMISSION ;
38+ } else if ( permissionCheck . error === 'Request Timeout' ) {
39+ type = ErrorTypes . RATE_LIMIT ;
40+ }
41+
42+ await replyUserError ( interaction , { type, message : permissionCheck . details } ) ;
43+ }
44+
3345async function checkTicketPermissionWithTimeout ( interaction , client , actionLabel , options = { } , timeoutMs = 2500 ) {
3446 const { allowTicketCreator = false } = options ;
3547
@@ -185,9 +197,7 @@ const closeTicketHandler = {
185197 ) ;
186198
187199 if ( ! permissionCheck . success ) {
188- if ( ! interaction . replied && ! interaction . deferred ) {
189- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
190- }
200+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
191201 return ;
192202 }
193203
@@ -232,9 +242,7 @@ const closeTicketModalHandler = {
232242 ) ;
233243
234244 if ( ! permissionCheck . success ) {
235- if ( ! interaction . replied && ! interaction . deferred ) {
236- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
237- }
245+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
238246 return ;
239247 }
240248
@@ -280,9 +288,7 @@ const claimTicketHandler = {
280288 ) ;
281289
282290 if ( ! permissionCheck . success ) {
283- if ( ! interaction . replied && ! interaction . deferred ) {
284- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
285- }
291+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
286292 return ;
287293 }
288294
@@ -325,9 +331,7 @@ const priorityTicketHandler = {
325331 ) ;
326332
327333 if ( ! permissionCheck . success ) {
328- if ( ! interaction . replied && ! interaction . deferred ) {
329- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
330- }
334+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
331335 return ;
332336 }
333337
@@ -376,9 +380,7 @@ const pinTicketHandler = {
376380 ) ;
377381
378382 if ( ! permissionCheck . success ) {
379- if ( ! interaction . replied && ! interaction . deferred ) {
380- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
381- }
383+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
382384 return ;
383385 }
384386
@@ -485,9 +487,7 @@ const unclaimTicketHandler = {
485487 ) ;
486488
487489 if ( ! permissionCheck . success ) {
488- if ( ! interaction . replied && ! interaction . deferred ) {
489- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
490- }
490+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
491491 return ;
492492 }
493493
@@ -531,9 +531,7 @@ const reopenTicketHandler = {
531531 ) ;
532532
533533 if ( ! permissionCheck . success ) {
534- if ( ! interaction . replied && ! interaction . deferred ) {
535- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
536- }
534+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
537535 return ;
538536 }
539537
@@ -582,9 +580,7 @@ const deleteTicketHandler = {
582580 ) ;
583581
584582 if ( ! permissionCheck . success ) {
585- if ( ! interaction . replied && ! interaction . deferred ) {
586- await replyUserError ( interaction , { type : ErrorTypes . PERMISSION , message : permissionCheck . details } ) ;
587- }
583+ await replyPermissionCheckFailure ( interaction , permissionCheck ) ;
588584 return ;
589585 }
590586
0 commit comments