Метод 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, чтобы добавить проверку типа чата, для которого будет доступна эта команда. Теперь команда будет выполняться только в диалоге с пользователем.
Такой подход позволяет гибко настраивать поведение команд, что особенно полезно при создании ботов с различными функциональными возможностями. В результате можно создавать более логичные, удобочитаемые и интуитивно понятные команды для пользователей.