@mostfeatured/dbi 0.0.81 → 0.0.83
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/DBI.d.ts +15 -0
- package/dist/DBI.d.ts.map +1 -1
- package/dist/DBI.js +33 -1
- package/dist/DBI.js.map +1 -1
- package/dist/Events.d.ts +17 -1
- package/dist/Events.d.ts.map +1 -1
- package/dist/Events.js.map +1 -1
- package/dist/methods/handleMessageCommands.d.ts +6 -0
- package/dist/methods/handleMessageCommands.d.ts.map +1 -0
- package/dist/methods/handleMessageCommands.js +301 -0
- package/dist/methods/handleMessageCommands.js.map +1 -0
- package/dist/methods/hookInteractionListeners.d.ts.map +1 -1
- package/dist/methods/hookInteractionListeners.js +1 -1
- package/dist/methods/hookInteractionListeners.js.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.d.ts +6 -6
- package/dist/types/ChatInput/ChatInputOptions.d.ts.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.js.map +1 -1
- package/dist/types/Interaction.d.ts +5 -1
- package/dist/types/Interaction.d.ts.map +1 -1
- package/dist/types/Interaction.js.map +1 -1
- package/dist/types/other/FakeMessageInteraction.d.ts +75 -0
- package/dist/types/other/FakeMessageInteraction.d.ts.map +1 -0
- package/dist/types/other/FakeMessageInteraction.js +310 -0
- package/dist/types/other/FakeMessageInteraction.js.map +1 -0
- package/package.json +2 -1
- package/readme.md +35 -0
- package/src/DBI.ts +53 -1
- package/src/Events.ts +10 -1
- package/src/methods/handleMessageCommands.ts +310 -0
- package/src/methods/hookInteractionListeners.ts +1 -2
- package/src/types/ChatInput/ChatInputOptions.ts +3 -3
- package/src/types/Interaction.ts +1 -1
- package/src/types/other/FakeMessageInteraction.ts +292 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Message, MessagePayload, ApplicationCommandType, Locale, APIInteractionGuildMember, GuildMember, PermissionsBitField, ApplicationCommandOptionType, User, Attachment } from 'discord.js';
|
|
2
|
+
import { TDBIInteractions } from '../Interaction';
|
|
3
|
+
import { DBI } from '../../DBI';
|
|
4
|
+
import { NamespaceEnums } from "../../../generated/namespaceData";
|
|
5
|
+
export declare class FakeMessageInteraction {
|
|
6
|
+
private dbi;
|
|
7
|
+
private message;
|
|
8
|
+
locale: string;
|
|
9
|
+
private usedPrefix;
|
|
10
|
+
channelId: string;
|
|
11
|
+
commandName: string;
|
|
12
|
+
appPermissions: any;
|
|
13
|
+
applicationId: string;
|
|
14
|
+
channel: any;
|
|
15
|
+
command: any;
|
|
16
|
+
commandGuildId: string;
|
|
17
|
+
commandId: any;
|
|
18
|
+
commandType: ApplicationCommandType.ChatInput;
|
|
19
|
+
deferred: boolean;
|
|
20
|
+
client: any;
|
|
21
|
+
createdAt: Date;
|
|
22
|
+
ephemeral: boolean;
|
|
23
|
+
createdTimestamp: number;
|
|
24
|
+
guild: any;
|
|
25
|
+
guildId: string;
|
|
26
|
+
guildLocale: Locale;
|
|
27
|
+
id: string;
|
|
28
|
+
user: User;
|
|
29
|
+
private repliedMessage;
|
|
30
|
+
private lastFollowUp;
|
|
31
|
+
member: GuildMember | APIInteractionGuildMember;
|
|
32
|
+
memberPermissions: Readonly<PermissionsBitField>;
|
|
33
|
+
parsedArgs: Map<string, FakeMessageInteractionArgument>;
|
|
34
|
+
usedCommandName: string;
|
|
35
|
+
fullCommandName: string;
|
|
36
|
+
options: any;
|
|
37
|
+
dbiChatInput: TDBIInteractions<string | number>;
|
|
38
|
+
dbiChatInputOptions: any[];
|
|
39
|
+
fake: boolean;
|
|
40
|
+
constructor(dbi: DBI<NamespaceEnums>, message: Message, chatInput: TDBIInteractions<string | number>, locale: string, commandName: string, usedPrefix: string);
|
|
41
|
+
private getRawOptionValue;
|
|
42
|
+
private getClonedDBIOption;
|
|
43
|
+
inGuild(): boolean;
|
|
44
|
+
deferReply(options: any): Promise<any>;
|
|
45
|
+
deleteReply(): Promise<void>;
|
|
46
|
+
followUp(content: string | MessagePayload): Promise<Message<boolean>>;
|
|
47
|
+
editReply(content: string | MessagePayload): Promise<Message<boolean>>;
|
|
48
|
+
reply(content: string | MessagePayload): Promise<any>;
|
|
49
|
+
awaitModalSubmit(): Promise<void>;
|
|
50
|
+
fetchReply(): Promise<Message<boolean>>;
|
|
51
|
+
isAnySelectMenu(): boolean;
|
|
52
|
+
isAutocomplete(): boolean;
|
|
53
|
+
isButton(): boolean;
|
|
54
|
+
isChannelSelectMenu(): boolean;
|
|
55
|
+
isChatInputCommand(): boolean;
|
|
56
|
+
isCommand(): boolean;
|
|
57
|
+
isContextMenuCommand(): boolean;
|
|
58
|
+
isMentionableSelectMenu(): boolean;
|
|
59
|
+
isMessageComponent(): boolean;
|
|
60
|
+
isMessageContextMenuCommand(): boolean;
|
|
61
|
+
isModalSubmit(): boolean;
|
|
62
|
+
isRepliable(): boolean;
|
|
63
|
+
isRoleSelectMenu(): boolean;
|
|
64
|
+
isStringSelectMenu(): boolean;
|
|
65
|
+
isUserContextMenuCommand(): boolean;
|
|
66
|
+
isUserSelectMenu(): boolean;
|
|
67
|
+
isSelectMenu(): boolean;
|
|
68
|
+
}
|
|
69
|
+
interface FakeMessageInteractionArgument {
|
|
70
|
+
type: ApplicationCommandOptionType;
|
|
71
|
+
value: any;
|
|
72
|
+
attachment?: Attachment;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=FakeMessageInteraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeMessageInteraction.d.ts","sourceRoot":"","sources":["../../../src/types/other/FakeMessageInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAA+B,MAAM,EAAE,yBAAyB,EAAE,WAAW,EAAE,mBAAmB,EAAgF,4BAA4B,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7S,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,qBAAa,sBAAsB;IAkCrB,OAAO,CAAC,GAAG;IAAuB,OAAO,CAAC,OAAO;IAAgE,MAAM,EAAE,MAAM;IAAuB,OAAO,CAAC,UAAU;IAjCpL,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,sBAAsB,CAAC,SAAS,CAAC;IAG9C,QAAQ,EAAE,OAAO,CAAS;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAS;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAsB;IAC1C,MAAM,EAAE,WAAW,GAAG,yBAAyB,CAAC;IAChD,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACjD,UAAU,8CAAqD;IAC/D,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC;IACb,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAChD,mBAAmB,EAAE,GAAG,EAAE,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAQ;gBAED,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EAAU,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAS,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAU,UAAU,EAAE,MAAM;IA2K5L,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO;IAID,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAQtC,WAAW;IAMX,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAUzC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAM1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAMrD,gBAAgB;IAIhB,UAAU;IAIhB,eAAe;IACf,cAAc;IACd,QAAQ;IACR,mBAAmB;IACnB,kBAAkB;IAClB,SAAS;IACT,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,2BAA2B;IAC3B,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,kBAAkB;IAClB,wBAAwB;IACxB,gBAAgB;IAChB,YAAY;CACb;AAED,UAAU,8BAA8B;IACtC,IAAI,EAAE,4BAA4B,CAAC;IACnC,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FakeMessageInteraction = void 0;
|
|
4
|
+
const discord_js_1 = require("discord.js");
|
|
5
|
+
const plsargs_1 = require("plsargs");
|
|
6
|
+
class FakeMessageInteraction /* implements ChatInputCommandInteraction */ {
|
|
7
|
+
dbi;
|
|
8
|
+
message;
|
|
9
|
+
locale;
|
|
10
|
+
usedPrefix;
|
|
11
|
+
channelId;
|
|
12
|
+
commandName;
|
|
13
|
+
appPermissions;
|
|
14
|
+
applicationId;
|
|
15
|
+
channel;
|
|
16
|
+
command;
|
|
17
|
+
commandGuildId;
|
|
18
|
+
commandId;
|
|
19
|
+
commandType;
|
|
20
|
+
// awaitModalSubmit: (...arr: any[]) => any;
|
|
21
|
+
// fetchReply: () => Promise<any>;
|
|
22
|
+
deferred = false;
|
|
23
|
+
client;
|
|
24
|
+
createdAt;
|
|
25
|
+
ephemeral = false;
|
|
26
|
+
createdTimestamp;
|
|
27
|
+
guild;
|
|
28
|
+
guildId;
|
|
29
|
+
guildLocale;
|
|
30
|
+
id;
|
|
31
|
+
user;
|
|
32
|
+
repliedMessage;
|
|
33
|
+
lastFollowUp;
|
|
34
|
+
member;
|
|
35
|
+
memberPermissions;
|
|
36
|
+
parsedArgs = new Map();
|
|
37
|
+
usedCommandName;
|
|
38
|
+
fullCommandName;
|
|
39
|
+
options;
|
|
40
|
+
dbiChatInput;
|
|
41
|
+
dbiChatInputOptions;
|
|
42
|
+
fake = true;
|
|
43
|
+
constructor(dbi, message, chatInput, locale, commandName, usedPrefix) {
|
|
44
|
+
this.dbi = dbi;
|
|
45
|
+
this.message = message;
|
|
46
|
+
this.locale = locale;
|
|
47
|
+
this.usedPrefix = usedPrefix;
|
|
48
|
+
const self = this;
|
|
49
|
+
this.channelId = message.channel.id;
|
|
50
|
+
this.commandName = chatInput.name.split(" ").at(0);
|
|
51
|
+
this.appPermissions = message.guild?.members.me.permissionsIn(message.channel) ?? new discord_js_1.PermissionsBitField(8n);
|
|
52
|
+
this.applicationId = message.client.user.id;
|
|
53
|
+
this.channel = message.channel;
|
|
54
|
+
this.commandGuildId = message.guild.id;
|
|
55
|
+
this.commandType = discord_js_1.ApplicationCommandType.ChatInput;
|
|
56
|
+
this.client = message.client;
|
|
57
|
+
this.createdAt = message.createdAt;
|
|
58
|
+
this.createdTimestamp = message.createdTimestamp;
|
|
59
|
+
this.guild = message.guild;
|
|
60
|
+
this.guildId = message.guild?.id;
|
|
61
|
+
this.guildLocale = message.guild?.preferredLocale;
|
|
62
|
+
this.id = message.guild?.commands.cache.find((cmd) => cmd.name === this.commandName)?.id ?? message.client.application.commands.cache.find((cmd) => cmd.name === this.commandName)?.id ?? "-1";
|
|
63
|
+
this.locale = message.guild?.preferredLocale;
|
|
64
|
+
this.member = message.member;
|
|
65
|
+
this.memberPermissions = message.member?.permissions;
|
|
66
|
+
this.user = message.author;
|
|
67
|
+
this.usedCommandName = commandName;
|
|
68
|
+
this.fullCommandName = chatInput.name;
|
|
69
|
+
this.dbiChatInput = chatInput;
|
|
70
|
+
this.dbiChatInputOptions = chatInput.options ? chatInput.options.map(i => ({ ...i })) : [];
|
|
71
|
+
{
|
|
72
|
+
const argContent = message.content.slice(usedPrefix.length + commandName.length).replace(/ +/, " ").trim();
|
|
73
|
+
const args = (0, plsargs_1.plsParseArgs)(argContent);
|
|
74
|
+
const options = chatInput.options ?? [];
|
|
75
|
+
const atchs = [...message.attachments.values()];
|
|
76
|
+
for (let i = 0, attachmentIndex = 0, namedValueSize = 0; i < options.length; i++) {
|
|
77
|
+
const option = options[i];
|
|
78
|
+
if (!option)
|
|
79
|
+
break;
|
|
80
|
+
if (option.type === discord_js_1.ApplicationCommandOptionType.Attachment) {
|
|
81
|
+
this.parsedArgs.set(option.name, {
|
|
82
|
+
type: option.type,
|
|
83
|
+
value: atchs.at(attachmentIndex)?.url,
|
|
84
|
+
attachment: atchs.at(attachmentIndex++)
|
|
85
|
+
});
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const arg = args.get(option.name) ?? args.get(i - attachmentIndex - namedValueSize);
|
|
89
|
+
if (args.get(option.name))
|
|
90
|
+
namedValueSize++;
|
|
91
|
+
this.parsedArgs.set(option.name, {
|
|
92
|
+
type: option.type,
|
|
93
|
+
value: arg
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.options = {
|
|
98
|
+
get(name) {
|
|
99
|
+
const rawValue = self.getRawOptionValue(name);
|
|
100
|
+
if (!rawValue)
|
|
101
|
+
return null;
|
|
102
|
+
return {
|
|
103
|
+
value: rawValue,
|
|
104
|
+
get boolean() { return self.options.getBoolean(name); },
|
|
105
|
+
get channel() { return self.options.getChannel(name); },
|
|
106
|
+
get string() { return self.options.getString(name); },
|
|
107
|
+
get integer() { return self.options.getInteger(name); },
|
|
108
|
+
get number() { return self.options.getNumber(name); },
|
|
109
|
+
get user() { return self.options.getUser(name); },
|
|
110
|
+
get member() { return self.options.getMember(name); },
|
|
111
|
+
get role() { return self.options.getRole(name); },
|
|
112
|
+
get mentionable() { return self.options.getMentionable(name); },
|
|
113
|
+
get attachment() { return self.options.getAttachment(name); }
|
|
114
|
+
};
|
|
115
|
+
},
|
|
116
|
+
getSubcommand() {
|
|
117
|
+
let splitted = self.fullCommandName.split(" ");
|
|
118
|
+
if (splitted.length === 1)
|
|
119
|
+
return null;
|
|
120
|
+
return splitted.at(-1);
|
|
121
|
+
},
|
|
122
|
+
getSubcommandGroup() {
|
|
123
|
+
let splitted = self.fullCommandName.split(" ");
|
|
124
|
+
if (splitted.length === 3)
|
|
125
|
+
return splitted[1];
|
|
126
|
+
return null;
|
|
127
|
+
},
|
|
128
|
+
getBoolean(name) {
|
|
129
|
+
const rawValue = self.getRawOptionValue(name);
|
|
130
|
+
if (!rawValue)
|
|
131
|
+
return null;
|
|
132
|
+
return !!self.dbi.config.messageCommands.typeAliases.booleans[rawValue.toLowerCase()];
|
|
133
|
+
},
|
|
134
|
+
getChannel(name, _, channelType) {
|
|
135
|
+
const rawValue = self.getRawOptionValue(name);
|
|
136
|
+
if (!rawValue)
|
|
137
|
+
return null;
|
|
138
|
+
let value = rawValue.replace(/<#|>/g, "");
|
|
139
|
+
let channel = self.message.client.channels.cache.get(value);
|
|
140
|
+
if (!channel)
|
|
141
|
+
channel = self.message.client.channels.cache.find(c => {
|
|
142
|
+
if (self.guildId && c.guildId && c.guildId !== self.guildId)
|
|
143
|
+
return false;
|
|
144
|
+
return c.name === value;
|
|
145
|
+
});
|
|
146
|
+
if (channelType && channel?.type !== channelType)
|
|
147
|
+
return null;
|
|
148
|
+
return channel;
|
|
149
|
+
},
|
|
150
|
+
getString(name) {
|
|
151
|
+
const dbiOption = self.getClonedDBIOption(name);
|
|
152
|
+
let rawValue = `${self.getRawOptionValue(name)}`;
|
|
153
|
+
let choices = dbiOption.choices ?? dbiOption._choices;
|
|
154
|
+
if (choices)
|
|
155
|
+
return choices.find(c => c.value === rawValue || c.name === rawValue)?.value ?? rawValue;
|
|
156
|
+
return rawValue;
|
|
157
|
+
},
|
|
158
|
+
getInteger(name) {
|
|
159
|
+
const dbiOption = self.getClonedDBIOption(name);
|
|
160
|
+
let rawValue = self.getRawOptionValue(name);
|
|
161
|
+
let parsedValue = parseInt(rawValue);
|
|
162
|
+
let choices = dbiOption.choices ?? dbiOption._choices;
|
|
163
|
+
if (choices)
|
|
164
|
+
return choices.find(c => c.value === parsedValue || c.name === rawValue)?.value ?? rawValue;
|
|
165
|
+
return rawValue;
|
|
166
|
+
},
|
|
167
|
+
getNumber(name) {
|
|
168
|
+
const dbiOption = self.getClonedDBIOption(name);
|
|
169
|
+
let rawValue = self.getRawOptionValue(name);
|
|
170
|
+
let parsedValue = parseFloat(rawValue);
|
|
171
|
+
let choices = dbiOption.choices ?? dbiOption._choices;
|
|
172
|
+
if (choices)
|
|
173
|
+
return choices.find(c => c.value === parsedValue || c.name === rawValue)?.value ?? rawValue;
|
|
174
|
+
return rawValue;
|
|
175
|
+
},
|
|
176
|
+
getUser(name) {
|
|
177
|
+
const rawValue = self.getRawOptionValue(name);
|
|
178
|
+
if (!rawValue)
|
|
179
|
+
return null;
|
|
180
|
+
let value = rawValue.replace(/<@!?|>/g, "");
|
|
181
|
+
let user = self.message.client.users.cache.get(value);
|
|
182
|
+
if (!user)
|
|
183
|
+
user = self.message.client.users.cache.find(u => u.username === value || u.tag === value);
|
|
184
|
+
return user;
|
|
185
|
+
},
|
|
186
|
+
getMember(name) {
|
|
187
|
+
const rawValue = self.getRawOptionValue(name);
|
|
188
|
+
if (!rawValue)
|
|
189
|
+
return null;
|
|
190
|
+
let value = rawValue.replace(/<@!?|>/g, "");
|
|
191
|
+
let member = self.message.guild?.members.cache.get(value);
|
|
192
|
+
if (!member)
|
|
193
|
+
member = self.message.guild?.members.cache.find(m => m.user.username === value || m.user.tag === value);
|
|
194
|
+
return member;
|
|
195
|
+
},
|
|
196
|
+
getRole(name) {
|
|
197
|
+
const rawValue = self.getRawOptionValue(name);
|
|
198
|
+
if (!rawValue)
|
|
199
|
+
return null;
|
|
200
|
+
let value = rawValue.replace(/<@&|>/g, "");
|
|
201
|
+
let role = self.message.guild?.roles.cache.get(value);
|
|
202
|
+
if (!role)
|
|
203
|
+
role = self.message.guild?.roles.cache.find(r => r.name === value);
|
|
204
|
+
return role;
|
|
205
|
+
},
|
|
206
|
+
getMentionable(name) {
|
|
207
|
+
const rawValue = self.getRawOptionValue(name);
|
|
208
|
+
if (!rawValue)
|
|
209
|
+
return null;
|
|
210
|
+
let value = rawValue.replace(/<@(!|&)?|>/g, "");
|
|
211
|
+
let user = self.message.client.users.cache.get(value);
|
|
212
|
+
if (!user)
|
|
213
|
+
user = self.message.client.users.cache.find(u => u.username === value || u.tag === value);
|
|
214
|
+
if (user)
|
|
215
|
+
return user;
|
|
216
|
+
let member = self.message.guild?.members.cache.get(value);
|
|
217
|
+
if (!member)
|
|
218
|
+
member = self.message.guild?.members.cache.find(m => m.user.username === value || m.user.tag === value);
|
|
219
|
+
if (member)
|
|
220
|
+
return member;
|
|
221
|
+
let role = self.message.guild?.roles.cache.get(value);
|
|
222
|
+
if (!role)
|
|
223
|
+
role = self.message.guild?.roles.cache.find(r => r.name === value);
|
|
224
|
+
if (role)
|
|
225
|
+
return role;
|
|
226
|
+
return null;
|
|
227
|
+
},
|
|
228
|
+
getMessage() {
|
|
229
|
+
return self.message;
|
|
230
|
+
},
|
|
231
|
+
getAttachment(name) {
|
|
232
|
+
let d = self.parsedArgs.get(name);
|
|
233
|
+
return d?.attachment ?? null;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
getRawOptionValue(name) {
|
|
238
|
+
return this.parsedArgs.get(name)?.value;
|
|
239
|
+
}
|
|
240
|
+
getClonedDBIOption(name) {
|
|
241
|
+
return this.dbiChatInputOptions.find(o => o.name === name);
|
|
242
|
+
}
|
|
243
|
+
inGuild() {
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
async deferReply(options) {
|
|
247
|
+
// if (options.ephemeral) throw new Error("Ephemeral replies are not supported in message commands.");
|
|
248
|
+
if (this.repliedMessage)
|
|
249
|
+
throw new Error("Already deferred reply.");
|
|
250
|
+
this.repliedMessage = await this.message.reply(options.content ?? "Loading...");
|
|
251
|
+
this.deferred = true;
|
|
252
|
+
return this.repliedMessage;
|
|
253
|
+
}
|
|
254
|
+
async deleteReply() {
|
|
255
|
+
if (!this.repliedMessage)
|
|
256
|
+
throw new Error("No deferred reply.");
|
|
257
|
+
await this.repliedMessage.delete();
|
|
258
|
+
this.repliedMessage = undefined;
|
|
259
|
+
}
|
|
260
|
+
async followUp(content) {
|
|
261
|
+
if (!this.repliedMessage)
|
|
262
|
+
throw new Error("No deferred reply.");
|
|
263
|
+
if (!this.lastFollowUp) {
|
|
264
|
+
this.lastFollowUp = await this.repliedMessage.reply(content);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
this.lastFollowUp = await this.lastFollowUp.reply(content);
|
|
268
|
+
}
|
|
269
|
+
return this.lastFollowUp;
|
|
270
|
+
}
|
|
271
|
+
async editReply(content) {
|
|
272
|
+
if (!this.repliedMessage)
|
|
273
|
+
throw new Error("No deferred reply.");
|
|
274
|
+
await this.repliedMessage.edit(content);
|
|
275
|
+
return this.repliedMessage;
|
|
276
|
+
}
|
|
277
|
+
async reply(content) {
|
|
278
|
+
if (this.repliedMessage)
|
|
279
|
+
throw new Error("Already deferred reply.");
|
|
280
|
+
this.repliedMessage = await this.message.reply(content);
|
|
281
|
+
return this.repliedMessage;
|
|
282
|
+
}
|
|
283
|
+
async awaitModalSubmit() {
|
|
284
|
+
throw new Error("Method not implemented.");
|
|
285
|
+
}
|
|
286
|
+
;
|
|
287
|
+
async fetchReply() {
|
|
288
|
+
return this.repliedMessage?.id && await this.message.channel.messages.fetch(this.repliedMessage.id);
|
|
289
|
+
}
|
|
290
|
+
;
|
|
291
|
+
isAnySelectMenu() { return false; }
|
|
292
|
+
isAutocomplete() { return false; }
|
|
293
|
+
isButton() { return false; }
|
|
294
|
+
isChannelSelectMenu() { return false; }
|
|
295
|
+
isChatInputCommand() { return true; }
|
|
296
|
+
isCommand() { return true; }
|
|
297
|
+
isContextMenuCommand() { return false; }
|
|
298
|
+
isMentionableSelectMenu() { return false; }
|
|
299
|
+
isMessageComponent() { return false; }
|
|
300
|
+
isMessageContextMenuCommand() { return false; }
|
|
301
|
+
isModalSubmit() { return false; }
|
|
302
|
+
isRepliable() { return true; }
|
|
303
|
+
isRoleSelectMenu() { return false; }
|
|
304
|
+
isStringSelectMenu() { return false; }
|
|
305
|
+
isUserContextMenuCommand() { return false; }
|
|
306
|
+
isUserSelectMenu() { return false; }
|
|
307
|
+
isSelectMenu() { return false; }
|
|
308
|
+
}
|
|
309
|
+
exports.FakeMessageInteraction = FakeMessageInteraction;
|
|
310
|
+
//# sourceMappingURL=FakeMessageInteraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeMessageInteraction.js","sourceRoot":"","sources":["../../../src/types/other/FakeMessageInteraction.ts"],"names":[],"mappings":"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","sourcesContent":["import { Message, MessagePayload, ApplicationCommandType, ChatInputCommandInteraction, Locale, APIInteractionGuildMember, GuildMember, PermissionsBitField, CacheType, CommandInteractionOptionResolver, CommandOptionDataTypeResolvable, ApplicationCommandOptionType, User, Attachment } from 'discord.js';\r\nimport { TDBIInteractions } from '../Interaction';\r\nimport { plsParseArgs } from \"plsargs\";\r\nimport { DBI } from '../../DBI';\r\nimport { NamespaceEnums } from \"../../../generated/namespaceData\";\r\nimport { ChannelType } from \"discord-api-types/v10\";\r\n\r\nexport class FakeMessageInteraction /* implements ChatInputCommandInteraction */ {\r\n channelId: string;\r\n commandName: string;\r\n appPermissions: any;\r\n applicationId: string;\r\n channel: any; \r\n command: any;\r\n commandGuildId: string;\r\n commandId: any; \r\n commandType: ApplicationCommandType.ChatInput;\r\n // awaitModalSubmit: (...arr: any[]) => any;\r\n // fetchReply: () => Promise<any>;\r\n deferred: boolean = false;\r\n client: any; \r\n createdAt: Date;\r\n ephemeral: boolean = false;\r\n createdTimestamp: number;\r\n guild: any; \r\n guildId: string;\r\n guildLocale: Locale;\r\n id: string;\r\n user: User;\r\n private repliedMessage: Message | undefined;\r\n private lastFollowUp: Message | undefined;\r\n member: GuildMember | APIInteractionGuildMember;\r\n memberPermissions: Readonly<PermissionsBitField>;\r\n parsedArgs = new Map<string, FakeMessageInteractionArgument>();\r\n usedCommandName: string;\r\n fullCommandName: string;\r\n options: any;\r\n dbiChatInput: TDBIInteractions<string | number>;\r\n dbiChatInputOptions: any[];\r\n fake: boolean = true;\r\n\r\n constructor(private dbi: DBI<NamespaceEnums>, private message: Message, chatInput: TDBIInteractions<string | number>, public locale: string, commandName: string, private usedPrefix: string) {\r\n const self = this;\r\n \r\n this.channelId = message.channel.id;\r\n this.commandName = chatInput.name.split(\" \").at(0);\r\n this.appPermissions = message.guild?.members.me.permissionsIn(message.channel as any) ?? new PermissionsBitField(8n);\r\n this.applicationId = message.client.user.id;\r\n this.channel = message.channel as any;\r\n this.commandGuildId = message.guild.id;\r\n this.commandType = ApplicationCommandType.ChatInput;\r\n \r\n this.client = message.client;\r\n this.createdAt = message.createdAt;\r\n this.createdTimestamp = message.createdTimestamp;\r\n this.guild = message.guild;\r\n this.guildId = message.guild?.id;\r\n this.guildLocale = message.guild?.preferredLocale;\r\n this.id = message.guild?.commands.cache.find((cmd) => cmd.name === this.commandName)?.id ?? message.client.application.commands.cache.find((cmd) => cmd.name === this.commandName)?.id ?? \"-1\";\r\n this.locale = message.guild?.preferredLocale;\r\n this.member = message.member;\r\n this.memberPermissions = message.member?.permissions;\r\n this.user = message.author;\r\n\r\n this.usedCommandName = commandName;\r\n this.fullCommandName = chatInput.name;\r\n this.dbiChatInput = chatInput;\r\n this.dbiChatInputOptions = chatInput.options ? chatInput.options.map(i => ({ ...i })) : []; \r\n\r\n {\r\n const argContent = message.content.slice(usedPrefix.length + commandName.length).replace(/ +/, \" \").trim();\r\n const args = plsParseArgs(argContent);\r\n\r\n const options = chatInput.options ?? [];\r\n const atchs = [...message.attachments.values()];\r\n for (let i = 0, attachmentIndex = 0, namedValueSize = 0; i < options.length; i++) {\r\n const option = options[i];\r\n if (!option) break;\r\n if (option.type === ApplicationCommandOptionType.Attachment) {\r\n this.parsedArgs.set(option.name, {\r\n type: option.type,\r\n value: atchs.at(attachmentIndex)?.url,\r\n attachment: atchs.at(attachmentIndex++)\r\n })\r\n continue;\r\n }\r\n const arg = args.get(option.name) ?? args.get(i - attachmentIndex - namedValueSize);\r\n if (args.get(option.name)) namedValueSize++;\r\n this.parsedArgs.set(option.name, {\r\n type: option.type,\r\n value: arg\r\n });\r\n }\r\n }\r\n\r\n this.options = {\r\n get(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n return {\r\n value: rawValue,\r\n get boolean() { return self.options.getBoolean(name); },\r\n get channel() { return self.options.getChannel(name); },\r\n get string() { return self.options.getString(name); },\r\n get integer() { return self.options.getInteger(name); },\r\n get number() { return self.options.getNumber(name); },\r\n get user() { return self.options.getUser(name); },\r\n get member() { return self.options.getMember(name); },\r\n get role() { return self.options.getRole(name); },\r\n get mentionable() { return self.options.getMentionable(name); },\r\n get attachment() { return self.options.getAttachment(name); }\r\n };\r\n },\r\n getSubcommand() {\r\n let splitted = self.fullCommandName.split(\" \");\r\n if (splitted.length === 1) return null;\r\n return splitted.at(-1);\r\n },\r\n getSubcommandGroup() {\r\n let splitted = self.fullCommandName.split(\" \");\r\n if (splitted.length === 3) return splitted[1];\r\n return null;\r\n },\r\n getBoolean(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n return !!self.dbi.config.messageCommands.typeAliases.booleans[rawValue.toLowerCase()];\r\n },\r\n getChannel(name: string, _: any, channelType?: ChannelType) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n let value = rawValue.replace(/<#|>/g, \"\");\r\n let channel = self.message.client.channels.cache.get(value);\r\n if (!channel) channel = self.message.client.channels.cache.find(c => {\r\n if (self.guildId && (c as any).guildId && (c as any).guildId !== self.guildId) return false;\r\n return (c as any).name === value;\r\n });\r\n if (channelType && channel?.type !== channelType) return null;\r\n return channel;\r\n },\r\n getString(name: string) {\r\n const dbiOption = self.getClonedDBIOption(name);\r\n let rawValue = `${self.getRawOptionValue(name)}`;\r\n let choices = dbiOption.choices ?? dbiOption._choices;\r\n if (choices) return choices.find(c => c.value === rawValue || c.name === rawValue)?.value ?? rawValue;\r\n return rawValue;\r\n },\r\n getInteger(name: string) {\r\n const dbiOption = self.getClonedDBIOption(name);\r\n let rawValue = self.getRawOptionValue(name);\r\n let parsedValue = parseInt(rawValue);\r\n let choices = dbiOption.choices ?? dbiOption._choices;\r\n if (choices) return choices.find(c => c.value === parsedValue || c.name === rawValue)?.value ?? rawValue;\r\n return rawValue;\r\n },\r\n getNumber(name: string) {\r\n const dbiOption = self.getClonedDBIOption(name);\r\n let rawValue = self.getRawOptionValue(name);\r\n let parsedValue = parseFloat(rawValue);\r\n let choices = dbiOption.choices ?? dbiOption._choices;\r\n if (choices) return choices.find(c => c.value === parsedValue || c.name === rawValue)?.value ?? rawValue;\r\n return rawValue;\r\n },\r\n getUser(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n let value = rawValue.replace(/<@!?|>/g, \"\");\r\n let user = self.message.client.users.cache.get(value);\r\n if (!user) user = self.message.client.users.cache.find(u => u.username === value || u.tag === value);\r\n return user;\r\n },\r\n getMember(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n let value = rawValue.replace(/<@!?|>/g, \"\");\r\n let member = self.message.guild?.members.cache.get(value);\r\n if (!member) member = self.message.guild?.members.cache.find(m => m.user.username === value || m.user.tag === value);\r\n return member;\r\n },\r\n getRole(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n let value = rawValue.replace(/<@&|>/g, \"\");\r\n let role = self.message.guild?.roles.cache.get(value);\r\n if (!role) role = self.message.guild?.roles.cache.find(r => r.name === value);\r\n return role;\r\n },\r\n getMentionable(name: string) {\r\n const rawValue = self.getRawOptionValue(name);\r\n if (!rawValue) return null;\r\n let value = rawValue.replace(/<@(!|&)?|>/g, \"\");\r\n let user = self.message.client.users.cache.get(value);\r\n if (!user) user = self.message.client.users.cache.find(u => u.username === value || u.tag === value);\r\n if (user) return user;\r\n let member = self.message.guild?.members.cache.get(value);\r\n if (!member) member = self.message.guild?.members.cache.find(m => m.user.username === value || m.user.tag === value);\r\n if (member) return member;\r\n let role = self.message.guild?.roles.cache.get(value);\r\n if (!role) role = self.message.guild?.roles.cache.find(r => r.name === value);\r\n if (role) return role;\r\n return null;\r\n },\r\n getMessage() {\r\n return self.message;\r\n },\r\n getAttachment(name: string) {\r\n let d = self.parsedArgs.get(name);\r\n return d?.attachment ?? null;\r\n }\r\n }\r\n }\r\n\r\n private getRawOptionValue(name: string): any {\r\n return this.parsedArgs.get(name)?.value;\r\n }\r\n\r\n private getClonedDBIOption(name: string): any {\r\n return this.dbiChatInputOptions.find(o => o.name === name);\r\n }\r\n\r\n inGuild() {\r\n return true;\r\n }\r\n\r\n async deferReply(options: any): Promise<any> {\r\n // if (options.ephemeral) throw new Error(\"Ephemeral replies are not supported in message commands.\");\r\n if (this.repliedMessage) throw new Error(\"Already deferred reply.\");\r\n this.repliedMessage = await this.message.reply(options.content ?? \"Loading...\");\r\n this.deferred = true;\r\n return this.repliedMessage;\r\n }\r\n\r\n async deleteReply() {\r\n if (!this.repliedMessage) throw new Error(\"No deferred reply.\");\r\n await this.repliedMessage.delete();\r\n this.repliedMessage = undefined;\r\n }\r\n\r\n async followUp(content: string | MessagePayload) {\r\n if (!this.repliedMessage) throw new Error(\"No deferred reply.\");\r\n if (!this.lastFollowUp) {\r\n this.lastFollowUp = await this.repliedMessage.reply(content);\r\n } else {\r\n this.lastFollowUp = await this.lastFollowUp.reply(content);\r\n }\r\n return this.lastFollowUp;\r\n }\r\n\r\n async editReply(content: string | MessagePayload) {\r\n if (!this.repliedMessage) throw new Error(\"No deferred reply.\");\r\n await this.repliedMessage.edit(content);\r\n return this.repliedMessage;\r\n }\r\n\r\n async reply(content: string | MessagePayload): Promise<any> {\r\n if (this.repliedMessage) throw new Error(\"Already deferred reply.\");\r\n this.repliedMessage = await this.message.reply(content);\r\n return this.repliedMessage;\r\n }\r\n\r\n async awaitModalSubmit() {\r\n throw new Error(\"Method not implemented.\");\r\n };\r\n\r\n async fetchReply() {\r\n return this.repliedMessage?.id && await this.message.channel.messages.fetch(this.repliedMessage.id);\r\n };\r\n\r\n isAnySelectMenu() { return false; }\r\n isAutocomplete() { return false; }\r\n isButton() { return false; }\r\n isChannelSelectMenu() { return false; }\r\n isChatInputCommand() { return true; }\r\n isCommand() { return true; }\r\n isContextMenuCommand() { return false; }\r\n isMentionableSelectMenu() { return false; }\r\n isMessageComponent() { return false; }\r\n isMessageContextMenuCommand() { return false; }\r\n isModalSubmit() { return false; }\r\n isRepliable() { return true; }\r\n isRoleSelectMenu() { return false; }\r\n isStringSelectMenu() { return false; }\r\n isUserContextMenuCommand() { return false; }\r\n isUserSelectMenu() { return false; }\r\n isSelectMenu() { return false; }\r\n}\r\n\r\ninterface FakeMessageInteractionArgument {\r\n type: ApplicationCommandOptionType,\r\n value: any,\r\n attachment?: Attachment\r\n}"]}
|
package/package.json
CHANGED
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
"discord-hybrid-sharding": "github:meister03/discord-hybrid-sharding",
|
|
7
7
|
"discord.js": "^14.13.0",
|
|
8
8
|
"lodash": "^4.17.21",
|
|
9
|
+
"plsargs": "^0.1.6",
|
|
9
10
|
"snakecase-keys": "^5.4.2",
|
|
10
11
|
"stuffs": "^0.1.21"
|
|
11
12
|
},
|
|
12
13
|
"name": "@mostfeatured/dbi",
|
|
13
|
-
"version": "0.0.
|
|
14
|
+
"version": "0.0.83",
|
|
14
15
|
"main": "dist/index.js",
|
|
15
16
|
"type": "commonjs",
|
|
16
17
|
"private": false,
|
package/readme.md
CHANGED
|
@@ -35,8 +35,26 @@ let dbi = createDBI("xd", {
|
|
|
35
35
|
ttl: 60 * 1000 * 60,
|
|
36
36
|
check: 60 * 1000
|
|
37
37
|
}
|
|
38
|
+
},
|
|
39
|
+
// Message Commands are optional. Message Commands work trough emulating the slash commands..
|
|
40
|
+
messageCommands: {
|
|
41
|
+
prefixes: ["!", "."],
|
|
42
|
+
typeAliases: {
|
|
43
|
+
booleans: {
|
|
44
|
+
"true": true,
|
|
45
|
+
"false": false,
|
|
46
|
+
"yes": true,
|
|
47
|
+
"no": false,
|
|
48
|
+
}
|
|
49
|
+
}
|
|
38
50
|
}
|
|
39
51
|
});
|
|
52
|
+
|
|
53
|
+
dbi.events.on("messageCommandArgumentError", (data) => {
|
|
54
|
+
data.message.reply(`‼️ Invalid argument \`${data.error.option.name}\` (Index: \`${data.error.index}\`). Error Kind: \`${data.error.type}\`. Expected: \`${ApplicationCommandOptionType[data.error.option.type]}\`${data.error.extra ? ` with any of \`${data.error.extra.map(i => i.name).join(", ")}\`` : ""}.`);
|
|
55
|
+
return false;
|
|
56
|
+
});
|
|
57
|
+
|
|
40
58
|
module.exports = dbi;
|
|
41
59
|
```
|
|
42
60
|
|
|
@@ -307,9 +325,26 @@ let dbi = createDBI("xd", {
|
|
|
307
325
|
ttl: 60 * 1000 * 60,
|
|
308
326
|
check: 60 * 1000
|
|
309
327
|
}
|
|
328
|
+
},
|
|
329
|
+
// Mesaj Komutları isteğe bağlıdır. Mesaj Komutları slash komutlarını taklit ederek çalışır. Yani siz sadece slash komut kodlasanız bile uyumlu olarak çalışacaktır.
|
|
330
|
+
messageCommands: {
|
|
331
|
+
prefixes: ["!", "."],
|
|
332
|
+
typeAliases: {
|
|
333
|
+
booleans: {
|
|
334
|
+
"true": true,
|
|
335
|
+
"false": false,
|
|
336
|
+
"yes": true,
|
|
337
|
+
"no": false,
|
|
338
|
+
}
|
|
339
|
+
}
|
|
310
340
|
}
|
|
311
341
|
});
|
|
312
342
|
|
|
343
|
+
dbi.events.on("messageCommandArgumentError", (data) => {
|
|
344
|
+
data.message.reply(`‼️ Hatalı argument \`${data.error.option.name}\` (Konum: \`${data.error.index}\`). Hata Tipi: \`${data.error.type}\`. Beklenen: \`${ApplicationCommandOptionType[data.error.option.type]}\`${data.error.extra ? ` şunlardan herhangi biri \`${data.error.extra.map(i => i.name).join(", ")}\`` : ""}.`);
|
|
345
|
+
return false;
|
|
346
|
+
});
|
|
347
|
+
|
|
313
348
|
module.exports = dbi;
|
|
314
349
|
```
|
|
315
350
|
|
package/src/DBI.ts
CHANGED
|
@@ -25,6 +25,7 @@ import { DBIUserSelectMenu, TDBIUserSelectMenuOmitted } from "./types/Components
|
|
|
25
25
|
import { DBIMentionableSelectMenu, TDBIMentionableSelectMenuOmitted } from "./types/Components/MentionableSelectMenu";
|
|
26
26
|
import { DBIChannelSelectMenu, TDBIChannelSelectMenuOmitted } from "./types/Components/ChannelSelectMenu";
|
|
27
27
|
import { DBIRoleSelectMenu, TDBIRoleSelectMenuOmitted } from "./types/Components/RoleSelectMenu";
|
|
28
|
+
import { handleMessageCommands } from "./methods/handleMessageCommands";
|
|
28
29
|
|
|
29
30
|
export interface DBIStore {
|
|
30
31
|
get(key: string, defaultValue?: any): Promise<any>;
|
|
@@ -61,6 +62,12 @@ export interface DBIConfig {
|
|
|
61
62
|
};
|
|
62
63
|
|
|
63
64
|
strict: boolean;
|
|
65
|
+
messageCommands?: {
|
|
66
|
+
prefixes: string[];
|
|
67
|
+
typeAliases: {
|
|
68
|
+
booleans: Record<string, boolean>;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
64
71
|
}
|
|
65
72
|
|
|
66
73
|
export interface DBIConfigConstructor {
|
|
@@ -98,6 +105,16 @@ export interface DBIConfigConstructor {
|
|
|
98
105
|
}
|
|
99
106
|
|
|
100
107
|
strict?: boolean;
|
|
108
|
+
|
|
109
|
+
messageCommands?: {
|
|
110
|
+
prefixes: string[];
|
|
111
|
+
typeAliases?: {
|
|
112
|
+
/**
|
|
113
|
+
* Example: {"yes": true, "no": false}
|
|
114
|
+
*/
|
|
115
|
+
booleans?: Record<string, boolean>;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
101
118
|
}
|
|
102
119
|
|
|
103
120
|
export interface DBIRegisterAPI<TNamespace extends NamespaceEnums> {
|
|
@@ -167,6 +184,25 @@ export class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string,
|
|
|
167
184
|
...(config.references || {})
|
|
168
185
|
}
|
|
169
186
|
|
|
187
|
+
if (config.messageCommands) {
|
|
188
|
+
if (config.strict && !config.messageCommands?.prefixes?.length) throw new Error("No message command prefixes provided.");
|
|
189
|
+
|
|
190
|
+
let { typeAliases } = config.messageCommands;
|
|
191
|
+
|
|
192
|
+
config.messageCommands.typeAliases = {
|
|
193
|
+
booleans: typeAliases.booleans ?? {
|
|
194
|
+
"true": true,
|
|
195
|
+
"false": false,
|
|
196
|
+
"yes": true,
|
|
197
|
+
"no": false,
|
|
198
|
+
"y": true,
|
|
199
|
+
"n": false,
|
|
200
|
+
"1": true,
|
|
201
|
+
"0": false
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
170
206
|
// @ts-ignore
|
|
171
207
|
this.config = config;
|
|
172
208
|
|
|
@@ -235,10 +271,11 @@ export class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string,
|
|
|
235
271
|
|
|
236
272
|
private async _hookListeners() {
|
|
237
273
|
if (this._hooked) return;
|
|
274
|
+
const self = this;
|
|
238
275
|
this._hooked = true;
|
|
239
276
|
this.data.unloaders.add(hookInteractionListeners(this as any));
|
|
240
277
|
this.data.unloaders.add(hookEventListeners(this as any));
|
|
241
|
-
if (typeof this.config.references.autoClear
|
|
278
|
+
if (typeof this.config.references.autoClear !== "undefined") {
|
|
242
279
|
this.data.unloaders.add((() => {
|
|
243
280
|
let interval = setInterval(() => {
|
|
244
281
|
this.data.refs.forEach(({ at, ttl }, key) => {
|
|
@@ -252,6 +289,20 @@ export class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string,
|
|
|
252
289
|
}
|
|
253
290
|
})());
|
|
254
291
|
}
|
|
292
|
+
if (typeof this.config.messageCommands !== "undefined") {
|
|
293
|
+
this.data.unloaders.add((() => {
|
|
294
|
+
const { client } = this.client();
|
|
295
|
+
|
|
296
|
+
function onMessage(message: Discord.Message) {
|
|
297
|
+
handleMessageCommands(self as any, message);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
client.on("messageCreate", onMessage);
|
|
301
|
+
return () => {
|
|
302
|
+
client.off("messageCreate", onMessage);
|
|
303
|
+
}
|
|
304
|
+
})());
|
|
305
|
+
}
|
|
255
306
|
}
|
|
256
307
|
|
|
257
308
|
private async _unhookListeners() {
|
|
@@ -414,6 +465,7 @@ export class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string,
|
|
|
414
465
|
},
|
|
415
466
|
});
|
|
416
467
|
}
|
|
468
|
+
self.data.interactions.sort((a, b) => a.name.length - b.name.length);
|
|
417
469
|
}
|
|
418
470
|
|
|
419
471
|
emit<TEventName extends keyof (NamespaceData[TNamespace]["customEvents"] & ClientEvents)>(name: TEventName, args: (NamespaceData[TNamespace]["customEvents"] & ClientEvents)[TEventName]): void {
|
package/src/Events.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { NamespaceEnums, NamespaceData } from "../generated/namespaceData";
|
|
2
2
|
import { DBI } from "./DBI";
|
|
3
|
+
import { TDBIMessageCommandArgumentErrorTypes } from "./methods/handleMessageCommands";
|
|
3
4
|
import { ClientEvents } from "./types/Event";
|
|
4
5
|
import { IDBIBaseExecuteCtx, TDBIRateLimitTypes } from "./types/Interaction";
|
|
6
|
+
import { FakeMessageInteraction } from "./types/other/FakeMessageInteraction";
|
|
5
7
|
import { DBILocale } from "./types/other/Locale";
|
|
8
|
+
import Discord from "discord.js";
|
|
6
9
|
|
|
7
|
-
export type TDBIEventNames = "beforeInteraction" | "afterInteraction" | "interactionRateLimit" | "beforeEvent" | "afterEvent" | "interactionError" | "eventError";
|
|
10
|
+
export type TDBIEventNames = "beforeInteraction" | "afterInteraction" | "interactionRateLimit" | "beforeEvent" | "afterEvent" | "interactionError" | "eventError" | "messageCommandArgumentError";
|
|
8
11
|
|
|
9
12
|
export type TDBIEventHandlerCtx<TNamespace extends NamespaceEnums> = {
|
|
10
13
|
[K in keyof (ClientEvents & NamespaceData[TNamespace]["customEvents"])]: { other: Record<string, any>, locale?: { guild: DBILocale<TNamespace> }, eventName: K } & (ClientEvents & NamespaceData[TNamespace]["customEvents"])[K]
|
|
@@ -69,6 +72,12 @@ export class Events<TNamespace extends NamespaceEnums> {
|
|
|
69
72
|
options?: { once: boolean }
|
|
70
73
|
): (() => any);
|
|
71
74
|
|
|
75
|
+
on(
|
|
76
|
+
eventName: "messageCommandArgumentError",
|
|
77
|
+
handler: (data: { message: Discord.Message, interaction: FakeMessageInteraction, error: { type: TDBIMessageCommandArgumentErrorTypes, option: any, index: number, extra?: any }, value: any }) => Promise<boolean> | boolean,
|
|
78
|
+
options?: { once: boolean }
|
|
79
|
+
): (() => any);
|
|
80
|
+
|
|
72
81
|
on(eventName: TDBIEventNames, handler: (data: any) => Promise<boolean> | boolean, options: { once: boolean } = { once: false }): (() => any) {
|
|
73
82
|
if (!this.handlers.hasOwnProperty(eventName)) this.handlers[eventName] = [];
|
|
74
83
|
if (options.once) {
|