меня в 1м файле происходит всё, что можно. И это не совсем удобно будет расширять.
Вопрос такой. Существует ли возможность словить любую команду, которая обращает к конкретному боту?
В чатах телега делает /command@bot.
В коде можно использовать bot.command("command", () => {}). Но что делать, если я хочу разделить все команды бота по файлам? Допустим в контроллере ловить любую команду и проверять на наличие её в мапе/массиве и выполнять. Существует ли способ, кроме bot,on("message"..... { bot.message,text.indexOf("@botname") }?
лучше так, на мой взгляд: bot.command('cmd', handleCmd)
в таком случае у меня будет какой-нибудь bot.js, который будет выглядеть так: bot.command('cmd', handleCmd..) bot.command('cmd1', handleCmd..) bot.command('cmd2', handleCmd..) bot.command('cmd2', handleCmd..) bot.command('cmd3', handleCmd..) bot.command('cmd4', handleCmd..) bot.command('cmd5', handleCmd..) bot.command('cmd6', handleCmd..) bot.command('cmd7', handleCmd..) bot.command('cmd8', handleCmd..) При добавлении новой команды я буду вынужден: Создать файл с функцией Дописать в файл команду. Проблему не решает, разве что выносит функции в отдельные файлы
вынеси обработчики в отдельный файл, а логику уже куда хочешь
Один обработчик на все команды реально?
bot.on('text', console.log)
регулярка не поможет в таком случае?
вот тебе 1 обработчик
это любой текст ловит
а ты шо слепой?
ну исправил
хм. Не думал. Как рассмотрите такой вариант (псевдокод) bot.on("text", ctx => { //проверяем на / в начале. //проверяем наличие @ //верно -> проверка на бота, к которому обращение. Не мой - ретурн //поиск зарегистрированной команды до @ или до конца файла. commands.get("command").run(args) })
там регулярку прямо в обработчике писать можно
Обсуждают сегодня