Обработчик команд в боте
const botcmdPlugin = henta.getPlugin('common/botcmd');
Используйте консоль HENTA
p-install StandartHentaPlugins/botcmd
Все команды помещаются в папку commands, которую нужно создать в src-директории вашего бота. Если внутри каталога commands есть подкаталоги, то команды в них обретут поле 'type', которое будет равно имени каталога.
export default class HelloCommand {
name = 'привет'; // Имя команды
aliases = ['здарова', 'хай']; // Алиасы команды
description = 'моя топ команда'; // Описание команды
handler(ctx) { // Обработчик команды
ctx.answer(`🎭 Привет, ${ctx.user.firstName}!`);
}
}
Вы можете использовать подкоманды в своём боте:
class OtherSubcommand {
name = 'прочее';
aliases = ['другое'];
handler(ctx) {
ctx.answer([
'Ну и на вечерний ужин, мы вам представляем',
'- Ужик (обжаренный с пельмешками)'
]);
}
}
export default class MenuCommand {
name = 'привет';
description = 'меню ресторана';
subcommands = [
new OtherSubcommand()
]
handler(ctx) {
ctx.answer([
'А на завтрак и обед:',
'- Кетчуп',
'- Буузы',
'- И омлет'
]);
}
}
Можно использовать стандартный парсер аргументов, и даже использовать свои типы.
export default class BWGameCommand {
name = 'бв';
description = 'черное/белое';
arguments = {
resp: { name: 'ответ', type: 'word' },
rate: { name: 'ставка', type: 'integer', optional: true }
};
handler(ctx) {
if (ctx.resp === 'черное') {
ctx.answer([
'Ну всё, ты проиграл',
ctx.params.rate && `Так еще и денег оставил, целых ${ctx.params.rate.toLocaleString()}`
]);
}
ctx.answer('Ты победил, денег не дам');
}
}
Можно использовать стандартный парсер аргументов, и даже использовать свои типы.
// Во время инициализации своего плагина
const { argumentParser } = henta.getPlugin('common/botcmd');
argumentParser.add('nothorse', async data => {
if (data.word === 'лошадь') {
return [true, '🤨 Нельзя писать лошадь, ты че не знал?!'];
}
return [false, `нелошадь а ${data.word}`];
});
Кэширование сбрасывается после перезапуска бота, помогает значительно сократить нагрузку и ускорить вашего бота.
export default class HelloCommand {
name = 'привет'; // Имя команды
aliases = ['здарова', 'хай']; // Алиасы команды
description = 'моя топ команда'; // Описание команды
cache = {
// user или all. Если user, то кэширование индивидуально для каждого пользователя.
type: 'all',
// Время жизни значения в миллисекундах.
ttl: 86400 * 1000
};
handler(ctx) { // Обработчик команды
ctx.answer(`🎭 Привет, кем бы ты не был!`);
}
}