forked from Galactic/galactic-bot
guild only options
This commit is contained in:
parent
77ec8f8785
commit
81c307a11b
@ -5,6 +5,9 @@ This is an issue that should be reported to a bot developer.
|
|||||||
[O_COMMANDHANDLER_GUILDONLY]
|
[O_COMMANDHANDLER_GUILDONLY]
|
||||||
This command can only be run in servers.
|
This command can only be run in servers.
|
||||||
|
|
||||||
|
[O_COMMANDHANDLER_GUILDONLY_OPT]
|
||||||
|
The option `{option}` is only valid in servers.
|
||||||
|
|
||||||
[O_COMMANDHANDLER_TYPEINTEGER]
|
[O_COMMANDHANDLER_TYPEINTEGER]
|
||||||
The command option {option} requires an integer between `{min}` and `{max}`.
|
The command option {option} requires an integer between `{min}` and `{max}`.
|
||||||
|
|
||||||
|
@ -221,6 +221,7 @@ class CommandHandler extends Observer {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (matched.guildOnly) return { error: true, params: { option: matched.name }, index: 'O_COMMANDHANDLER_GUILDONLY_OPT' };
|
||||||
const rawValue = matched.plural && typeof option.value === 'string' ? Util.parseQuotes(option.value).map(([x]) => x) : option.value;
|
const rawValue = matched.plural && typeof option.value === 'string' ? Util.parseQuotes(option.value).map(([x]) => x) : option.value;
|
||||||
const newOption = matched.clone(rawValue, guild, true);
|
const newOption = matched.clone(rawValue, guild, true);
|
||||||
const parsed = await newOption.parse();
|
const parsed = await newOption.parse();
|
||||||
@ -320,6 +321,7 @@ class CommandHandler extends Observer {
|
|||||||
return f.name === _flag || aliased;
|
return f.name === _flag || aliased;
|
||||||
});
|
});
|
||||||
if (!flag) return { error: true, index: 'O_COMMANDHANDLER_UNRECOGNISED_FLAG', params: { flag: _flag } };
|
if (!flag) return { error: true, index: 'O_COMMANDHANDLER_UNRECOGNISED_FLAG', params: { flag: _flag } };
|
||||||
|
else if (flag.guildOnly) return { error: true, params: { option: flag.name }, index: 'O_COMMANDHANDLER_GUILDONLY_OPT' };
|
||||||
|
|
||||||
// console.log('aliased', aliased);
|
// console.log('aliased', aliased);
|
||||||
params.splice(index, 1, null);
|
params.splice(index, 1, null);
|
||||||
@ -349,7 +351,8 @@ class CommandHandler extends Observer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// console.log('params', params);
|
// console.log('params', params);
|
||||||
const options = activeCommand.options.filter((opt) => !opt.flag && (opt.type !== 'STRING' || opt.choices.length));
|
let options = activeCommand.options.filter((opt) => !opt.flag && (opt.type !== 'STRING' || opt.choices.length));
|
||||||
|
if(!guild) options = options.filter((opt) => !opt.guildOnly);
|
||||||
// const choiceOpts = activeCommand.options.filter((opt) => opt.choices.length);
|
// const choiceOpts = activeCommand.options.filter((opt) => opt.choices.length);
|
||||||
const stringOpts = activeCommand.options.filter((opt) => !opt.flag && !opt.choices.length && opt.type === 'STRING');
|
const stringOpts = activeCommand.options.filter((opt) => !opt.flag && !opt.choices.length && opt.type === 'STRING');
|
||||||
// console.log('non-flag options', options.map((opt) => opt.name));
|
// console.log('non-flag options', options.map((opt) => opt.name));
|
||||||
@ -590,7 +593,7 @@ class CommandHandler extends Observer {
|
|||||||
async _getCommand(message) {
|
async _getCommand(message) {
|
||||||
|
|
||||||
if (!this._mentionPattern) this._mentionPattern = new RegExp(`^(<@!?${this.client.user.id}>)`, 'iu');
|
if (!this._mentionPattern) this._mentionPattern = new RegExp(`^(<@!?${this.client.user.id}>)`, 'iu');
|
||||||
const [arg1, arg2, ...args] = message.content.split(' ');
|
const [arg1, arg2, ...args] = message.content.split(' ').filter((str) => str.length);
|
||||||
|
|
||||||
if (message.guild) await message.guild.settings();
|
if (message.guild) await message.guild.settings();
|
||||||
const userWrapper = await this.client.getUserWrapper(message.author.id);
|
const userWrapper = await this.client.getUserWrapper(message.author.id);
|
||||||
|
@ -111,6 +111,10 @@ class CommandOption {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get guildOnly() {
|
||||||
|
return ['ROLE', 'MEMBER', 'CHANNEL'].some((t) => this.type.includes(t));
|
||||||
|
}
|
||||||
|
|
||||||
usage(guild, verbose = false) {
|
usage(guild, verbose = false) {
|
||||||
let name = `》 ${this.name.toUpperCase()} [${this.type}]`;
|
let name = `》 ${this.name.toUpperCase()} [${this.type}]`;
|
||||||
let flagProps = ['flag'];
|
let flagProps = ['flag'];
|
||||||
|
Loading…
Reference in New Issue
Block a user