Создание синтаксиса легко-масштабируемого вложенного меню для телеграм бота на js
Я разрабатываю собственный телеграм фреймворк. По опыту знаю, что большая часть времени отведенная на разработку уходит на создание меню. Сейчас вложенное меню на моем фреймворке может выглядеть так:
[
{
message: '/start', // тригер на сообщение
handler: (usr) => usr.reply('menu header', { // обработчик
reply_markup: {
keyboard: [
[ 'submenu name' ]
],
resize_keyboard: true
}
})
},
{
message: 'submenu name',
handler: (usr) => usr.reply('submenu header', {
reply_markup: {
keyboard: [
[ 'subsubmenu name' ]
],
resize_keyboard: true
}
})
},
{
message: 'subsubmenu name',
handler: (usr) => usr.reply('menu end')
}
]
Но оно может состоять из 5-7 субменю, из-за чего разработка сильно замедляется.
Как бы лучше мог выглядеть этот код? Есть ли красивые решения для этого с помощью создания babel плагина (как jsx)? или лучше просто создать веб генератор меню?
Ответы (1 шт):
Автор решения: martiliones
→ Ссылка
module.exports = function () {
return {
title: 'Main menu',
description: 'some desc',
markup: '<b> %t </b> \n \n %d',
children: [
[
{
title: 'Balance',
children: [
[ 'Add funds', 'Withdraw' ],
[ 'Create deposit from balance', 'My desopits' ],
[ 'Calculator' ],
[ 'Back', 'Main menu' ]
]
},
{
title: 'Referral system',
children: [
[ 'Add funds', 'Withdraw' ],
[ 'Create deposit from balance', 'My desopits' ]
]
}
],
[
{
title: 'My transactions',
children: [
[ 'Add funds', 'Withdraw' ],
[ 'Create deposit from balance', 'My desopits' ],
[ 'Calculator' ],
[ 'Back', 'Main menu']
]
},
'Russian'
]
]
}
};