Метод isExecutable
Метод isExecutable
- это метод в классе Command
, который проверяет, может ли заданная команда быть выполнена на основании входящего сообщения. Этот метод принимает один аргумент - объект сообщения пользователя.
Параметры
message
- объект классаUserMessageContext
, содержащий информацию о входящем сообщении пользователя, такую как текст сообщения, идентификатор чата и т.д.
Логика по умолчанию
Изначально, метод isExecutable
возвращает логическое значение, которое равно true
, если входящее сообщение имеет то же имя команды, что и экземпляр класса Command
, и false
в противном случае. Если метод isExecutable
возвращает true
, то будет вызван метод execute
экземпляра Command
для выполнения команды.
public isExecutable(message: UserMessageContext): boolean {
return message.hasCommand === this.params.name;
}
Переопределение
В классе Command
метод isExecutable
можно переопределить, чтобы изменить логику определения того, может ли данная команда быть выполнена. Например, в зависимости от конкретных требований команды можно проверять дополнительные параметры сообщения, а не только сверку имени команды.
Метод isExecutable
может быть расширен следующим образом:
import { Command, UserMessageContext, CommandHandler } from "evogram";
@CommandHandler("start")
class GreetingCommand extends Command {
public isExecutable(message: MessageContext): boolean {
return message.hasCommand === this.params.name && message.chat.type === "private";
}
public execute(message: MessageContext) {
// Логика выполнения команды
}
}
В приведенном примере метод isExecutable
был переопределен в классе GreetingCommand
, чтобы добавить проверку типа чата, для которого будет доступна эта команда. Теперь команда будет выполняться только в диалоге с пользователем.
Такой подход позволяет гибко настраивать поведение команд, что особенно полезно при создании ботов с различными функциональными возможностями. В результате можно создавать более логичные, удобочитаемые и интуитивно понятные команды для пользователей.