Using argument validators
Sometimes you're going to want an argument to be a certain thing, e.g. check if it's a specific piece of text, or check the length. This can be accomplished with a validate
function in your arg.
Basic validators
What if you have a command where your first argument has to match a certain text? For example: if you wanted your say
command to allow a maximum of 200 characters. It's very simple.
First, pull the argument from your say command:
args: [
{
key: 'text',
prompt: 'What text would you like the bot to say?',
type: 'string',
},
],
Add a blank validate
function to the arg.
args: [
{
key: 'text',
prompt: 'What text would you like the bot to say?',
type: 'string',
validate: text => {},
},
],
Inside your validate
function, check to see if the length is below 201 characters.
args: [
{
key: 'text',
prompt: 'What text would you like the bot to say?',
type: 'string',
validate: text => text.length < 201,
},
],
And now you've got a validator that checks if the length is 200!
oneOf
Another property you can use to validate arguments is the oneOf
option. This option forces the argument of be one of the options provided in an array. If you wanted to make an argument that required a "yes" or "no" response, you'd do this:
args: [
{
key: 'option',
prompt: 'Yes or No?',
type: 'string',
oneOf: ['yes', 'no'],
},
],
That's it! This will automatically be case-insensitive, so you don't have to worry about that.