forked from Galactic/galactic-bot
Bugfix to displaying missing permissions
This commit is contained in:
parent
2a4ea0cb25
commit
8c6ba57db4
@ -8,17 +8,14 @@ const safeCommands = [ 'command:settings', 'command:grant', 'command:revoke' ];
|
|||||||
|
|
||||||
class Permissions extends Inhibitor
|
class Permissions extends Inhibitor
|
||||||
{
|
{
|
||||||
|
|
||||||
constructor (client: DiscordClient)
|
constructor (client: DiscordClient)
|
||||||
{
|
{
|
||||||
|
|
||||||
super(client, {
|
super(client, {
|
||||||
name: 'permissions',
|
name: 'permissions',
|
||||||
priority: 5,
|
priority: 5,
|
||||||
guarded: true,
|
guarded: true,
|
||||||
guild: true
|
guild: true
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async execute (invoker: InvokerWrapper, command: Pick<Command, 'resolveable' | 'memberPermissions'>, override: PermissionsString[] | null = null)
|
async execute (invoker: InvokerWrapper, command: Pick<Command, 'resolveable' | 'memberPermissions'>, override: PermissionsString[] | null = null)
|
||||||
|
@ -16,7 +16,7 @@ const flagReg = /(?:^| )(?<flag>(?:--[a-z0-9]{3,})|(?:-[a-z]{1,2}))(?:$| )/iu;
|
|||||||
type ErrorParams = {
|
type ErrorParams = {
|
||||||
type: string,
|
type: string,
|
||||||
inhibitor?: Inhibitor,
|
inhibitor?: Inhibitor,
|
||||||
args?: FormatParams,
|
params?: FormatParams | null,
|
||||||
error?: CommandError | boolean
|
error?: CommandError | boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,211 +599,6 @@ class CommandHandler extends Observer
|
|||||||
return { options: args, verbose: true };
|
return { options: args, verbose: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should be unnecessary -- moved to commandoption
|
|
||||||
// async _parseOption (interaction, option)
|
|
||||||
// {
|
|
||||||
// const { guild } = interaction;
|
|
||||||
|
|
||||||
// const types = {
|
|
||||||
// POINTS: (value) =>
|
|
||||||
// {
|
|
||||||
// return { value };
|
|
||||||
// },
|
|
||||||
// ROLES: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const roles = await guild.resolveRoles(args);
|
|
||||||
// if (!roles.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: roles };
|
|
||||||
// },
|
|
||||||
// MEMBERS: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const members = await guild.resolveMembers(args, option.strict);
|
|
||||||
// if (!members.length)
|
|
||||||
// return { error: true, message: option.strict ? guild.format('O_COMMANDHANDLER_TYPEMEMBER_STRICT') : null };
|
|
||||||
// return { value: members };
|
|
||||||
// },
|
|
||||||
// USERS: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const users = await guild.resolveUsers(args, option.strict);
|
|
||||||
// if (!users.length)
|
|
||||||
// return { error: true, message: option.strict ? guild.format('O_COMMANDHANDLER_TYPEUSERS_STRICT') : null };
|
|
||||||
// return { value: users };
|
|
||||||
// },
|
|
||||||
// CHANNELS: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const channels = await guild.resolveChannels(args);
|
|
||||||
// if (!channels.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: channels };
|
|
||||||
// },
|
|
||||||
// TEXT_CHANNELS: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const channels = await guild.resolveChannels(args, null, (channel) => channel.type === ChannelType.GuildText);
|
|
||||||
// if (!channels.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: channels };
|
|
||||||
// },
|
|
||||||
// VOICE_CHANNELS: async (string) =>
|
|
||||||
// {
|
|
||||||
// const args = Util.parseQuotes(string).map(([ str ]) => str);
|
|
||||||
// const channels = await guild.resolveChannels(args, null, (channel) => channel.type === ChannelType.GuildVoice);
|
|
||||||
// if (!channels.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: channels };
|
|
||||||
// },
|
|
||||||
// TIME: (string) =>
|
|
||||||
// {
|
|
||||||
// const value = this.client.resolver.resolveTime(string);
|
|
||||||
// if (value === null)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value };
|
|
||||||
// },
|
|
||||||
// COMPONENT: (string) =>
|
|
||||||
// {
|
|
||||||
// const [ component ] = this.client.resolver.components(string, 'any');
|
|
||||||
// if (!component)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: component };
|
|
||||||
// },
|
|
||||||
// COMPONENTS: (string) =>
|
|
||||||
// {
|
|
||||||
// const strings = string.split(' ');
|
|
||||||
// const components = [];
|
|
||||||
// for (const str of strings)
|
|
||||||
// {
|
|
||||||
// const [ component ] = this.client.resolver.components(str, 'any');
|
|
||||||
// if (component && !components.includes(component))
|
|
||||||
// components.push(component);
|
|
||||||
// }
|
|
||||||
// if (!components.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: components };
|
|
||||||
// },
|
|
||||||
// COMMAND: (string) =>
|
|
||||||
// {
|
|
||||||
// const [ command ] = this.client.resolver.components(string, 'command');
|
|
||||||
// if (!command)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: command };
|
|
||||||
// },
|
|
||||||
// COMMANDS: (string) =>
|
|
||||||
// {
|
|
||||||
// const strings = string.split(' ');
|
|
||||||
// const commands = [];
|
|
||||||
// for (const str of strings)
|
|
||||||
// {
|
|
||||||
// const [ command ] = this.client.resolver.components(str, 'command');
|
|
||||||
// if (command && !commands.includes(command))
|
|
||||||
// commands.push(command);
|
|
||||||
// }
|
|
||||||
// if (!commands.length)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: commands };
|
|
||||||
// },
|
|
||||||
// MODULE: (string) =>
|
|
||||||
// {
|
|
||||||
// const [ module ] = this.client.resolver.components(string, 'module');
|
|
||||||
// if (!module)
|
|
||||||
// return { error: true };
|
|
||||||
// return { value: module };
|
|
||||||
// },
|
|
||||||
// STRING: (string) =>
|
|
||||||
// {
|
|
||||||
// return { error: false, value: string };
|
|
||||||
// },
|
|
||||||
// INTEGER: (integer) =>
|
|
||||||
// {
|
|
||||||
// if (option.minimum !== undefined && integer < option.minimum)
|
|
||||||
// return { error: true };
|
|
||||||
// if (option.maximum !== undefined && integer > option.maximum)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: parseInt(integer) };
|
|
||||||
// },
|
|
||||||
// BOOLEAN: (boolean) =>
|
|
||||||
// {
|
|
||||||
// boolean = this.client.resolver.resolveBoolean(boolean);
|
|
||||||
// return { error: false, value: boolean };
|
|
||||||
// },
|
|
||||||
// MEMBER: async (user) =>
|
|
||||||
// {
|
|
||||||
// let member = null;
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// member = await guild.members.fetch(user);
|
|
||||||
// }
|
|
||||||
// catch (error)
|
|
||||||
// {} // eslint-disable-line no-empty
|
|
||||||
// if (!member)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: member };
|
|
||||||
// },
|
|
||||||
// USER: async (user) =>
|
|
||||||
// {
|
|
||||||
// user = await this.client.users.fetch(user);
|
|
||||||
// return { error: false, value: user };
|
|
||||||
// },
|
|
||||||
// TEXT_CHANNEL: async (channel) =>
|
|
||||||
// {
|
|
||||||
// channel = await guild.resolveChannel(channel);
|
|
||||||
// if (channel.type !== ChannelType.GuildText)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: channel };
|
|
||||||
// },
|
|
||||||
// VOICE_CHANNEL: async (channel) =>
|
|
||||||
// {
|
|
||||||
// channel = await guild.resolveChannel(channel);
|
|
||||||
// if (channel.type !== ChannelType.GuildVoice)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: channel };
|
|
||||||
// },
|
|
||||||
// CHANNEL: async (channel) =>
|
|
||||||
// {
|
|
||||||
// channel = await guild.resolveChannel(channel);
|
|
||||||
// return { error: false, value: channel };
|
|
||||||
// },
|
|
||||||
// ROLE: async (role) =>
|
|
||||||
// {
|
|
||||||
// role = await guild.roles.fetch(role);
|
|
||||||
// return { error: false, value: role };
|
|
||||||
// },
|
|
||||||
// MENTIONABLE: (mentionable) =>
|
|
||||||
// {
|
|
||||||
// return { error: false, value: mentionable };
|
|
||||||
// },
|
|
||||||
// NUMBER: (number) =>
|
|
||||||
// {
|
|
||||||
// if (option.minimum !== undefined && number < option.minimum)
|
|
||||||
// return { error: true };
|
|
||||||
// if (option.maximum !== undefined && number > option.maximum)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: number };
|
|
||||||
// },
|
|
||||||
// FLOAT: (float) =>
|
|
||||||
// {
|
|
||||||
// if (option.minimum !== undefined && float < option.minimum)
|
|
||||||
// return { error: true };
|
|
||||||
// if (option.maximum !== undefined && float > option.maximum)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: parseFloat(float) };
|
|
||||||
// },
|
|
||||||
// DATE: async (str) =>
|
|
||||||
// {
|
|
||||||
// const date = await this.client.resolver.resolveDate(str);
|
|
||||||
// if (!date)
|
|
||||||
// return { error: true };
|
|
||||||
// return { error: false, value: date };
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
|
|
||||||
// return types[option.type](option._rawValue);
|
|
||||||
// }
|
|
||||||
|
|
||||||
async _getCommand (message: MessageWrapper)
|
async _getCommand (message: MessageWrapper)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -880,7 +675,7 @@ class CommandHandler extends Observer
|
|||||||
inhibitor: () =>
|
inhibitor: () =>
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
content: `${invoker.format(info.inhibitor!.index, { command: invoker.command.resolveable, ...info.args })}\n**\`${info.inhibitor!.resolveable}\`**`,
|
content: `${invoker.format(info.inhibitor!.index, { command: invoker.command.resolveable, ...info.params })}\n**\`${info.inhibitor!.resolveable}\`**`,
|
||||||
ephemeral: !invoker.replied
|
ephemeral: !invoker.replied
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ class BanInfraction extends Infraction
|
|||||||
{
|
{
|
||||||
await this.guild.members.ban(this.target!.id, {
|
await this.guild.members.ban(this.target!.id, {
|
||||||
reason: this._reason,
|
reason: this._reason,
|
||||||
deleteMessageDays: days
|
deleteMessageSeconds: days * 24 * 60 * 60
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch (error)
|
catch (error)
|
||||||
|
Loading…
Reference in New Issue
Block a user