SmartAmountDialog is a tool designed to help process and validate numerical inputs from users, especially when it involves monetary amounts.
This tool is handy for checking conditions such as minimum and maximum amounts, integer-only inputs, and ensuring the amount doesn't exceed the user's current balance.
Key Features
Minimum and Maximum Values: Set boundaries for the input amount.
Integer-Only Values: Checks if the input number is an integer.
Customizable Error Messages: User-friendly messages for each type of error.
How It Works
First, you need to create an instance of SmartAmountDialog with necessary parameters. Here’s an example of how to do this:
let smartAmountDialog = new SmartAmountDialog({
min: 10, // Minimum acceptable amount
max: 100, // Maximum acceptable amount
curValue: 50, // Current amount (e.g., user's balance)
onlyInteger: true, // Requires only integer numbers
skipZero: false, // Don't skip zero values
dialogErrors: { // Error messages
invalid: "Not a number",
zero: "Your balance is zero",
notEnough: "Not enough funds",
small: "Amount too small",
big: "Amount too large",
notInteger: false // accept float on false and integer only on true
}
});
Usage
To use SmartAmountDialog to check an input amount, you call the accept method and pass the string value to it. If the method returns true, it means the input value passed all checks.
Otherwise, you can retrieve the error message from errMsg.
Example:
let userInput = "30"; // Imagine this is the value entered by the user
let isValid = smartAmountDialog.accept(userInput);
if (isValid) {
Bot.sendMessage("This amount is valid: " + smartAmountDialog.amount)
} else {
Bot.sendMessage("Error: " + smartAmountDialog.errMsg);
}
Using with SmartBot
For example, we already have:
smartBot object
command with "acceptAmount" name. It have checked Wait For Answer option.
Template
We can use SmartBot with Command Template:
// Template for command "acceptAmount"
acceptAmount:{
// any other fieilds here
/// ...
// we use "dialogErrors" section for error messages
dialogErrors: {
// if user enter not a number
invalid: "❌ *Invalid amount.*\n \"{_amount}\" - not valid." +
"\n\nPlease enter valid amount for withdraw request (max: {_curValue}).",
// if user have zero balance
zero: "Your balance is zero. \n\nPlease complete any task before.",
// if user enter amount more than balance
notEnough: "❌ *Invalid amount.*\n \"{_amount}\" - not enough balance." +
"\n\nPlease enter valid amount for withdraw request (max: {_curValue}).",
// if user enter less then min amount
small: "❌ *Invalid amount.*\n \"{_amount}\" - too small." +
"\n\nPlease enter valid amount for withdraw request (min: {_min}, max: {_curValue}).",
// if user enter too big then max amount
big: "❌ *Invalid amount.*\n \"{_amount}\" - too big." +
"\n\nPlease enter valid amount for withdraw request (max: {_max}).",
// if user enter not integer amount
notInteger: "❌ *Invalid amount.*\n \"{_amount}\" - not integer."
}
},
All fields:
Field
Description
_amount
amount for validation
_min
minimal value
_max
maximal value
_curValue
current value - amount must be less
Initialization
let smartAmountDialog = new SmartAmountDialog({
// options like befire:
min: 10, // Minimum acceptable amount
max: 100, // Maximum acceptable amount
curValue: 50, // Current amount (e.g., user's balance)
onlyInteger: true, // Requires only integer numbers
skipZero: false, // Don't skip zero values
// we need to pass smartbot now:
smart_bot: smartBot,
// and we pass errors from Template:
dialogErrors: smartBot.curCommand.dialogErrors
});