Перейти к основному содержимому

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

примечание

Такой подход позволяет гибко настраивать поведение команд, что особенно полезно при создании ботов с различными функциональными возможностями. В результате можно создавать более логичные, удобочитаемые и интуитивно понятные команды для пользователей.