telegram-cms
Version:
It is a nodejs application to launch a Telegram bot in seconds with primary components.
117 lines (103 loc) • 3.28 kB
JavaScript
fn = global.fn;
var custome = function(arr, grid, keys, back, columns, options={})
{
//grid mode
if(grid){
var items = arr;
var row = [];
var secondPosition = true;
let rowNumber = 0;
let tempColumns = columns;
//make grid
for (var i = 0; i < items.length; i)
{
// customRows
if(options.customRows)
{
options.customRows.rows.forEach(r =>
{
if(r['rowNumber'] == rowNumber) tempColumns = r['totalColumns'];
});
}
for(let i2 =0; i2 < tempColumns; i2++)
{
const btn = items[i];
if(btn) row.push(btn);
i++;
}
keys.reply_markup.keyboard.push(row);
row = [];
rowNumber++;
tempColumns = columns;
}
}
//list
else{
arr.forEach(function(element) {
if(typeof element === 'string')keys.reply_markup.keyboard.push([element]);
else keys.reply_markup.keyboard.push(element);
}, this);
}
//back button
if(back){
keys.reply_markup.keyboard.push([back]);
}
else{
//keys.reply_markup.keyboard.push([fn.str['backToMenu']]);
}
return keys;
}
module.exports = function(flag, onlyBack, columns)
{
columns = (!columns) ? 2 : columns;
var keys = {
"reply_markup": {
'keyboard': [],
'resize_keyboard': true
}
}
if(onlyBack){
keys.reply_markup.keyboard.push([flag.section]);
return keys;
}
//costume keyboard
else if(flag.custom === true){
//console.log('generate costume keyboard');
return custome(flag.list, flag.grid, keys, flag.back, columns, flag);
}
//main menu keybard
else if(flag.section === fn.str['mainMenu'])
{
var items = (flag.list) ? flag.list : [];
// row = [];
// var secondPosition = true;
// for (var i = 0; i < items.length; i++)
// {
// var btnsLevel = [];
// btnsLevel.push(items[i]);
// if(secondPosition){
// i +=1;
// if(i < items.length)
// btnsLevel.push(items[i]);
// secondPosition = false;
// }
// if(i < items.length-1){secondPosition = true;}
// keys.reply_markup.keyboard.push(btnsLevel);
// }
keys = custome(items, true, keys, null, columns, flag);
//
if(flag.isAdmin)
keys.reply_markup.keyboard.push([fn.str.goToAdmin['name']]);
return keys;
}
//admin section
else if(flag.section === fn.str.goToAdmin.name){
var items = [];
for (item in flag.list){
var element = flag.list[item];
var key = global.robot.config.modules[element.modulename];
if(key) items.push(element.name);
}
return custome(items, true, keys, flag.back, columns);
}
}