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 +3 -1
- package/dist/api.js +68 -38
- package/dist/api.js.map +1 -1
- package/dist/express-middleware.d.ts +2 -0
- package/dist/express-middleware.js +15 -0
- package/dist/express-middleware.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/dist/replies.d.ts +1 -2
- package/dist/replies.js +22 -24
- package/dist/replies.js.map +1 -1
- package/dist/types/base.d.ts +5 -3
- package/dist/types/custom.d.ts +5 -0
- package/dist/types/middleware.d.ts +2 -0
- package/package.json +6 -3
- package/src/api.ts +56 -28
- package/src/index.ts +26 -4
- package/src/replies.ts +28 -26
- package/src/types/base.ts +5 -3
- package/src/types/custom.ts +10 -4
- package/src/types/middleware.ts +2 -0
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):
|
|
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
|
-
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
index_1.default._data.
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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 !==
|
|
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 !==
|
|
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 && !
|
|
104
|
+
if (comp.flags?.length && !!i.member && !hasAccessEveryoneFlag) {
|
|
75
105
|
const perms = BigInt(i.member.permissions);
|
|
76
|
-
if (comp.flags.includes(
|
|
77
|
-
if (comp.flags.includes(
|
|
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(
|
|
83
|
-
if (comp.flags.includes(
|
|
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(
|
|
89
|
-
if (comp.flags.includes(
|
|
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(
|
|
95
|
-
if (comp.flags.includes(
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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":";;AAAA,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
208
|
+
// public static readonly activeInteractionReplyContexts: InteractionReplyContext[] = []
|
|
209
|
+
CordoReplies.activeInteractionReplyContexts = new Map();
|
|
212
210
|
//# sourceMappingURL=replies.js.map
|
package/dist/replies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":";;AACA,yCAAiF;AAEjF,+BAA4B;AAC5B,mCAA2B;AAG3B,MAAqB,YAAY;
|
|
1
|
+
{"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":"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"}
|
package/dist/types/base.d.ts
CHANGED
|
@@ -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):
|
|
215
|
-
reply(data: InteractionApplicationCommandCallbackData):
|
|
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):
|
|
224
|
+
reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>;
|
|
223
225
|
replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo;
|
|
224
226
|
replyPrivately(data: InteractionApplicationCommandCallbackData): void;
|
|
225
227
|
edit(data: InteractionApplicationCommandCallbackData): void;
|
package/dist/types/custom.d.ts
CHANGED
|
@@ -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.
|
|
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
|
-
"
|
|
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": "^
|
|
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
|
-
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
81
|
-
if (
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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):
|
|
245
|
-
reply(data: InteractionApplicationCommandCallbackData):
|
|
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):
|
|
255
|
+
reply(data: InteractionApplicationCommandCallbackData): Promise<InteractionCallbackFollowup>
|
|
254
256
|
replyInteractive(data: InteractionApplicationCommandCallbackData): InteractionReplyStateLevelTwo
|
|
255
257
|
replyPrivately(data: InteractionApplicationCommandCallbackData): void
|
|
256
258
|
edit(data: InteractionApplicationCommandCallbackData): void
|
package/src/types/custom.ts
CHANGED
|
@@ -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>
|
package/src/types/middleware.ts
CHANGED
|
@@ -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
|