Клавиатурки для ботов
Я сейчас думаю над тем, как бы сделать удобный способ создания клавиатур для ботов. Идея такая: клавиатуры для ботов выглядят просто, но кодить их большая мука, что и хотелось бы исправить. Проблемы, если их оформлять во что-то вроде списка, следующие:
* Реакции для кнопок, которые просто открывают подменю, получаются очень громоздкие
* Регистрация КАЖДОГО обработчика происходит отдельно и оторвано от того, где находится кнопка. То есть кнопка находится в куче мест - там, где мы редактируем сообщение для добавления кнопки, там, где реагируем и там, где хотим реакцию на кнопку как-то еще зарегистрировать (через команду, например)
* Регистрация оказывается крайне нелогичной. Любая вложенность в итоге раскладывается в какую-то плоскую структуру.
Для решения я начал пилить библиотеку https://github.com/InsanusMokrassar/tgbotapi.keyboards . На фото собственно то, как оно сейчас может использоваться, и там есть одна большая проблема:
Как зарегать всех слушателей, когда пункты меню динамичные? Я столкнулся с этим, когда делал клавиатурку с пагинацией: кнопки динамично появляются/исчезают, а список данных вообще может быть пустой.
Сейчас спокойно можно делать менюшки на базе waiters, потому что они работают от команды и в определённом скоупе (пользователя, например).
* Реакции для кнопок, которые просто открывают подменю, получаются очень громоздкие
* Регистрация КАЖДОГО обработчика происходит отдельно и оторвано от того, где находится кнопка. То есть кнопка находится в куче мест - там, где мы редактируем сообщение для добавления кнопки, там, где реагируем и там, где хотим реакцию на кнопку как-то еще зарегистрировать (через команду, например)
* Регистрация оказывается крайне нелогичной. Любая вложенность в итоге раскладывается в какую-то плоскую структуру.
Для решения я начал пилить библиотеку https://github.com/InsanusMokrassar/tgbotapi.keyboards . На фото собственно то, как оно сейчас может использоваться, и там есть одна большая проблема:
Как зарегать всех слушателей, когда пункты меню динамичные? Я столкнулся с этим, когда делал клавиатурку с пагинацией: кнопки динамично появляются/исчезают, а список данных вообще может быть пустой.
Сейчас спокойно можно делать менюшки на базе waiters, потому что они работают от команды и в определённом скоупе (пользователя, например).