dfx 1.0.5 → 1.0.7
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/Cache/driver.d.ts.map +1 -1
- package/dist/Cache/memory.d.ts.map +1 -1
- package/dist/Cache/memoryTTL.d.ts.map +1 -1
- package/dist/Cache/prelude.d.ts.map +1 -1
- package/dist/Cache.d.ts.map +1 -1
- package/dist/DiscordConfig.d.ts.map +1 -1
- package/dist/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/dist/DiscordGateway/Messaging.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard/StateStore.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard/identify.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard/sendEvents.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard/utils.d.ts.map +1 -1
- package/dist/DiscordGateway/Shard.d.ts.map +1 -1
- package/dist/DiscordGateway/ShardStore.d.ts.map +1 -1
- package/dist/DiscordGateway/Sharder.d.ts +1 -1
- package/dist/DiscordGateway/Sharder.d.ts.map +1 -1
- package/dist/DiscordGateway.d.ts.map +1 -1
- package/dist/DiscordREST/Generated.d.ts.map +1 -1
- package/dist/DiscordREST/utils.d.ts.map +1 -1
- package/dist/DiscordREST.d.ts.map +1 -1
- package/dist/Helpers/flags.d.ts.map +1 -1
- package/dist/Helpers/intents.d.ts.map +1 -1
- package/dist/Helpers/interactions.d.ts.map +1 -1
- package/dist/Helpers/members.d.ts.map +1 -1
- package/dist/Helpers/permissions.d.ts.map +1 -1
- package/dist/Helpers/ui.d.ts.map +1 -1
- package/dist/Interactions/builder.d.ts.map +1 -1
- package/dist/Interactions/commandHelper.d.ts.map +1 -1
- package/dist/Interactions/context.d.ts.map +1 -1
- package/dist/Interactions/definitions.d.ts.map +1 -1
- package/dist/Interactions/error.d.ts.map +1 -1
- package/dist/Interactions/gateway.d.ts.map +1 -1
- package/dist/Interactions/handlers.d.ts.map +1 -1
- package/dist/Interactions/index.d.ts.map +1 -1
- package/dist/Interactions/utils.d.ts.map +1 -1
- package/dist/Interactions/webhook.d.ts.map +1 -1
- package/dist/RateLimit/memory.d.ts.map +1 -1
- package/dist/RateLimit/utils.d.ts.map +1 -1
- package/dist/RateLimit.d.ts.map +1 -1
- package/dist/gateway.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/Effect.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/webhooks.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/version.ts +1 -1
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -66
- package/dist/mjs/Cache/driver.mjs +0 -3
- package/dist/mjs/Cache/driver.mjs.map +0 -1
- package/dist/mjs/Cache/memory.mjs +0 -48
- package/dist/mjs/Cache/memory.mjs.map +0 -1
- package/dist/mjs/Cache/memoryTTL.mjs +0 -119
- package/dist/mjs/Cache/memoryTTL.mjs.map +0 -1
- package/dist/mjs/Cache/prelude.mjs +0 -131
- package/dist/mjs/Cache/prelude.mjs.map +0 -1
- package/dist/mjs/Cache.mjs +0 -90
- package/dist/mjs/Cache.mjs.map +0 -1
- package/dist/mjs/DiscordConfig.mjs +0 -32
- package/dist/mjs/DiscordConfig.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/DiscordWS.mjs +0 -77
- package/dist/mjs/DiscordGateway/DiscordWS.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Messaging.mjs +0 -35
- package/dist/mjs/DiscordGateway/Messaging.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard/StateStore.mjs +0 -41
- package/dist/mjs/DiscordGateway/Shard/StateStore.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard/heartbeats.mjs +0 -25
- package/dist/mjs/DiscordGateway/Shard/heartbeats.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard/identify.mjs +0 -29
- package/dist/mjs/DiscordGateway/Shard/identify.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard/sendEvents.mjs +0 -26
- package/dist/mjs/DiscordGateway/Shard/sendEvents.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard/utils.mjs +0 -3
- package/dist/mjs/DiscordGateway/Shard/utils.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Shard.mjs +0 -147
- package/dist/mjs/DiscordGateway/Shard.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/ShardStore.mjs +0 -24
- package/dist/mjs/DiscordGateway/ShardStore.mjs.map +0 -1
- package/dist/mjs/DiscordGateway/Sharder.mjs +0 -67
- package/dist/mjs/DiscordGateway/Sharder.mjs.map +0 -1
- package/dist/mjs/DiscordGateway.mjs +0 -21
- package/dist/mjs/DiscordGateway.mjs.map +0 -1
- package/dist/mjs/DiscordREST/Generated.mjs +0 -2471
- package/dist/mjs/DiscordREST/Generated.mjs.map +0 -1
- package/dist/mjs/DiscordREST/utils.mjs +0 -21
- package/dist/mjs/DiscordREST/utils.mjs.map +0 -1
- package/dist/mjs/DiscordREST.mjs +0 -119
- package/dist/mjs/DiscordREST.mjs.map +0 -1
- package/dist/mjs/Helpers/flags.mjs +0 -45
- package/dist/mjs/Helpers/flags.mjs.map +0 -1
- package/dist/mjs/Helpers/intents.mjs +0 -27
- package/dist/mjs/Helpers/intents.mjs.map +0 -1
- package/dist/mjs/Helpers/interactions.mjs +0 -115
- package/dist/mjs/Helpers/interactions.mjs.map +0 -1
- package/dist/mjs/Helpers/members.mjs +0 -9
- package/dist/mjs/Helpers/members.mjs.map +0 -1
- package/dist/mjs/Helpers/permissions.mjs +0 -84
- package/dist/mjs/Helpers/permissions.mjs.map +0 -1
- package/dist/mjs/Helpers/ui.mjs +0 -137
- package/dist/mjs/Helpers/ui.mjs.map +0 -1
- package/dist/mjs/Interactions/builder.mjs +0 -56
- package/dist/mjs/Interactions/builder.mjs.map +0 -1
- package/dist/mjs/Interactions/commandHelper.mjs +0 -49
- package/dist/mjs/Interactions/commandHelper.mjs.map +0 -1
- package/dist/mjs/Interactions/context.mjs +0 -28
- package/dist/mjs/Interactions/context.mjs.map +0 -1
- package/dist/mjs/Interactions/definitions.mjs +0 -51
- package/dist/mjs/Interactions/definitions.mjs.map +0 -1
- package/dist/mjs/Interactions/error.mjs +0 -2
- package/dist/mjs/Interactions/error.mjs.map +0 -1
- package/dist/mjs/Interactions/gateway.mjs +0 -82
- package/dist/mjs/Interactions/gateway.mjs.map +0 -1
- package/dist/mjs/Interactions/handlers.mjs +0 -64
- package/dist/mjs/Interactions/handlers.mjs.map +0 -1
- package/dist/mjs/Interactions/index.mjs +0 -11
- package/dist/mjs/Interactions/index.mjs.map +0 -1
- package/dist/mjs/Interactions/utils.mjs +0 -26
- package/dist/mjs/Interactions/utils.mjs.map +0 -1
- package/dist/mjs/Interactions/webhook.mjs +0 -75
- package/dist/mjs/Interactions/webhook.mjs.map +0 -1
- package/dist/mjs/RateLimit/memory.mjs +0 -39
- package/dist/mjs/RateLimit/memory.mjs.map +0 -1
- package/dist/mjs/RateLimit/utils.mjs +0 -18
- package/dist/mjs/RateLimit/utils.mjs.map +0 -1
- package/dist/mjs/RateLimit.mjs +0 -28
- package/dist/mjs/RateLimit.mjs.map +0 -1
- package/dist/mjs/gateway.mjs +0 -19
- package/dist/mjs/gateway.mjs.map +0 -1
- package/dist/mjs/index.mjs +0 -18
- package/dist/mjs/index.mjs.map +0 -1
- package/dist/mjs/types.mjs +0 -356
- package/dist/mjs/types.mjs.map +0 -1
- package/dist/mjs/utils/Effect.mjs +0 -44
- package/dist/mjs/utils/Effect.mjs.map +0 -1
- package/dist/mjs/version.mjs +0 -2
- package/dist/mjs/version.mjs.map +0 -1
- package/dist/mjs/webhooks.mjs +0 -6
- package/dist/mjs/webhooks.mjs.map +0 -1
- package/dist/package.json +0 -48
- package/dist/src/Cache/driver.ts +0 -37
- package/dist/src/Cache/memory.ts +0 -83
- package/dist/src/Cache/memoryTTL.ts +0 -225
- package/dist/src/Cache/prelude.ts +0 -279
- package/dist/src/Cache.ts +0 -261
- package/dist/src/DiscordConfig.ts +0 -67
- package/dist/src/DiscordGateway/DiscordWS.ts +0 -157
- package/dist/src/DiscordGateway/Messaging.ts +0 -71
- package/dist/src/DiscordGateway/Shard/StateStore.ts +0 -72
- package/dist/src/DiscordGateway/Shard/heartbeats.ts +0 -60
- package/dist/src/DiscordGateway/Shard/identify.ts +0 -50
- package/dist/src/DiscordGateway/Shard/sendEvents.ts +0 -43
- package/dist/src/DiscordGateway/Shard/utils.ts +0 -13
- package/dist/src/DiscordGateway/Shard.ts +0 -205
- package/dist/src/DiscordGateway/ShardStore.ts +0 -42
- package/dist/src/DiscordGateway/Sharder.ts +0 -118
- package/dist/src/DiscordGateway.ts +0 -79
- package/dist/src/DiscordREST/Generated.ts +0 -10832
- package/dist/src/DiscordREST/utils.ts +0 -42
- package/dist/src/DiscordREST.ts +0 -256
- package/dist/src/Helpers/flags.ts +0 -73
- package/dist/src/Helpers/intents.ts +0 -35
- package/dist/src/Helpers/interactions.ts +0 -317
- package/dist/src/Helpers/members.ts +0 -18
- package/dist/src/Helpers/permissions.ts +0 -145
- package/dist/src/Helpers/ui.ts +0 -253
- package/dist/src/Interactions/builder.ts +0 -171
- package/dist/src/Interactions/commandHelper.ts +0 -231
- package/dist/src/Interactions/context.ts +0 -104
- package/dist/src/Interactions/definitions.ts +0 -144
- package/dist/src/Interactions/error.ts +0 -3
- package/dist/src/Interactions/gateway.ts +0 -193
- package/dist/src/Interactions/handlers.ts +0 -108
- package/dist/src/Interactions/index.ts +0 -30
- package/dist/src/Interactions/utils.ts +0 -93
- package/dist/src/Interactions/webhook.ts +0 -204
- package/dist/src/RateLimit/memory.ts +0 -63
- package/dist/src/RateLimit/utils.ts +0 -28
- package/dist/src/RateLimit.ts +0 -90
- package/dist/src/gateway.ts +0 -50
- package/dist/src/index.ts +0 -44
- package/dist/src/types.ts +0 -3090
- package/dist/src/utils/Effect.ts +0 -65
- package/dist/src/version.ts +0 -1
- package/dist/src/webhooks.ts +0 -25
- package/dist/tsconfig.base.json +0 -54
- package/dist/tsconfig.build.json +0 -10
- package/dist/tsconfig.examples.json +0 -10
- package/dist/tsconfig.json +0 -14
- package/dist/tsconfig.madge.json +0 -12
- package/dist/tsconfig.test.json +0 -10
package/dist/src/Helpers/ui.ts
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
ActionRowComponentForMessageRequest,
|
|
3
|
-
ActionRowComponentForModalRequest,
|
|
4
|
-
ButtonComponentForMessageRequest,
|
|
5
|
-
ChannelSelectComponentForMessageRequest,
|
|
6
|
-
ContainerComponentForMessageRequest,
|
|
7
|
-
FileComponentForMessageRequest,
|
|
8
|
-
MediaGalleryComponentForMessageRequest,
|
|
9
|
-
MentionableSelectComponentForMessageRequest,
|
|
10
|
-
MessageCreateRequest,
|
|
11
|
-
PollAnswerCreateRequest,
|
|
12
|
-
PollCreateRequest,
|
|
13
|
-
PollMediaCreateRequest,
|
|
14
|
-
RoleSelectComponentForMessageRequest,
|
|
15
|
-
SectionComponentForMessageRequest,
|
|
16
|
-
SeparatorComponentForMessageRequest,
|
|
17
|
-
StringSelectComponentForMessageRequest,
|
|
18
|
-
TextDisplayComponentForMessageRequest,
|
|
19
|
-
TextInputComponentForModalRequest,
|
|
20
|
-
ThumbnailComponentForMessageRequest,
|
|
21
|
-
UserSelectComponentForMessageRequest,
|
|
22
|
-
} from "../types.ts"
|
|
23
|
-
import {
|
|
24
|
-
TextInputStyleTypes,
|
|
25
|
-
ButtonStyleTypes,
|
|
26
|
-
MessageComponentTypes,
|
|
27
|
-
MessageFlags,
|
|
28
|
-
} from "../types.ts"
|
|
29
|
-
|
|
30
|
-
type ActionRowComponents = ReadonlyArray<
|
|
31
|
-
| ActionRowComponentForMessageRequest["components"][number]
|
|
32
|
-
| ActionRowComponentForModalRequest["components"][number]
|
|
33
|
-
>
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Helper to create an Action Row.
|
|
37
|
-
*/
|
|
38
|
-
export const row = <const C extends ActionRowComponents>(
|
|
39
|
-
components: C,
|
|
40
|
-
): {
|
|
41
|
-
readonly type: typeof MessageComponentTypes.ACTION_ROW
|
|
42
|
-
readonly components: C
|
|
43
|
-
} => ({
|
|
44
|
-
type: MessageComponentTypes.ACTION_ROW,
|
|
45
|
-
components,
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Helper to create an Action Row grid.
|
|
50
|
-
*/
|
|
51
|
-
export const grid = <C extends ActionRowComponents>(
|
|
52
|
-
items: ReadonlyArray<C>,
|
|
53
|
-
): ReadonlyArray<{
|
|
54
|
-
readonly type: typeof MessageComponentTypes.ACTION_ROW
|
|
55
|
-
readonly components: C
|
|
56
|
-
}> => items.map(row)
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Helper to create a single column of components
|
|
60
|
-
*/
|
|
61
|
-
export const singleColumn = <C extends ActionRowComponents>(
|
|
62
|
-
items: C,
|
|
63
|
-
): ReadonlyArray<{
|
|
64
|
-
readonly type: typeof MessageComponentTypes.ACTION_ROW
|
|
65
|
-
readonly components: C
|
|
66
|
-
}> => items.map(c => row([c as any])) as any
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Helper to create a button component.
|
|
70
|
-
*/
|
|
71
|
-
export const button = (
|
|
72
|
-
options: Partial<ButtonComponentForMessageRequest>,
|
|
73
|
-
): ButtonComponentForMessageRequest => ({
|
|
74
|
-
type: MessageComponentTypes.BUTTON,
|
|
75
|
-
style: ButtonStyleTypes.PRIMARY,
|
|
76
|
-
...options,
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Helper to create a select component.
|
|
81
|
-
*/
|
|
82
|
-
export const select = (
|
|
83
|
-
options: Omit<StringSelectComponentForMessageRequest, "type">,
|
|
84
|
-
): StringSelectComponentForMessageRequest => ({
|
|
85
|
-
type: MessageComponentTypes.STRING_SELECT,
|
|
86
|
-
...options,
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Helper to create a select component.
|
|
91
|
-
*/
|
|
92
|
-
export const userSelect = (
|
|
93
|
-
options: Omit<UserSelectComponentForMessageRequest, "type">,
|
|
94
|
-
): UserSelectComponentForMessageRequest => ({
|
|
95
|
-
type: MessageComponentTypes.USER_SELECT,
|
|
96
|
-
...options,
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Helper to create a select component.
|
|
101
|
-
*/
|
|
102
|
-
export const roleSelect = (
|
|
103
|
-
options: Omit<RoleSelectComponentForMessageRequest, "type">,
|
|
104
|
-
): RoleSelectComponentForMessageRequest => ({
|
|
105
|
-
type: MessageComponentTypes.ROLE_SELECT,
|
|
106
|
-
...options,
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Helper to create a select component.
|
|
111
|
-
*/
|
|
112
|
-
export const mentionableSelect = (
|
|
113
|
-
options: Omit<MentionableSelectComponentForMessageRequest, "type">,
|
|
114
|
-
): MentionableSelectComponentForMessageRequest => ({
|
|
115
|
-
type: MessageComponentTypes.MENTIONABLE_SELECT,
|
|
116
|
-
...options,
|
|
117
|
-
})
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Helper to create a select component.
|
|
121
|
-
*/
|
|
122
|
-
export const channelSelect = (
|
|
123
|
-
options: Omit<ChannelSelectComponentForMessageRequest, "type">,
|
|
124
|
-
): ChannelSelectComponentForMessageRequest => ({
|
|
125
|
-
type: MessageComponentTypes.CHANNEL_SELECT,
|
|
126
|
-
...options,
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
type TextInputOpts = Omit<
|
|
130
|
-
TextInputComponentForModalRequest,
|
|
131
|
-
"type" | "style"
|
|
132
|
-
> & {
|
|
133
|
-
style?: TextInputStyleTypes
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Helper to create a text input
|
|
138
|
-
*/
|
|
139
|
-
export const textInput = (
|
|
140
|
-
input: TextInputOpts,
|
|
141
|
-
): TextInputComponentForModalRequest => ({
|
|
142
|
-
type: MessageComponentTypes.TEXT_INPUT,
|
|
143
|
-
style: TextInputStyleTypes.SHORT,
|
|
144
|
-
...input,
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Helper to create a poll
|
|
149
|
-
*/
|
|
150
|
-
export const poll = (
|
|
151
|
-
input: Omit<PollCreateRequest, "answers"> & {
|
|
152
|
-
readonly answers: ReadonlyArray<PollMediaCreateRequest>
|
|
153
|
-
},
|
|
154
|
-
): PollCreateRequest => ({
|
|
155
|
-
...input,
|
|
156
|
-
answers: input.answers.map(
|
|
157
|
-
poll_media => ({ poll_media }) as PollAnswerCreateRequest,
|
|
158
|
-
),
|
|
159
|
-
})
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Helper to create a media gallery
|
|
163
|
-
*/
|
|
164
|
-
export const mediaGallery = (
|
|
165
|
-
options: Omit<MediaGalleryComponentForMessageRequest, "type">,
|
|
166
|
-
): MediaGalleryComponentForMessageRequest => ({
|
|
167
|
-
type: MessageComponentTypes.MEDIA_GALLERY,
|
|
168
|
-
...options,
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Helper to create a file component
|
|
173
|
-
*/
|
|
174
|
-
export const file = (
|
|
175
|
-
options: Omit<FileComponentForMessageRequest, "type">,
|
|
176
|
-
): FileComponentForMessageRequest => ({
|
|
177
|
-
type: MessageComponentTypes.FILE,
|
|
178
|
-
...options,
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Helper to create a container component
|
|
183
|
-
*/
|
|
184
|
-
export const container = (
|
|
185
|
-
options: Omit<ContainerComponentForMessageRequest, "type">,
|
|
186
|
-
): ContainerComponentForMessageRequest => ({
|
|
187
|
-
type: MessageComponentTypes.CONTAINER,
|
|
188
|
-
...options,
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Helper to create a section component
|
|
193
|
-
*/
|
|
194
|
-
export const section = (
|
|
195
|
-
options: Omit<SectionComponentForMessageRequest, "type">,
|
|
196
|
-
): SectionComponentForMessageRequest => ({
|
|
197
|
-
type: MessageComponentTypes.SECTION,
|
|
198
|
-
...options,
|
|
199
|
-
})
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Helper to create a thumbnail component
|
|
203
|
-
*/
|
|
204
|
-
export const thumbnail = (options: {
|
|
205
|
-
readonly url: string
|
|
206
|
-
readonly description?: string | undefined
|
|
207
|
-
readonly spoiler?: boolean | undefined
|
|
208
|
-
}): ThumbnailComponentForMessageRequest => ({
|
|
209
|
-
type: MessageComponentTypes.THUMBNAIL,
|
|
210
|
-
description: options.description,
|
|
211
|
-
spoiler: options.spoiler,
|
|
212
|
-
media: { url: options.url },
|
|
213
|
-
})
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Helper to create a separator component
|
|
217
|
-
*/
|
|
218
|
-
export const seperator = (
|
|
219
|
-
options?: Omit<SeparatorComponentForMessageRequest, "type">,
|
|
220
|
-
): SeparatorComponentForMessageRequest => ({
|
|
221
|
-
type: MessageComponentTypes.SEPARATOR,
|
|
222
|
-
...options,
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Helper to create a text display component
|
|
227
|
-
*/
|
|
228
|
-
export const textDisplay = (
|
|
229
|
-
content: string,
|
|
230
|
-
): TextDisplayComponentForMessageRequest => ({
|
|
231
|
-
type: MessageComponentTypes.TEXT_DISPLAY,
|
|
232
|
-
content,
|
|
233
|
-
})
|
|
234
|
-
|
|
235
|
-
type MessageComponents = NonNullable<MessageCreateRequest["components"]>[number]
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Create a components v2 message
|
|
239
|
-
*/
|
|
240
|
-
export const components = <const C extends ReadonlyArray<MessageComponents>>(
|
|
241
|
-
items: C,
|
|
242
|
-
options?: {
|
|
243
|
-
readonly ephemeral?: boolean | undefined
|
|
244
|
-
},
|
|
245
|
-
): {
|
|
246
|
-
readonly flags: MessageFlags
|
|
247
|
-
readonly components: C
|
|
248
|
-
} => ({
|
|
249
|
-
flags: options?.ephemeral
|
|
250
|
-
? MessageFlags.Ephemeral | MessageFlags.IsComponentsV2
|
|
251
|
-
: MessageFlags.IsComponentsV2,
|
|
252
|
-
components: items,
|
|
253
|
-
})
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import * as Chunk from "effect/Chunk"
|
|
2
|
-
import { identity } from "effect/Function"
|
|
3
|
-
import type * as Cause from "effect/Cause"
|
|
4
|
-
import * as Effect from "effect/Effect"
|
|
5
|
-
import { catchTag } from "effect/Effect"
|
|
6
|
-
import type { DiscordRESTError } from "../DiscordREST.ts"
|
|
7
|
-
import { DiscordREST } from "../DiscordREST.ts"
|
|
8
|
-
import type * as D from "./definitions.ts"
|
|
9
|
-
import type * as Discord from "../types.ts"
|
|
10
|
-
|
|
11
|
-
type ExtractTag<A> = A extends { _tag: infer Tag }
|
|
12
|
-
? Tag extends string
|
|
13
|
-
? Tag
|
|
14
|
-
: never
|
|
15
|
-
: never
|
|
16
|
-
|
|
17
|
-
export class InteractionBuilder<R, E, TE> {
|
|
18
|
-
constructor(
|
|
19
|
-
readonly definitions: Chunk.Chunk<
|
|
20
|
-
readonly [
|
|
21
|
-
handler: D.InteractionDefinition<R, E>,
|
|
22
|
-
transform: (
|
|
23
|
-
self: Effect.Effect<any, any, any>,
|
|
24
|
-
) => Effect.Effect<void, TE, R>,
|
|
25
|
-
]
|
|
26
|
-
>,
|
|
27
|
-
readonly transform: (
|
|
28
|
-
self: Effect.Effect<any, any, any>,
|
|
29
|
-
) => Effect.Effect<void, TE, R>,
|
|
30
|
-
) {}
|
|
31
|
-
|
|
32
|
-
add<R1, E1>(definition: D.InteractionDefinition<R1, E1>) {
|
|
33
|
-
return new InteractionBuilder<R | R1, E | E1, TE | E1>(
|
|
34
|
-
Chunk.append(this.definitions, [definition, this.transform] as const),
|
|
35
|
-
this.transform,
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
concat<R1, E1, TE1>(builder: InteractionBuilder<R1, E1, TE1>) {
|
|
40
|
-
return new InteractionBuilder<R | R1, E | E1, TE | TE1>(
|
|
41
|
-
Chunk.appendAll(this.definitions, builder.definitions),
|
|
42
|
-
this.transform,
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private transformTransform<R1, E1>(
|
|
47
|
-
f: (selr: Effect.Effect<void, TE, R>) => Effect.Effect<void, E1, R1>,
|
|
48
|
-
) {
|
|
49
|
-
return new InteractionBuilder<R1, E, E1>(
|
|
50
|
-
Chunk.map(this.definitions, ([d, t]) => [d as any, _ => f(t(_)) as any]),
|
|
51
|
-
_ => f(this.transform(_)) as any,
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private transformHandlers<R1, E1>(
|
|
56
|
-
f: (
|
|
57
|
-
self: Effect.Effect<Discord.CreateInteractionResponseRequest, E, R>,
|
|
58
|
-
) => Effect.Effect<Discord.CreateInteractionResponseRequest, E1, R1>,
|
|
59
|
-
) {
|
|
60
|
-
return new InteractionBuilder<
|
|
61
|
-
R1,
|
|
62
|
-
E1,
|
|
63
|
-
Exclude<TE, Exclude<E, E1>> | Exclude<E1, E>
|
|
64
|
-
>(
|
|
65
|
-
Chunk.map(this.definitions, ([d, t]) => [
|
|
66
|
-
{
|
|
67
|
-
...d,
|
|
68
|
-
handle: Effect.isEffect(d.handle)
|
|
69
|
-
? f(d.handle)
|
|
70
|
-
: (_: any) => f((d.handle as any)(_)),
|
|
71
|
-
} as any,
|
|
72
|
-
t as any,
|
|
73
|
-
]),
|
|
74
|
-
this.transform as any,
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
catchAllCause<R1, E1>(
|
|
79
|
-
f: (cause: Cause.Cause<TE>) => Effect.Effect<void, E1, R1>,
|
|
80
|
-
) {
|
|
81
|
-
return this.transformTransform<R | R1, E1>(Effect.catchCause(f))
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
catchAllCauseRespond<R1, E1>(
|
|
85
|
-
f: (
|
|
86
|
-
cause: Cause.Cause<E>,
|
|
87
|
-
) => Effect.Effect<Discord.CreateInteractionResponseRequest, E1, R1>,
|
|
88
|
-
) {
|
|
89
|
-
return this.transformHandlers<R | R1, E1>(Effect.catchCause(f))
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
catchAll<R1, E1>(f: (error: TE) => Effect.Effect<void, E1, R1>) {
|
|
93
|
-
return this.transformTransform<R | R1, E1>(Effect.catch(f))
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
catchAllRespond<R1, E1>(
|
|
97
|
-
f: (
|
|
98
|
-
error: E,
|
|
99
|
-
) => Effect.Effect<Discord.CreateInteractionResponseRequest, E1, R1>,
|
|
100
|
-
) {
|
|
101
|
-
return this.transformHandlers<R | R1, E1>(Effect.catch(f))
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
catchTag<T extends ExtractTag<E>, R1, E1>(
|
|
105
|
-
tag: T,
|
|
106
|
-
f: (error: Extract<TE, { _tag: T }>) => Effect.Effect<void, E1, R1>,
|
|
107
|
-
) {
|
|
108
|
-
return this.transformTransform<R | R1, Exclude<TE, { _tag: T }> | E1>(
|
|
109
|
-
_ => catchTag(_ as any, tag, f as any) as any,
|
|
110
|
-
)
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
catchTagRespond<T extends ExtractTag<E>, R1, E1>(
|
|
114
|
-
tag: T,
|
|
115
|
-
f: (
|
|
116
|
-
error: Extract<E, { _tag: T }>,
|
|
117
|
-
) => Effect.Effect<Discord.CreateInteractionResponseRequest, E1, R1>,
|
|
118
|
-
) {
|
|
119
|
-
return this.transformHandlers<R | R1, Exclude<E, { _tag: T }> | E1>(
|
|
120
|
-
_ => catchTag(_ as any, tag, f as any) as any,
|
|
121
|
-
)
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
get syncGlobal() {
|
|
125
|
-
const commands = this.definitions.pipe(
|
|
126
|
-
Chunk.map(([d, _]) => d),
|
|
127
|
-
Chunk.filter(
|
|
128
|
-
(c): c is D.GlobalApplicationCommand<R, E> =>
|
|
129
|
-
c._tag === "GlobalApplicationCommand",
|
|
130
|
-
),
|
|
131
|
-
Chunk.map(c => c.command),
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
return DiscordREST.use(rest =>
|
|
135
|
-
rest
|
|
136
|
-
.getMyApplication()
|
|
137
|
-
.pipe(
|
|
138
|
-
Effect.flatMap(app =>
|
|
139
|
-
rest.bulkSetApplicationCommands(
|
|
140
|
-
app.id,
|
|
141
|
-
Chunk.toReadonlyArray(commands),
|
|
142
|
-
),
|
|
143
|
-
),
|
|
144
|
-
),
|
|
145
|
-
)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
syncGuild(appId: Discord.Snowflake, guildId: Discord.Snowflake) {
|
|
149
|
-
const commands = this.definitions.pipe(
|
|
150
|
-
Chunk.map(([d, _]) => d),
|
|
151
|
-
Chunk.filter(
|
|
152
|
-
(c): c is D.GuildApplicationCommand<R, E> =>
|
|
153
|
-
c._tag === "GuildApplicationCommand",
|
|
154
|
-
),
|
|
155
|
-
Chunk.map(c => c.command),
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
return DiscordREST.use(rest =>
|
|
159
|
-
rest.bulkSetGuildApplicationCommands(
|
|
160
|
-
appId,
|
|
161
|
-
guildId,
|
|
162
|
-
Chunk.toReadonlyArray(commands),
|
|
163
|
-
),
|
|
164
|
-
)
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export const builder = new InteractionBuilder<never, never, DiscordRESTError>(
|
|
169
|
-
Chunk.empty(),
|
|
170
|
-
identity as any,
|
|
171
|
-
)
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
import * as Option from "effect/Option"
|
|
2
|
-
import * as Effect from "effect/Effect"
|
|
3
|
-
import {
|
|
4
|
-
type DiscordSubCommand,
|
|
5
|
-
SubCommandContext,
|
|
6
|
-
SubCommandNotFound,
|
|
7
|
-
type DiscordApplicationCommand,
|
|
8
|
-
type DiscordInteraction,
|
|
9
|
-
} from "./context.ts"
|
|
10
|
-
import type * as Discord from "../types.ts"
|
|
11
|
-
import * as Helpers from "../Helpers/interactions.ts"
|
|
12
|
-
import * as Arr from "effect/Array"
|
|
13
|
-
import type { HashMap } from "effect/HashMap"
|
|
14
|
-
|
|
15
|
-
export class CommandHelper<A> {
|
|
16
|
-
constructor(readonly interaction: Discord.APIInteraction) {
|
|
17
|
-
this.target = Helpers.target(interaction.data as any) as any
|
|
18
|
-
this.data = interaction.data as any
|
|
19
|
-
}
|
|
20
|
-
readonly data: Discord.APIApplicationCommandInteraction["data"]
|
|
21
|
-
readonly target: CommandTypeMap<
|
|
22
|
-
A,
|
|
23
|
-
{
|
|
24
|
-
[Discord.ApplicationCommandType
|
|
25
|
-
.CHAT]: Discord.APIChatInputApplicationCommandGuildInteraction["data"]
|
|
26
|
-
[Discord.ApplicationCommandType.MESSAGE]: Discord.MessageResponse
|
|
27
|
-
[Discord.ApplicationCommandType.USER]: Discord.UserResponse
|
|
28
|
-
[Discord.ApplicationCommandType.PRIMARY_ENTRY_POINT]: undefined
|
|
29
|
-
}
|
|
30
|
-
>
|
|
31
|
-
|
|
32
|
-
resolve<T>(
|
|
33
|
-
name: AllResolvables<A>["name"],
|
|
34
|
-
f: (
|
|
35
|
-
id: Discord.Snowflake,
|
|
36
|
-
data: Discord.InteractionDataResolved,
|
|
37
|
-
) => T | undefined,
|
|
38
|
-
): Option.Option<T> {
|
|
39
|
-
return Helpers.resolveOptionValue(name, f)(this.interaction)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
resolvedValues<T>(
|
|
43
|
-
f: (
|
|
44
|
-
id: Discord.Snowflake,
|
|
45
|
-
data: Discord.InteractionDataResolved,
|
|
46
|
-
) => T | undefined,
|
|
47
|
-
): Option.Option<ReadonlyArray<T>> {
|
|
48
|
-
return Helpers.resolveValues(f)(this.interaction)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
option(
|
|
52
|
-
name: AllCommandOptions<A>["name"],
|
|
53
|
-
): Option.Option<Discord.APIApplicationCommandInteractionDataOption> {
|
|
54
|
-
return Helpers.getOption(name)(this.data as any)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
optionValue<N extends AllRequiredCommandOptions<A>["name"]>(
|
|
58
|
-
name: N,
|
|
59
|
-
): CommandValue<A, N> {
|
|
60
|
-
return Option.getOrThrow(this.optionValueOptional(name))
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
optionValueOptional<N extends AllCommandOptions<A>["name"]>(
|
|
64
|
-
name: N,
|
|
65
|
-
): Option.Option<CommandValue<A, N>> {
|
|
66
|
-
return Option.map(this.option(name), _ => (_ as any).value) as any
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
optionValueOrElse<N extends AllCommandOptions<A>["name"], const OrElse>(
|
|
70
|
-
name: N,
|
|
71
|
-
orElse: () => OrElse,
|
|
72
|
-
): CommandValue<A, N> {
|
|
73
|
-
return Option.getOrElse(this.optionValueOptional(name), orElse) as any
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
subCommands<
|
|
77
|
-
NER extends SubCommandNames<A> extends never
|
|
78
|
-
? never
|
|
79
|
-
: Record<
|
|
80
|
-
SubCommandNames<A>,
|
|
81
|
-
Effect.Effect<Discord.CreateInteractionResponseRequest, any, any>
|
|
82
|
-
>,
|
|
83
|
-
>(
|
|
84
|
-
commands: NER,
|
|
85
|
-
): Effect.Effect<
|
|
86
|
-
Effect.Success<NER[keyof NER]>,
|
|
87
|
-
Effect.Error<NER[keyof NER]>,
|
|
88
|
-
| Exclude<Effect.Services<NER[keyof NER]>, DiscordSubCommand>
|
|
89
|
-
| DiscordInteraction
|
|
90
|
-
| DiscordApplicationCommand
|
|
91
|
-
> {
|
|
92
|
-
const commands_ = commands as Record<string, any>
|
|
93
|
-
const matchedCommand = Arr.findFirst(
|
|
94
|
-
Helpers.allSubCommands(this.data),
|
|
95
|
-
_ => !!commands_[_.name],
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
return Option.match(matchedCommand, {
|
|
99
|
-
onNone: () => Effect.fail(new SubCommandNotFound({ data: this.data })),
|
|
100
|
-
onSome: subCommand =>
|
|
101
|
-
Effect.provideService(commands_[subCommand.name], SubCommandContext, {
|
|
102
|
-
command: subCommand,
|
|
103
|
-
}),
|
|
104
|
-
}) as any
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
get optionsMap(): HashMap<string, string | undefined> {
|
|
108
|
-
return Helpers.optionsMap(this.data as any)
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export type CommandHandlerFn<R, E, A> = (
|
|
113
|
-
i: CommandHelper<A>,
|
|
114
|
-
) => Effect.Effect<Discord.CreateInteractionResponseRequest, E, R>
|
|
115
|
-
|
|
116
|
-
interface CommandOption {
|
|
117
|
-
readonly type: any
|
|
118
|
-
readonly name: string
|
|
119
|
-
readonly options?: ReadonlyArray<CommandOption>
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
type CommandTypeMap<
|
|
123
|
-
A,
|
|
124
|
-
Options extends Record<Discord.ApplicationCommandType, any>,
|
|
125
|
-
> = A extends { readonly type: infer T }
|
|
126
|
-
? T extends keyof Options
|
|
127
|
-
? Options[T]
|
|
128
|
-
: never
|
|
129
|
-
: Options[typeof Discord.ApplicationCommandType.CHAT]
|
|
130
|
-
|
|
131
|
-
// == Sub commands
|
|
132
|
-
type SubCommands<A> = A extends {
|
|
133
|
-
readonly type: typeof Discord.ApplicationCommandOptionType.SUB_COMMAND
|
|
134
|
-
readonly options?: ReadonlyArray<CommandOption>
|
|
135
|
-
}
|
|
136
|
-
? A
|
|
137
|
-
: A extends { readonly options: ReadonlyArray<CommandOption> }
|
|
138
|
-
? SubCommands<A["options"][number]>
|
|
139
|
-
: never
|
|
140
|
-
|
|
141
|
-
type SubCommandNames<A> = Option<SubCommands<A>>["name"]
|
|
142
|
-
|
|
143
|
-
// == Command options
|
|
144
|
-
type CommandOptionType = Exclude<
|
|
145
|
-
Discord.ApplicationCommandOptionType,
|
|
146
|
-
| typeof Discord.ApplicationCommandOptionType.SUB_COMMAND
|
|
147
|
-
| typeof Discord.ApplicationCommandOptionType.SUB_COMMAND_GROUP
|
|
148
|
-
>
|
|
149
|
-
|
|
150
|
-
type CommandOptions<A> = OptionsWithLiteral<
|
|
151
|
-
A,
|
|
152
|
-
{
|
|
153
|
-
readonly type: CommandOptionType
|
|
154
|
-
}
|
|
155
|
-
>
|
|
156
|
-
|
|
157
|
-
type SubCommandOptions<A> = Extract<
|
|
158
|
-
Option<Exclude<SubCommands<A>["options"], undefined>[number]>,
|
|
159
|
-
{
|
|
160
|
-
readonly type: CommandOptionType
|
|
161
|
-
}
|
|
162
|
-
>
|
|
163
|
-
|
|
164
|
-
type AllCommandOptions<A> = CommandOptions<A> | SubCommandOptions<A>
|
|
165
|
-
|
|
166
|
-
type CommandWithName<A, N> = Extract<AllCommandOptions<A>, { readonly name: N }>
|
|
167
|
-
|
|
168
|
-
type OptionTypeValue = {
|
|
169
|
-
[Discord.ApplicationCommandOptionType.BOOLEAN]: boolean
|
|
170
|
-
[Discord.ApplicationCommandOptionType.INTEGER]: number
|
|
171
|
-
[Discord.ApplicationCommandOptionType.NUMBER]: number
|
|
172
|
-
}
|
|
173
|
-
type CommandValue<A, N> = CommandWithName<
|
|
174
|
-
A,
|
|
175
|
-
N
|
|
176
|
-
>["type"] extends keyof OptionTypeValue
|
|
177
|
-
? OptionTypeValue[CommandWithName<A, N>["type"]]
|
|
178
|
-
: string
|
|
179
|
-
|
|
180
|
-
// == Required options
|
|
181
|
-
type RequiredCommandOptions<A> = OptionsWithLiteral<
|
|
182
|
-
A,
|
|
183
|
-
{
|
|
184
|
-
readonly type: CommandOptionType
|
|
185
|
-
readonly required: true
|
|
186
|
-
}
|
|
187
|
-
>
|
|
188
|
-
|
|
189
|
-
type RequiredSubCommandOptions<A> = Extract<
|
|
190
|
-
SubCommandOptions<A>,
|
|
191
|
-
{ readonly required: true }
|
|
192
|
-
>
|
|
193
|
-
|
|
194
|
-
type AllRequiredCommandOptions<A> =
|
|
195
|
-
| RequiredCommandOptions<A>
|
|
196
|
-
| RequiredSubCommandOptions<A>
|
|
197
|
-
|
|
198
|
-
// == Resolveables
|
|
199
|
-
type ResolvableType =
|
|
200
|
-
| typeof Discord.ApplicationCommandOptionType.ROLE
|
|
201
|
-
| typeof Discord.ApplicationCommandOptionType.USER
|
|
202
|
-
| typeof Discord.ApplicationCommandOptionType.MENTIONABLE
|
|
203
|
-
| typeof Discord.ApplicationCommandOptionType.CHANNEL
|
|
204
|
-
|
|
205
|
-
type Resolvables<A> = OptionsWithLiteral<A, { readonly type: ResolvableType }>
|
|
206
|
-
type SubCommandResolvables<A> = Extract<
|
|
207
|
-
Option<Exclude<SubCommands<A>["options"], undefined>[number]>,
|
|
208
|
-
{
|
|
209
|
-
readonly type: ResolvableType
|
|
210
|
-
}
|
|
211
|
-
>
|
|
212
|
-
type AllResolvables<A> = Resolvables<A> | SubCommandResolvables<A>
|
|
213
|
-
|
|
214
|
-
// == Utilities
|
|
215
|
-
type StringLiteral<T> = T extends string
|
|
216
|
-
? string extends T
|
|
217
|
-
? never
|
|
218
|
-
: T
|
|
219
|
-
: never
|
|
220
|
-
|
|
221
|
-
type Option<A> = A extends { readonly name: infer N }
|
|
222
|
-
? N extends StringLiteral<N>
|
|
223
|
-
? A
|
|
224
|
-
: never
|
|
225
|
-
: never
|
|
226
|
-
|
|
227
|
-
type OptionsWithLiteral<A, T> = A extends {
|
|
228
|
-
readonly options: ReadonlyArray<CommandOption>
|
|
229
|
-
}
|
|
230
|
-
? Extract<A["options"][number], Option<A["options"][number]> & T>
|
|
231
|
-
: never
|