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,
|
BooleanParameter,
|
||||||
InputParameter,
|
InputParameter,
|
||||||
NumberParameter,
|
NumberParameter,
|
||||||
|
ObjectParameter,
|
||||||
StringParameter,
|
StringParameter,
|
||||||
} from "./Parameter.js";
|
} from "./Parameter.js";
|
||||||
import { Command } from "./Command.js";
|
import { Command } from "./Command.js";
|
||||||
@@ -216,6 +217,10 @@ export class CommandManager {
|
|||||||
case "channel":
|
case "channel":
|
||||||
case "role":
|
case "role":
|
||||||
case "user":
|
case "user":
|
||||||
|
parameters.push(
|
||||||
|
new ObjectParameter(p, inputParam?.value)
|
||||||
|
);
|
||||||
|
break;
|
||||||
case "string":
|
case "string":
|
||||||
parameters.push(
|
parameters.push(
|
||||||
new StringParameter(p, inputParam?.value)
|
new StringParameter(p, inputParam?.value)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { Guild } from "discord.js";
|
||||||
import { ParameterType, ParameterResolvable, Choice } from "./types.js";
|
import { ParameterType, ParameterResolvable, Choice } from "./types.js";
|
||||||
export interface ParameterSchema {
|
export interface ParameterSchema {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -72,3 +73,27 @@ export class NumberParameter extends InputParameter {
|
|||||||
super(parameter, parseFloat(value ? value.toString() : ""));
|
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 {
|
import {
|
||||||
|
CategoryChannel,
|
||||||
ClientOptions,
|
ClientOptions,
|
||||||
ColorResolvable,
|
ColorResolvable,
|
||||||
CommandInteraction,
|
CommandInteraction,
|
||||||
|
GuildMember,
|
||||||
ReplyMessageOptions,
|
ReplyMessageOptions,
|
||||||
|
Role,
|
||||||
|
TextChannel,
|
||||||
|
VoiceChannel,
|
||||||
} from "discord.js";
|
} from "discord.js";
|
||||||
import { InputParameter, ParameterSchema } from "./Parameter.js";
|
import { InputParameter, ParameterSchema } from "./Parameter.js";
|
||||||
import { PermissionResolvable, Message, MessageEmbed } from "discord.js";
|
import { PermissionResolvable, Message, MessageEmbed } from "discord.js";
|
||||||
@@ -66,7 +71,16 @@ export type ParameterType =
|
|||||||
| "role"
|
| "role"
|
||||||
| "channel"
|
| "channel"
|
||||||
| "mentionable";
|
| "mentionable";
|
||||||
export type ParameterResolvable = string | boolean | number | undefined;
|
export type ParameterResolvable =
|
||||||
|
| string
|
||||||
|
| boolean
|
||||||
|
| number
|
||||||
|
| Role
|
||||||
|
| GuildMember
|
||||||
|
| TextChannel
|
||||||
|
| VoiceChannel
|
||||||
|
| CategoryChannel
|
||||||
|
| undefined;
|
||||||
export interface Choice {
|
export interface Choice {
|
||||||
name: string;
|
name: string;
|
||||||
value: string;
|
value: string;
|
||||||
|
|||||||
Reference in new issue
Block a user