Archived
ObjectParameter
This commit is contained in:
1 parent
a8fd1c2ce7
commit
6144f3e577
3 files changed
+45
-1
No files matched your search
@@ -4,6 +4,7 @@ import {
|
||||
BooleanParameter,
|
||||
InputParameter,
|
||||
NumberParameter,
|
||||
ObjectParameter,
|
||||
StringParameter,
|
||||
} from "./Parameter.js";
|
||||
import { Command } from "./Command.js";
|
||||
@@ -216,6 +217,10 @@ export class CommandManager {
|
||||
case "channel":
|
||||
case "role":
|
||||
case "user":
|
||||
parameters.push(
|
||||
new ObjectParameter(p, inputParam?.value)
|
||||
);
|
||||
break;
|
||||
case "string":
|
||||
parameters.push(
|
||||
new StringParameter(p, inputParam?.value)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Guild } from "discord.js";
|
||||
import { ParameterType, ParameterResolvable, Choice } from "./types.js";
|
||||
export interface ParameterSchema {
|
||||
name: string;
|
||||
@@ -72,3 +73,27 @@ export class NumberParameter extends InputParameter {
|
||||
super(parameter, parseFloat(value ? value.toString() : ""));
|
||||
}
|
||||
}
|
||||
export class ObjectParameter extends InputParameter {
|
||||
constructor(parameter: Parameter, value: ParameterResolvable) {
|
||||
if (
|
||||
parameter.type != "channel" &&
|
||||
parameter.type != "mentionable" &&
|
||||
parameter.type != "user" &&
|
||||
parameter.type != "role"
|
||||
) {
|
||||
throw new Error(`Parameter type mismatch`);
|
||||
}
|
||||
super(parameter, value);
|
||||
}
|
||||
|
||||
async toObject(guild: Guild, type: "channel" | "user" | "role") {
|
||||
switch (type) {
|
||||
case "channel":
|
||||
return await guild.channels.fetch(this.value?.toString() || "");
|
||||
case "role":
|
||||
return await guild.roles.fetch(this.value?.toString() || "");
|
||||
case "user":
|
||||
return await guild.members.fetch(this.value?.toString() || "");
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
-1
@@ -1,8 +1,13 @@
|
||||
import {
|
||||
CategoryChannel,
|
||||
ClientOptions,
|
||||
ColorResolvable,
|
||||
CommandInteraction,
|
||||
GuildMember,
|
||||
ReplyMessageOptions,
|
||||
Role,
|
||||
TextChannel,
|
||||
VoiceChannel,
|
||||
} from "discord.js";
|
||||
import { InputParameter, ParameterSchema } from "./Parameter.js";
|
||||
import { PermissionResolvable, Message, MessageEmbed } from "discord.js";
|
||||
@@ -66,7 +71,16 @@ export type ParameterType =
|
||||
| "role"
|
||||
| "channel"
|
||||
| "mentionable";
|
||||
export type ParameterResolvable = string | boolean | number | undefined;
|
||||
export type ParameterResolvable =
|
||||
| string
|
||||
| boolean
|
||||
| number
|
||||
| Role
|
||||
| GuildMember
|
||||
| TextChannel
|
||||
| VoiceChannel
|
||||
| CategoryChannel
|
||||
| undefined;
|
||||
export interface Choice {
|
||||
name: string;
|
||||
value: string;
|
||||
|
||||
Reference in new issue
Block a user