cordo 1.9.2 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import { InteractionApplicationCommandCallbackData } from './types/custom';
2
2
  import { GenericInteraction } from './types/base';
3
+ import { InteractionCallbackFollowup } from './index';
3
4
  export default class CordoAPI {
4
- static interactionCallback(i: GenericInteraction, type: number, data?: InteractionApplicationCommandCallbackData, contextId?: string, useRaw?: boolean): void;
5
+ static interactionCallback(i: GenericInteraction, type: number, data?: InteractionApplicationCommandCallbackData, contextId?: string, useRaw?: boolean): Promise<InteractionCallbackFollowup>;
6
+ private static handleCallbackResponse;
5
7
  /**
6
8
  * Transforms the shorthand way of writing into proper discord api compatible objects
7
9
  */
package/dist/api.js CHANGED
@@ -3,40 +3,62 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const axios_1 = require("axios");
4
4
  const permission_strings_1 = require("./lib/permission-strings");
5
5
  const const_1 = require("./types/const");
6
+ const const_2 = require("./types/const");
6
7
  const index_1 = require("./index");
7
8
  class CordoAPI {
8
- static interactionCallback(i, type, data, contextId, useRaw) {
9
+ static async interactionCallback(i, type, data, contextId, useRaw) {
9
10
  if (!useRaw)
10
11
  CordoAPI.normaliseData(data, i, contextId);
11
12
  if (data?.components)
12
13
  i._answerComponents = data.components;
13
14
  if (!i._answered) {
14
15
  i._answered = true;
15
- axios_1.default
16
- .post(`https://discord.com/api/v8/interactions/${i.id}/${i.token}/callback`, { type, data }, { validateStatus: null })
17
- .then((res) => {
18
- if (index_1.default._data.middlewares.apiResponseHandler) {
19
- index_1.default._data.middlewares.apiResponseHandler(res);
16
+ if (!!i._httpCallback) {
17
+ i._httpCallback({ type, data });
18
+ }
19
+ else {
20
+ const res = await axios_1.default.post(`https://discord.com/api/v9/interactions/${i.id}/${i.token}/callback`, { type, data }, { validateStatus: null });
21
+ CordoAPI.handleCallbackResponse(res, type, data);
22
+ }
23
+ }
24
+ else {
25
+ switch (type) {
26
+ case const_2.InteractionCallbackType.PONG: break;
27
+ case const_2.InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: break;
28
+ case const_2.InteractionCallbackType.DEFERRED_UPDATE_MESSAGE: break;
29
+ case const_2.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE: {
30
+ const res = await axios_1.default.post(`https://discord.com/api/v9/webhooks/${index_1.default._data.config.botId}/${i.token}`, data, { validateStatus: null });
31
+ CordoAPI.handleCallbackResponse(res, type, data);
32
+ break;
20
33
  }
21
- else if (res.status >= 300) {
22
- index_1.default._data.logger.warn('Interaction callback failed with error:');
23
- index_1.default._data.logger.warn(JSON.stringify(res.data, null, 2));
24
- index_1.default._data.logger.warn('Request payload:');
25
- index_1.default._data.logger.warn(JSON.stringify({ type, data }, null, 2));
34
+ case const_2.InteractionCallbackType.UPDATE_MESSAGE: {
35
+ const res = await axios_1.default.patch(`https://discord.com/api/v9/webhooks/${index_1.default._data.config.botId}/${i.token}/messages/@original`, data, { validateStatus: null });
36
+ CordoAPI.handleCallbackResponse(res, type, data);
37
+ break;
26
38
  }
27
- });
28
- return;
39
+ }
29
40
  }
30
- switch (type) {
31
- case const_1.InteractionCallbackType.PONG: break;
32
- case const_1.InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: break;
33
- case const_1.InteractionCallbackType.DEFERRED_UPDATE_MESSAGE: break;
34
- case const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE:
35
- axios_1.default.post(`https://discord.com/api/v8/webhooks/${index_1.default._data.config.botId}/${i.token}`, data);
36
- break;
37
- case const_1.InteractionCallbackType.UPDATE_MESSAGE:
38
- axios_1.default.patch(`https://discord.com/api/v8/webhooks/${index_1.default._data.config.botId}/${i.token}/messages/@original`, data);
39
- break;
41
+ return {
42
+ async getMessage() {
43
+ const res = await axios_1.default.get(`https://discord.com/api/v8/webhooks/${index_1.default._data.config.botId}/${i.token}/messages/@original`, { validateStatus: null });
44
+ if (res.status !== 200)
45
+ return null;
46
+ return res.data;
47
+ },
48
+ edit(editData, editUseRaw = useRaw) {
49
+ CordoAPI.interactionCallback(i, const_2.InteractionCallbackType.UPDATE_MESSAGE, editData, contextId, editUseRaw);
50
+ }
51
+ };
52
+ }
53
+ static handleCallbackResponse(res, type, data) {
54
+ if (index_1.default._data.middlewares.apiResponseHandler) {
55
+ index_1.default._data.middlewares.apiResponseHandler(res);
56
+ }
57
+ else if (res.status >= 300) {
58
+ index_1.default._data.logger.warn('Interaction callback failed with error:');
59
+ index_1.default._data.logger.warn(JSON.stringify(res.data, null, 2));
60
+ index_1.default._data.logger.warn('Request payload:');
61
+ index_1.default._data.logger.warn(JSON.stringify({ type, data }, null, 2));
40
62
  }
41
63
  }
42
64
  /**
@@ -47,6 +69,7 @@ class CordoAPI {
47
69
  return;
48
70
  // explicitly not using this. in this function due to unwanted side-effects in lambda functions
49
71
  index_1.default._data.middlewares.interactionCallback.forEach(f => f(data, i.guildData));
72
+ const isEmphemeral = (data.flags & const_1.InteractionResponseFlags.EPHEMERAL) !== 0;
50
73
  if (!data.content)
51
74
  data.content = '';
52
75
  if (data.description || data.title) {
@@ -63,36 +86,43 @@ class CordoAPI {
63
86
  delete data.description;
64
87
  delete data.title;
65
88
  }
66
- if (data.components?.length && data.components[0].type !== const_1.ComponentType.ROW) {
89
+ if (data.components?.length && data.components[0].type !== const_2.ComponentType.ROW) {
67
90
  const rows = [];
68
91
  let newlineFlag = true;
69
92
  for (const comp of data.components) {
70
93
  if (comp.visible === false)
71
94
  continue; // === false to not catch any null or undefined
72
- if (comp.type !== const_1.ComponentType.LINE_BREAK && !!comp.custom_id) {
95
+ if (comp.type !== const_2.ComponentType.LINE_BREAK && !!comp.custom_id) {
96
+ const hasAccessEveryoneFlag = comp.flags?.includes(const_2.InteractionComponentFlag.ACCESS_EVERYONE);
97
+ if (isEmphemeral && !hasAccessEveryoneFlag) {
98
+ if (!comp.flags)
99
+ comp.flags = [];
100
+ comp.flags.push(const_2.InteractionComponentFlag.ACCESS_EVERYONE);
101
+ }
102
+ ;
73
103
  comp.custom_id = `${contextId ?? ''}::${comp.custom_id}:${comp.flags?.join('') ?? ''}`;
74
- if (comp.flags?.length && !!i.member && !comp.flags.includes(const_1.InteractionComponentFlag.ACCESS_EVERYONE)) {
104
+ if (comp.flags?.length && !!i.member && !hasAccessEveryoneFlag) {
75
105
  const perms = BigInt(i.member.permissions);
76
- if (comp.flags.includes(const_1.InteractionComponentFlag.ACCESS_ADMIN) && !permission_strings_1.default.containsAdmin(perms)) {
77
- if (comp.flags.includes(const_1.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
106
+ if (comp.flags.includes(const_2.InteractionComponentFlag.ACCESS_ADMIN) && !permission_strings_1.default.containsAdmin(perms)) {
107
+ if (comp.flags.includes(const_2.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
78
108
  comp.type = null;
79
109
  else
80
110
  comp.disabled = true;
81
111
  }
82
- else if (comp.flags.includes(const_1.InteractionComponentFlag.ACCESS_MANAGE_SERVER) && !permission_strings_1.default.containsManageServer(perms)) {
83
- if (comp.flags.includes(const_1.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
112
+ else if (comp.flags.includes(const_2.InteractionComponentFlag.ACCESS_MANAGE_SERVER) && !permission_strings_1.default.containsManageServer(perms)) {
113
+ if (comp.flags.includes(const_2.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
84
114
  comp.type = null;
85
115
  else
86
116
  comp.disabled = true;
87
117
  }
88
- else if (comp.flags.includes(const_1.InteractionComponentFlag.ACCESS_MANAGE_MESSAGES) && !permission_strings_1.default.containsManageMessages(perms)) {
89
- if (comp.flags.includes(const_1.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
118
+ else if (comp.flags.includes(const_2.InteractionComponentFlag.ACCESS_MANAGE_MESSAGES) && !permission_strings_1.default.containsManageMessages(perms)) {
119
+ if (comp.flags.includes(const_2.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
90
120
  comp.type = null;
91
121
  else
92
122
  comp.disabled = true;
93
123
  }
94
- else if (comp.flags.includes(const_1.InteractionComponentFlag.ACCESS_BOT_ADMIN) && !index_1.default._data.isBotOwner(i.user.id)) {
95
- if (comp.flags.includes(const_1.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
124
+ else if (comp.flags.includes(const_2.InteractionComponentFlag.ACCESS_BOT_ADMIN) && !index_1.default._data.isBotOwner(i.user.id)) {
125
+ if (comp.flags.includes(const_2.InteractionComponentFlag.HIDE_IF_NOT_ALLOWED))
96
126
  comp.type = null;
97
127
  else
98
128
  comp.disabled = true;
@@ -101,12 +131,12 @@ class CordoAPI {
101
131
  delete comp.flags;
102
132
  }
103
133
  switch (comp.type) {
104
- case const_1.ComponentType.LINE_BREAK: {
134
+ case const_2.ComponentType.LINE_BREAK: {
105
135
  if (rows[rows.length - 1].length)
106
136
  newlineFlag = true;
107
137
  break;
108
138
  }
109
- case const_1.ComponentType.BUTTON: {
139
+ case const_2.ComponentType.BUTTON: {
110
140
  if (newlineFlag)
111
141
  rows.push([]);
112
142
  newlineFlag = false;
@@ -117,7 +147,7 @@ class CordoAPI {
117
147
  newlineFlag = true;
118
148
  break;
119
149
  }
120
- case const_1.ComponentType.SELECT: {
150
+ case const_2.ComponentType.SELECT: {
121
151
  if (comp.options?.length > 50)
122
152
  comp.options.length = 50;
123
153
  rows.push([comp]);
@@ -125,7 +155,7 @@ class CordoAPI {
125
155
  }
126
156
  }
127
157
  }
128
- data.components = rows.map(c => ({ type: const_1.ComponentType.ROW, components: c }));
158
+ data.components = rows.map(c => ({ type: const_2.ComponentType.ROW, components: c }));
129
159
  }
130
160
  }
131
161
  }
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Request, Response } from "express";
2
+ export declare function useCordo(clientPublicKey: string): (req: Request, res: Response) => void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCordo = void 0;
4
+ const discord_interactions_1 = require("discord-interactions");
5
+ const _1 = require(".");
6
+ function useCordo(clientPublicKey) {
7
+ if (!clientPublicKey)
8
+ throw new Error('You must specify a Discord client public key');
9
+ const checkKey = discord_interactions_1.verifyKeyMiddleware(clientPublicKey);
10
+ return (req, res) => {
11
+ checkKey(req, res, () => _1.default.emitInteraction(req.body));
12
+ };
13
+ }
14
+ exports.useCordo = useCordo;
15
+ //# sourceMappingURL=express-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-middleware.js","sourceRoot":"","sources":["../src/express-middleware.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAE1D,wBAAqB;AAGrB,SAAgB,QAAQ,CAAC,eAAuB;IAC9C,IAAI,CAAC,eAAe;QAClB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,0CAAmB,CAAC,eAAe,CAAC,CAAA;IAErD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,UAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAA;AACH,CAAC;AATD,4BASC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Request, Response } from "express";
1
2
  import { InteractionCommandHandler, InteractionComponentHandler, InteractionUIState, SlottedComponentHandler } from './types/custom';
2
3
  import { CordoConfig, CustomLogger, GuildDataMiddleware, InteractionCallbackMiddleware, UserDataMiddleware, ApiResponseHandlerMiddleware } from './types/middleware';
3
4
  import { GenericInteraction } from './types/base';
@@ -53,6 +54,7 @@ export default class Cordo {
53
54
  static setMiddlewareUserData(fun: UserDataMiddleware): void;
54
55
  static setMiddlewareApiResponseHandler(fun: ApiResponseHandlerMiddleware): void;
55
56
  static emitInteraction(i: GenericInteraction): Promise<void>;
57
+ static useWithExpress(clientPublicKey: string): (req: Request, res: Response) => void;
56
58
  private static onCommand;
57
59
  private static componentPermissionCheck;
58
60
  private static onComponent;
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  const fs = require("fs");
14
14
  const path = require("path");
15
+ const discord_interactions_1 = require("discord-interactions");
15
16
  const const_1 = require("./types/const");
16
17
  const api_1 = require("./api");
17
18
  const replies_1 = require("./replies");
@@ -171,6 +172,12 @@ class Cordo {
171
172
  //
172
173
  static async emitInteraction(i) {
173
174
  i._answered = false;
175
+ if (Cordo.config.immediateDefer?.(i)) {
176
+ if (i.type === const_1.InteractionType.COMMAND)
177
+ api_1.default.interactionCallback(i, discord_interactions_1.InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE);
178
+ else if (i.type === const_1.InteractionType.COMPONENT)
179
+ api_1.default.interactionCallback(i, discord_interactions_1.InteractionResponseType.DEFERRED_UPDATE_MESSAGE);
180
+ }
174
181
  if (i.guild_id && !!Cordo.middlewares.fetchGuildData && typeof Cordo.middlewares.fetchGuildData === 'function') {
175
182
  i.guildData = Cordo.middlewares.fetchGuildData(i.guild_id);
176
183
  if (!!i.guildData.then)
@@ -190,6 +197,18 @@ class Cordo {
190
197
  else
191
198
  Cordo.logger.warn(`Unknown interaction type ${i.type}`);
192
199
  }
200
+ static useWithExpress(clientPublicKey) {
201
+ if (!clientPublicKey)
202
+ throw new Error('You must specify a Discord client public key');
203
+ const checkKey = discord_interactions_1.verifyKeyMiddleware(clientPublicKey);
204
+ return (req, res) => {
205
+ checkKey(req, res, () => {
206
+ const interaction = req.body;
207
+ interaction._httpCallback = (payload) => res.status(200).json(payload);
208
+ Cordo.emitInteraction(interaction);
209
+ });
210
+ };
211
+ }
193
212
  /*
194
213
  * INTERNAL
195
214
  */
@@ -250,14 +269,12 @@ class Cordo {
250
269
  }
251
270
  static async onComponent(i) {
252
271
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
253
- const [contextId, _reserved, customId, flagsRaw] = i.data.custom_id.includes(':')
254
- ? i.data.custom_id.split(':') // new format
255
- : [null, null, i.data.custom_id.split('-')[0], i.data.custom_id.split('-')[1]]; // legacy
272
+ const [contextId, _reserved, customId, flagsRaw] = i.data.custom_id.split(':'); // new format
256
273
  i.data.custom_id = customId;
257
274
  i.data.flags = flagsRaw?.split('') ?? [];
258
275
  if ((await Cordo.componentPermissionCheck(i)) !== 'passed')
259
276
  return;
260
- const context = replies_1.default.findActiveInteractionReplyContext(contextId);
277
+ const context = replies_1.default.activeInteractionReplyContexts.get(contextId);
261
278
  let regexSearchResult;
262
279
  if (context?.handlers?.[i.data.custom_id]) {
263
280
  context.handlers?.[i.data.custom_id](replies_1.default.buildReplyableComponentInteraction(i));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/replies.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import { InteractionReplyContext, InteractionReplyStateLevelThree, InteractionReplyStateLevelTwo } from './types/custom';
2
2
  import { CommandInteraction, ComponentInteraction, GenericInteraction, ReplyableCommandInteraction, ReplyableComponentInteraction, SlotedContext } from './types/base';
3
3
  export default class CordoReplies {
4
- static readonly activeInteractionReplyContexts: InteractionReplyContext[];
5
- static findActiveInteractionReplyContext(id: string): InteractionReplyContext | undefined;
4
+ static readonly activeInteractionReplyContexts: Map<string, InteractionReplyContext>;
6
5
  static newInteractionReplyContext(i: GenericInteraction, customId?: string): InteractionReplyContext;
7
6
  static buildReplyableCommandInteraction(i: CommandInteraction): ReplyableCommandInteraction;
8
7
  static buildReplyableComponentInteraction(i: ComponentInteraction, slotContext?: SlotedContext): ReplyableComponentInteraction;
package/dist/replies.js CHANGED
@@ -4,15 +4,9 @@ const const_1 = require("./types/const");
4
4
  const api_1 = require("./api");
5
5
  const index_1 = require("./index");
6
6
  class CordoReplies {
7
- //
8
- static findActiveInteractionReplyContext(id) {
9
- if (!id)
10
- return null;
11
- return CordoReplies.activeInteractionReplyContexts.find(c => c.id === id);
12
- }
13
7
  //
14
8
  static newInteractionReplyContext(i, customId) {
15
- return {
9
+ const context = {
16
10
  id: customId ?? i.id,
17
11
  interaction: i,
18
12
  timeout: -1,
@@ -22,21 +16,22 @@ class CordoReplies {
22
16
  handlers: {},
23
17
  slottedHandlers: []
24
18
  };
19
+ this.activeInteractionReplyContexts.set(context.id, context);
20
+ setTimeout((id) => CordoReplies.activeInteractionReplyContexts.delete(id), 15 * 60e3, context.id);
21
+ return context;
25
22
  }
26
23
  static buildReplyableCommandInteraction(i) {
27
24
  return {
28
25
  ...i,
29
26
  defer(privately = false) {
30
- api_1.default.interactionCallback(i, const_1.InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE, privately ? { flags: const_1.InteractionResponseFlags.EPHEMERAL } : null);
27
+ return api_1.default.interactionCallback(i, const_1.InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE, privately ? { flags: const_1.InteractionResponseFlags.EPHEMERAL } : null);
31
28
  },
32
29
  reply(data) {
33
- api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data);
30
+ return api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data);
34
31
  },
35
32
  replyInteractive(data) {
36
33
  const context = CordoReplies.newInteractionReplyContext(i);
37
- CordoReplies.activeInteractionReplyContexts.push(context);
38
34
  api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data, context.id);
39
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3);
40
35
  return CordoReplies.getLevelTwoReplyState(context);
41
36
  },
42
37
  replyPrivately(data) {
@@ -65,30 +60,31 @@ class CordoReplies {
65
60
  api_1.default.interactionCallback(i, const_1.InteractionCallbackType.DEFERRED_UPDATE_MESSAGE);
66
61
  },
67
62
  reply(data) {
68
- api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data);
63
+ return api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data);
69
64
  },
70
65
  replyInteractive(data) {
71
66
  const context = CordoReplies.newInteractionReplyContext(i);
72
- CordoReplies.activeInteractionReplyContexts.push(context);
73
67
  api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data, context.id);
74
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3);
75
68
  return CordoReplies.getLevelTwoReplyState(context);
76
69
  },
77
70
  replyPrivately(data) {
78
71
  api_1.default.interactionCallback(i, const_1.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, { ...data, flags: const_1.InteractionResponseFlags.EPHEMERAL });
79
72
  },
80
73
  edit(data) {
81
- api_1.default.interactionCallback(i, const_1.InteractionCallbackType.UPDATE_MESSAGE, data, CordoReplies.findActiveInteractionReplyContext(i.message.interaction?.id)?.id);
74
+ api_1.default.interactionCallback(i, const_1.InteractionCallbackType.UPDATE_MESSAGE, data, CordoReplies.activeInteractionReplyContexts.get(i.message.interaction?.id)?.id);
82
75
  },
83
76
  editInteractive(data) {
84
- const prevContext = CordoReplies.findActiveInteractionReplyContext(i.id);
85
- if (prevContext)
86
- prevContext.timeoutRunFunc(true);
87
- const context = CordoReplies.newInteractionReplyContext(i, prevContext?.id);
88
- CordoReplies.activeInteractionReplyContexts.push(context);
89
- api_1.default.interactionCallback(i, const_1.InteractionCallbackType.UPDATE_MESSAGE, data, context.id);
90
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3);
91
- return CordoReplies.getLevelTwoReplyState(context);
77
+ const isAlreadyInteractive = CordoReplies.activeInteractionReplyContexts.has(i.message?.interaction?.id);
78
+ if (isAlreadyInteractive) {
79
+ const context = CordoReplies.activeInteractionReplyContexts.get(i.message?.interaction?.id);
80
+ api_1.default.interactionCallback(i, const_1.InteractionCallbackType.UPDATE_MESSAGE, data, context.id);
81
+ return CordoReplies.getLevelTwoReplyState(context);
82
+ }
83
+ else {
84
+ const context = CordoReplies.newInteractionReplyContext(i);
85
+ api_1.default.interactionCallback(i, const_1.InteractionCallbackType.UPDATE_MESSAGE, data, context.id);
86
+ return CordoReplies.getLevelTwoReplyState(context);
87
+ }
92
88
  },
93
89
  // disableComponents() { TODO
94
90
  // API.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, {
@@ -161,6 +157,7 @@ class CordoReplies {
161
157
  context.timeout = timeout;
162
158
  context.onInteraction = options?.onInteraction;
163
159
  context.timeoutRunFunc = (skipJanitor = false) => {
160
+ CordoReplies.activeInteractionReplyContexts.delete(context.id);
164
161
  if (!skipJanitor)
165
162
  janitor(CordoReplies.getJanitor(context));
166
163
  delete context.handlers;
@@ -208,5 +205,6 @@ class CordoReplies {
208
205
  }
209
206
  exports.default = CordoReplies;
210
207
  /* TODO @metrics */
211
- CordoReplies.activeInteractionReplyContexts = [];
208
+ // public static readonly activeInteractionReplyContexts: InteractionReplyContext[] = []
209
+ CordoReplies.activeInteractionReplyContexts = new Map();
212
210
  //# sourceMappingURL=replies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { InteractionCallbackFollowup } from '..';
1
2
  import { InteractionApplicationCommandCallbackData, InteractionReplyStateLevelTwo } from './custom';
2
3
  import { InteractionCommandType, ComponentType, ChannelType, InteractionComponentFlag, InteractionType } from './const';
3
4
  import { GuildData, UserData } from './middleware';
@@ -201,6 +202,7 @@ export declare type InteractionBase = {
201
202
  guildData?: GuildData;
202
203
  userData?: UserData;
203
204
  _answered: boolean;
205
+ _httpCallback?: (payload: any) => any;
204
206
  _answerComponents: MessageComponent[];
205
207
  };
206
208
  export declare type GenericInteraction = InteractionBase & (InteractionLocationGuild | InteractionLocationDM) & (InteractionTypeCommand | InteractionTypeComponent | InteractionTypeRichMessage);
@@ -211,15 +213,15 @@ export declare type SlotedContext = {
211
213
  params: Record<string, string>;
212
214
  };
213
215
  export declare type ReplyableCommandInteraction = CommandInteraction & {
214
- defer(privately?: boolean): void;
215
- reply(data: InteractionApplicationCommandCallbackData): void;
216
+ defer(privately?: boolean): Promise<InteractionCallbackFollowup>;
217
+ reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>;
216
218
  replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo;
217
219
  replyPrivately(data: InteractionApplicationCommandCallbackData): void;
218
220
  state(state?: string, ...args: any): void;
219
221
  };
220
222
  export declare type ReplyableComponentInteraction = ComponentInteraction & Partial<SlotedContext> & {
221
223
  ack(): void;
222
- reply(data: InteractionApplicationCommandCallbackData): void;
224
+ reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>;
223
225
  replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo;
224
226
  replyPrivately(data: InteractionApplicationCommandCallbackData): void;
225
227
  edit(data: InteractionApplicationCommandCallbackData): void;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { InteractionMessage } from '..';
2
3
  import { GenericInteraction, InteractionJanitor, ReplyableCommandInteraction, ReplyableComponentInteraction, MessageEmbed } from './base';
3
4
  import { MessageComponent } from './component';
4
5
  import { InteractionResponseFlags } from './const';
@@ -54,4 +55,8 @@ export declare type InteractionReplyStateLevelTwo = {
54
55
  _context: InteractionReplyContext;
55
56
  withTimeout(millis: number, janitor: (edit: InteractionJanitor) => any, options?: InteractionReplyTimeoutOptions): InteractionReplyStateLevelThree;
56
57
  };
58
+ export declare type InteractionCallbackFollowup = {
59
+ getMessage(): Promise<InteractionMessage>;
60
+ edit(data: InteractionApplicationCommandCallbackData, useRaw?: boolean): void;
61
+ };
57
62
  export declare type InteractionUIState = (i: GenericInteraction, ...args: any) => InteractionApplicationCommandCallbackData | Promise<InteractionApplicationCommandCallbackData>;
@@ -1,4 +1,5 @@
1
1
  import { AxiosResponse } from 'axios';
2
+ import { GenericInteraction } from '..';
2
3
  import { InteractionApplicationCommandCallbackData } from './custom';
3
4
  export declare type CordoConfig = {
4
5
  botId: string;
@@ -7,6 +8,7 @@ export declare type CordoConfig = {
7
8
  uiStatesPath?: string | string[];
8
9
  contextPath?: string | string[];
9
10
  botAdmins?: string[] | ((userid: string) => boolean);
11
+ immediateDefer?: (i: GenericInteraction) => boolean;
10
12
  texts?: {
11
13
  interaction_not_owned_title: string;
12
14
  interaction_not_owned_description: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cordo",
3
- "version": "1.9.2",
3
+ "version": "1.10.1",
4
4
  "description": "A framework for handling complex discord api interactions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -22,11 +22,14 @@
22
22
  },
23
23
  "homepage": "https://github.com/Maanex/cordo#readme",
24
24
  "dependencies": {
25
- "axios": "^0.21.4"
25
+ "@types/express": "^4.17.13",
26
+ "axios": "^0.21.4",
27
+ "discord-interactions": "^2.4.1",
28
+ "express": "^4.17.2"
26
29
  },
27
30
  "devDependencies": {
28
31
  "@types/axios": "^0.14.0",
29
- "@types/node": "^16.3.2",
32
+ "@types/node": "^17.0.8",
30
33
  "@typescript-eslint/eslint-plugin": "^4.28.3",
31
34
  "@typescript-eslint/parser": "^4.28.3",
32
35
  "eslint": "^7.30.0",
package/src/api.ts CHANGED
@@ -1,14 +1,15 @@
1
- import axios from 'axios'
1
+ import axios, { AxiosResponse } from 'axios'
2
2
  import PermissionStrings from './lib/permission-strings'
3
3
  import { InteractionApplicationCommandCallbackData } from './types/custom'
4
4
  import { GenericInteraction, InteractionLocationGuild } from './types/base'
5
+ import { InteractionResponseFlags } from './types/const'
5
6
  import { MessageComponent } from './types/component'
6
7
  import { ComponentType, InteractionCallbackType, InteractionComponentFlag } from './types/const'
7
- import Cordo from './index'
8
+ import Cordo, { InteractionCallbackFollowup } from './index'
8
9
 
9
10
  export default class CordoAPI {
10
11
 
11
- public static interactionCallback(i: GenericInteraction, type: number, data?: InteractionApplicationCommandCallbackData, contextId?: string, useRaw?: boolean) {
12
+ public static async interactionCallback(i: GenericInteraction, type: number, data?: InteractionApplicationCommandCallbackData, contextId?: string, useRaw?: boolean): Promise<InteractionCallbackFollowup> {
12
13
  if (!useRaw)
13
14
  CordoAPI.normaliseData(data, i, contextId)
14
15
 
@@ -17,31 +18,50 @@ export default class CordoAPI {
17
18
 
18
19
  if (!i._answered) {
19
20
  i._answered = true
20
- axios
21
- .post(`https://discord.com/api/v8/interactions/${i.id}/${i.token}/callback`, { type, data }, { validateStatus: null })
22
- .then((res) => {
23
- if (Cordo._data.middlewares.apiResponseHandler) {
24
- Cordo._data.middlewares.apiResponseHandler(res)
25
- } else if (res.status >= 300) {
26
- Cordo._data.logger.warn('Interaction callback failed with error:')
27
- Cordo._data.logger.warn(JSON.stringify(res.data, null, 2))
28
- Cordo._data.logger.warn('Request payload:')
29
- Cordo._data.logger.warn(JSON.stringify({ type, data }, null, 2))
30
- }
31
- })
32
- return
21
+ if (!!i._httpCallback) {
22
+ i._httpCallback({ type, data })
23
+ } else {
24
+ const res = await axios.post(`https://discord.com/api/v9/interactions/${i.id}/${i.token}/callback`, { type, data }, { validateStatus: null })
25
+ CordoAPI.handleCallbackResponse(res, type, data)
26
+ }
27
+ } else {
28
+ switch (type) {
29
+ case InteractionCallbackType.PONG: break
30
+ case InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: break
31
+ case InteractionCallbackType.DEFERRED_UPDATE_MESSAGE: break
32
+ case InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE: {
33
+ const res = await axios.post(`https://discord.com/api/v9/webhooks/${Cordo._data.config.botId}/${i.token}`, data, { validateStatus: null })
34
+ CordoAPI.handleCallbackResponse(res, type, data)
35
+ break
36
+ }
37
+ case InteractionCallbackType.UPDATE_MESSAGE: {
38
+ const res = await axios.patch(`https://discord.com/api/v9/webhooks/${Cordo._data.config.botId}/${i.token}/messages/@original`, data, { validateStatus: null })
39
+ CordoAPI.handleCallbackResponse(res, type, data)
40
+ break
41
+ }
42
+ }
43
+ }
44
+
45
+ return {
46
+ async getMessage() {
47
+ const res = await axios.get(`https://discord.com/api/v8/webhooks/${Cordo._data.config.botId}/${i.token}/messages/@original`, { validateStatus: null })
48
+ if (res.status !== 200) return null
49
+ return res.data
50
+ },
51
+ edit(editData: any, editUseRaw: boolean = useRaw) {
52
+ CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, editData, contextId, editUseRaw)
53
+ }
33
54
  }
55
+ }
34
56
 
35
- switch (type) {
36
- case InteractionCallbackType.PONG: break
37
- case InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: break
38
- case InteractionCallbackType.DEFERRED_UPDATE_MESSAGE: break
39
- case InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE:
40
- axios.post(`https://discord.com/api/v8/webhooks/${Cordo._data.config.botId}/${i.token}`, data)
41
- break
42
- case InteractionCallbackType.UPDATE_MESSAGE:
43
- axios.patch(`https://discord.com/api/v8/webhooks/${Cordo._data.config.botId}/${i.token}/messages/@original`, data)
44
- break
57
+ private static handleCallbackResponse(res: AxiosResponse, type: number, data?: InteractionApplicationCommandCallbackData) {
58
+ if (Cordo._data.middlewares.apiResponseHandler) {
59
+ Cordo._data.middlewares.apiResponseHandler(res)
60
+ } else if (res.status >= 300) {
61
+ Cordo._data.logger.warn('Interaction callback failed with error:')
62
+ Cordo._data.logger.warn(JSON.stringify(res.data, null, 2))
63
+ Cordo._data.logger.warn('Request payload:')
64
+ Cordo._data.logger.warn(JSON.stringify({ type, data }, null, 2))
45
65
  }
46
66
  }
47
67
 
@@ -53,6 +73,8 @@ export default class CordoAPI {
53
73
  // explicitly not using this. in this function due to unwanted side-effects in lambda functions
54
74
  Cordo._data.middlewares.interactionCallback.forEach(f => f(data, i.guildData))
55
75
 
76
+ const isEmphemeral = (data.flags & InteractionResponseFlags.EPHEMERAL) !== 0
77
+
56
78
  if (!data.content)
57
79
  data.content = ''
58
80
 
@@ -77,8 +99,14 @@ export default class CordoAPI {
77
99
  if (comp.visible === false) continue // === false to not catch any null or undefined
78
100
 
79
101
  if (comp.type !== ComponentType.LINE_BREAK && !!(comp as any).custom_id) {
80
- (comp as any).custom_id = `${contextId ?? ''}::${(comp as any).custom_id}:${comp.flags?.join('') ?? ''}`
81
- if (comp.flags?.length && !!(i as InteractionLocationGuild).member && !comp.flags.includes(InteractionComponentFlag.ACCESS_EVERYONE)) {
102
+ const hasAccessEveryoneFlag = comp.flags?.includes(InteractionComponentFlag.ACCESS_EVERYONE)
103
+ if (isEmphemeral && !hasAccessEveryoneFlag) {
104
+ if (!comp.flags) comp.flags = []
105
+ comp.flags.push(InteractionComponentFlag.ACCESS_EVERYONE)
106
+ }
107
+ ;(comp as any).custom_id = `${contextId ?? ''}::${(comp as any).custom_id}:${comp.flags?.join('') ?? ''}`
108
+
109
+ if (comp.flags?.length && !!(i as InteractionLocationGuild).member && !hasAccessEveryoneFlag) {
82
110
  const perms = BigInt((i as InteractionLocationGuild).member.permissions)
83
111
  if (comp.flags.includes(InteractionComponentFlag.ACCESS_ADMIN) && !PermissionStrings.containsAdmin(perms)) {
84
112
  if (comp.flags.includes(InteractionComponentFlag.HIDE_IF_NOT_ALLOWED)) comp.type = null
package/src/index.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import * as fs from 'fs'
2
2
  import * as path from 'path'
3
+ import { InteractionResponseType, verifyKeyMiddleware } from "discord-interactions"
4
+ import { Request, Response } from "express"
3
5
  import { InteractionCommandHandler, InteractionComponentHandler, InteractionUIState, SlottedComponentHandler } from './types/custom'
4
6
  import { InteractionCallbackType, InteractionComponentFlag, InteractionResponseFlags, InteractionType, InteractionCommandType } from './types/const'
5
7
  import { CordoConfig, CustomLogger, GuildDataMiddleware, InteractionCallbackMiddleware, UserDataMiddleware, ApiResponseHandlerMiddleware } from './types/middleware'
@@ -194,6 +196,13 @@ export default class Cordo {
194
196
  public static async emitInteraction(i: GenericInteraction) {
195
197
  i._answered = false
196
198
 
199
+ if (Cordo.config.immediateDefer?.(i)) {
200
+ if (i.type === InteractionType.COMMAND)
201
+ CordoAPI.interactionCallback(i, InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE)
202
+ else if (i.type === InteractionType.COMPONENT)
203
+ CordoAPI.interactionCallback(i, InteractionResponseType.DEFERRED_UPDATE_MESSAGE)
204
+ }
205
+
197
206
  if (i.guild_id && !!Cordo.middlewares.fetchGuildData && typeof Cordo.middlewares.fetchGuildData === 'function') {
198
207
  i.guildData = Cordo.middlewares.fetchGuildData(i.guild_id)
199
208
  if (!!(i.guildData as any).then) i.guildData = await (i.guildData as any)
@@ -215,6 +224,21 @@ export default class Cordo {
215
224
  Cordo.logger.warn(`Unknown interaction type ${(i as any).type}`)
216
225
  }
217
226
 
227
+ public static useWithExpress(clientPublicKey: string) {
228
+ if (!clientPublicKey)
229
+ throw new Error('You must specify a Discord client public key');
230
+
231
+ const checkKey = verifyKeyMiddleware(clientPublicKey)
232
+
233
+ return (req: Request, res: Response) => {
234
+ checkKey(req, res, () => {
235
+ const interaction = req.body as GenericInteraction
236
+ interaction._httpCallback = (payload: any) => res.status(200).json(payload)
237
+ Cordo.emitInteraction(interaction)
238
+ })
239
+ }
240
+ }
241
+
218
242
 
219
243
  /*
220
244
  * INTERNAL
@@ -287,16 +311,14 @@ export default class Cordo {
287
311
 
288
312
  private static async onComponent(i: ComponentInteraction) {
289
313
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
290
- const [ contextId, _reserved, customId, flagsRaw ] = i.data.custom_id.includes(':')
291
- ? i.data.custom_id.split(':') // new format
292
- : [ null, null, i.data.custom_id.split('-')[0], i.data.custom_id.split('-')[1] ] // legacy
314
+ const [ contextId, _reserved, customId, flagsRaw ] = i.data.custom_id.split(':') // new format
293
315
 
294
316
  i.data.custom_id = customId
295
317
  i.data.flags = flagsRaw?.split('') as InteractionComponentFlag[] ?? []
296
318
 
297
319
  if ((await Cordo.componentPermissionCheck(i)) !== 'passed') return
298
320
 
299
- const context = CordoReplies.findActiveInteractionReplyContext(contextId)
321
+ const context = CordoReplies.activeInteractionReplyContexts.get(contextId)
300
322
 
301
323
  let regexSearchResult: SlottedComponentHandler | undefined
302
324
  if (context?.handlers?.[i.data.custom_id]) {
package/src/replies.ts CHANGED
@@ -8,19 +8,13 @@ import Cordo from './index'
8
8
  export default class CordoReplies {
9
9
 
10
10
  /* TODO @metrics */
11
- public static readonly activeInteractionReplyContexts: InteractionReplyContext[] = []
12
-
13
- //
14
-
15
- public static findActiveInteractionReplyContext(id: string): InteractionReplyContext | undefined {
16
- if (!id) return null
17
- return CordoReplies.activeInteractionReplyContexts.find(c => c.id === id)
18
- }
11
+ // public static readonly activeInteractionReplyContexts: InteractionReplyContext[] = []
12
+ public static readonly activeInteractionReplyContexts: Map<string, InteractionReplyContext> = new Map()
19
13
 
20
14
  //
21
15
 
22
16
  public static newInteractionReplyContext(i: GenericInteraction, customId?: string): InteractionReplyContext {
23
- return {
17
+ const context: InteractionReplyContext = {
24
18
  id: customId ?? i.id,
25
19
  interaction: i,
26
20
  timeout: -1,
@@ -30,25 +24,32 @@ export default class CordoReplies {
30
24
  handlers: {},
31
25
  slottedHandlers: []
32
26
  }
27
+
28
+ this.activeInteractionReplyContexts.set(context.id, context)
29
+ setTimeout(
30
+ (id: string) => CordoReplies.activeInteractionReplyContexts.delete(id),
31
+ 15 * 60e3,
32
+ context.id
33
+ )
34
+
35
+ return context
33
36
  }
34
37
  public static buildReplyableCommandInteraction(i: CommandInteraction): ReplyableCommandInteraction {
35
38
  return {
36
39
  ...i,
37
40
  defer(privately = false) {
38
- CordoAPI.interactionCallback(
41
+ return CordoAPI.interactionCallback(
39
42
  i,
40
43
  InteractionCallbackType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE,
41
44
  privately ? { flags: InteractionResponseFlags.EPHEMERAL } : null
42
45
  )
43
46
  },
44
47
  reply(data: InteractionApplicationCommandCallbackData) {
45
- CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data)
48
+ return CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data)
46
49
  },
47
50
  replyInteractive(data: InteractionApplicationCommandCallbackData) {
48
51
  const context = CordoReplies.newInteractionReplyContext(i)
49
- CordoReplies.activeInteractionReplyContexts.push(context)
50
52
  CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data, context.id)
51
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3)
52
53
  return CordoReplies.getLevelTwoReplyState(context)
53
54
  },
54
55
  replyPrivately(data: InteractionApplicationCommandCallbackData) {
@@ -77,31 +78,31 @@ export default class CordoReplies {
77
78
  CordoAPI.interactionCallback(i, InteractionCallbackType.DEFERRED_UPDATE_MESSAGE)
78
79
  },
79
80
  reply(data: InteractionApplicationCommandCallbackData) {
80
- CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data)
81
+ return CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data)
81
82
  },
82
83
  replyInteractive(data: InteractionApplicationCommandCallbackData) {
83
84
  const context = CordoReplies.newInteractionReplyContext(i)
84
- CordoReplies.activeInteractionReplyContexts.push(context)
85
85
  CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, data, context.id)
86
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3)
87
86
  return CordoReplies.getLevelTwoReplyState(context)
88
87
  },
89
88
  replyPrivately(data: InteractionApplicationCommandCallbackData) {
90
89
  CordoAPI.interactionCallback(i, InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE, { ...data, flags: InteractionResponseFlags.EPHEMERAL })
91
90
  },
92
91
  edit(data: InteractionApplicationCommandCallbackData) {
93
- CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, data, CordoReplies.findActiveInteractionReplyContext(i.message.interaction?.id)?.id)
92
+ CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, data, CordoReplies.activeInteractionReplyContexts.get(i.message.interaction?.id)?.id)
94
93
  },
95
94
  editInteractive(data: InteractionApplicationCommandCallbackData) {
96
- const prevContext = CordoReplies.findActiveInteractionReplyContext(i.id)
97
- if (prevContext)
98
- prevContext.timeoutRunFunc(true)
99
-
100
- const context = CordoReplies.newInteractionReplyContext(i, prevContext?.id)
101
- CordoReplies.activeInteractionReplyContexts.push(context)
102
- CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, data, context.id)
103
- setTimeout(() => CordoReplies.activeInteractionReplyContexts.splice(0, 1), 15 * 60e3)
104
- return CordoReplies.getLevelTwoReplyState(context)
95
+ const isAlreadyInteractive = CordoReplies.activeInteractionReplyContexts.has(i.message?.interaction?.id)
96
+
97
+ if (isAlreadyInteractive) {
98
+ const context = CordoReplies.activeInteractionReplyContexts.get(i.message?.interaction?.id)
99
+ CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, data, context.id)
100
+ return CordoReplies.getLevelTwoReplyState(context)
101
+ } else {
102
+ const context = CordoReplies.newInteractionReplyContext(i)
103
+ CordoAPI.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, data, context.id)
104
+ return CordoReplies.getLevelTwoReplyState(context)
105
+ }
105
106
  },
106
107
  // disableComponents() { TODO
107
108
  // API.interactionCallback(i, InteractionCallbackType.UPDATE_MESSAGE, {
@@ -178,6 +179,7 @@ export default class CordoReplies {
178
179
  context.timeout = timeout
179
180
  context.onInteraction = options?.onInteraction
180
181
  context.timeoutRunFunc = (skipJanitor = false) => {
182
+ CordoReplies.activeInteractionReplyContexts.delete(context.id)
181
183
  if (!skipJanitor)
182
184
  janitor(CordoReplies.getJanitor(context))
183
185
  delete context.handlers
package/src/types/base.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable camelcase */
2
2
  // INTERACTION BASE TYPES
3
3
 
4
+ import { InteractionCallbackFollowup } from '..'
4
5
  import { InteractionApplicationCommandCallbackData, InteractionReplyStateLevelTwo } from './custom'
5
6
  import { InteractionCommandType, ComponentType, ChannelType, InteractionComponentFlag, InteractionType } from './const'
6
7
  import { GuildData, UserData } from './middleware'
@@ -229,6 +230,7 @@ export type InteractionBase = {
229
230
  guildData?: GuildData
230
231
  userData?: UserData
231
232
  _answered: boolean
233
+ _httpCallback?: (payload: any) => any
232
234
  _answerComponents: MessageComponent[]
233
235
  }
234
236
 
@@ -241,8 +243,8 @@ export type RichMessageInteraction = InteractionBase & (InteractionLocationGuild
241
243
  export type SlotedContext = { params: Record<string, string> }
242
244
 
243
245
  export type ReplyableCommandInteraction = CommandInteraction & {
244
- defer(privately?: boolean): void
245
- reply(data: InteractionApplicationCommandCallbackData): void
246
+ defer(privately?: boolean): Promise<InteractionCallbackFollowup>
247
+ reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>
246
248
  replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo
247
249
  replyPrivately(data: InteractionApplicationCommandCallbackData): void
248
250
  state(state?: string, ...args: any): void
@@ -250,7 +252,7 @@ export type ReplyableCommandInteraction = CommandInteraction & {
250
252
 
251
253
  export type ReplyableComponentInteraction = ComponentInteraction & Partial<SlotedContext> & {
252
254
  ack(): void
253
- reply(data: InteractionApplicationCommandCallbackData): void
255
+ reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>
254
256
  replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo
255
257
  replyPrivately(data: InteractionApplicationCommandCallbackData): void
256
258
  edit(data: InteractionApplicationCommandCallbackData): void
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable camelcase */
2
2
 
3
+ import { InteractionMessage } from '..'
3
4
  import { GenericInteraction, InteractionJanitor, ReplyableCommandInteraction, ReplyableComponentInteraction, MessageEmbed } from './base'
4
5
  import { MessageComponent } from './component'
5
6
  import { InteractionResponseFlags } from './const'
@@ -41,8 +42,8 @@ export type InteractionComponentHandler
41
42
  = ((i: ReplyableComponentInteraction) => HandlerSuccess)
42
43
 
43
44
  export type SlottedComponentHandler = {
44
- regex: RegExp,
45
- id: string,
45
+ regex: RegExp
46
+ id: string
46
47
  handler: InteractionComponentHandler
47
48
  }
48
49
 
@@ -60,7 +61,7 @@ export type InteractionReplyContext = {
60
61
  }
61
62
 
62
63
  export type InteractionReplyStateLevelThree = {
63
- _context: InteractionReplyContext,
64
+ _context: InteractionReplyContext
64
65
  on(customId: string, handler: InteractionComponentHandler): InteractionReplyStateLevelThree
65
66
  edit(data: InteractionApplicationCommandCallbackData): void
66
67
  followUp(data: InteractionApplicationCommandCallbackData): void
@@ -72,10 +73,15 @@ export type InteractionReplyTimeoutOptions = {
72
73
  }
73
74
 
74
75
  export type InteractionReplyStateLevelTwo = {
75
- _context: InteractionReplyContext,
76
+ _context: InteractionReplyContext
76
77
  withTimeout(millis: number, janitor: (edit: InteractionJanitor) => any, options?: InteractionReplyTimeoutOptions): InteractionReplyStateLevelThree
77
78
  }
78
79
 
80
+ export type InteractionCallbackFollowup = {
81
+ getMessage(): Promise<InteractionMessage>
82
+ edit(data: InteractionApplicationCommandCallbackData, useRaw?: boolean): void
83
+ }
84
+
79
85
  // States
80
86
 
81
87
  export type InteractionUIState = (i: GenericInteraction, ...args: any) => InteractionApplicationCommandCallbackData | Promise<InteractionApplicationCommandCallbackData>
@@ -1,4 +1,5 @@
1
1
  import { AxiosResponse } from 'axios'
2
+ import { GenericInteraction } from '..'
2
3
  import { InteractionApplicationCommandCallbackData } from './custom'
3
4
 
4
5
 
@@ -9,6 +10,7 @@ export type CordoConfig = {
9
10
  uiStatesPath?: string | string[]
10
11
  contextPath?: string | string[]
11
12
  botAdmins?: string[] | ((userid: string) => boolean)
13
+ immediateDefer?: (i: GenericInteraction) => boolean
12
14
  texts?: {
13
15
  interaction_not_owned_title: string
14
16
  interaction_not_owned_description: string