меню? Не inline, а обычные под формой отправки сообщений. google упорно подсовывает inline варианты
Пришлось мозг напрячь, чтоб понят о чем ты, хех. Вряд ли её нет. Это было бы слишком странно
Такое имею в виду. Сама возможность вызвать меню есть, но мне нужно сделать вложенное меню с множеством подпунктов. Пока как вариант вижу делать отдельное меню на каждый уровень вложенности, и отдельно вызывать его через bot.hears
Типа: Нажал на 1 пунк -> клавиатура изменилась ?
Да Меню -> подменю 1 -> подменю 2 и т.д.
Делал просто с помощью вызова новой клавиатуры.
понял, ну видимо так придется. А меню в таком случае не поломается при идентичных названиях кнопок? Например, если на разных уровнях сделать кнопки с одинаковыми именами 1,2,3 т т.п.?
По идее сломается, но в тегеграфе есть сцены (я на другой либе пишу и подобное решение делал сам)
как все сложно. Есть telegram-node-bot, там меню можно накидать через специальную функцию, и уровни вложенности поддерживаются просто путем добавления нового массива в массив с верхним уровнем
Чтоз функция? Сам на нем пишу, но делал через генераторы
runMenu Там менюшка за 2 минуты делается: кнопка-1: { кнопка-1-1: { }, кнопка-1-2: { } }
т.е. кнопка-1-1 это уже подменю
А зачем тогда телеграф используешь?
у того есть свои косяки + автор его не поддерживает уже лет 5
Интересно, будет время, могу библиотеку отдельную сделать
странно, что до этого никто не накидал)
Скинь доку, чекну как у них работает
https://habr.com/ru/post/276389/ https://github.com/Naltox/telegram-node-bot
Спасиб, видимо невнимательно читал
Стоп, это не та либа, кек. Просто называются ужасно похоже
это не либа, это фреймворк. Человек его написал еще когда только в TG появился API для ботов, и больше его не поддерживает
А в чем разница между фреймворком и библиотекой? Как по мне всё что не создает вокруг себя отдельной периферии — библиотека
Я имел в виду, что к тому же telegraf ты его не прикрутишь, это бибилиотека со своей логикой
Было бы желание, на самом деле. Но, как я и говорил, реализовать подобное можно с помощью сцен. Если хочешь более ванильное решение — могу скинуть
я пока осваиваюсь, почитаю что такое сцены
если есть ванильный вариант, скинь пожалуйста, не будет лишним изучить
Тебе нужны 2 вещи: генератор и сама функция, которая будет всё обрабатывать. function* generator_callback_data() { yield (f)=>{ console.log('Started generator'); } ................................... yield (f)=>{ console.log('end') } } Это генератор, где на каждый шаг вызывается своя функция. Получается при вызове первой команды, ты блокируешь основной блок обработки сообщений и начинаешь сообщения передавать в генератор, как: let it = generator_callback_data() if(falg){ let k = it.next().value if(k == undefined){ flag = false }else{ k(msg) } } Сами обработки нужно поместить в генератор, где F — то что ты передаешь в обрботчике. Когда шаги закончатся, то в k вернется undefined. Можно это сделать иначе, и перенести в сам генератор, не суть важно. Всё что дает такое решение — упорядоченное выполнение, без необходимости делать кучу проверок. Из самого генератора можно будет выйти в любой момент, очистив флаг. (И важно заново присвоить генератор)
Спасибо, попробую
@md_3t вот тут писал. А вообще попробуй загуглить
Обсуждают сегодня