telegram-cms
Version:
It is a nodejs application to launch a Telegram bot in seconds with primary components.
131 lines (111 loc) • 4.26 kB
JavaScript
var name = 'settings';
var checkRoute = function(option){
var btnsArr = [
fn.mstr.settings['name'],
fn.mstr.settings['back'],
];
var result = {}
//check text message
if(option.text) btnsArr.forEach(btn => {
if(option.text === btn)
{
result.status = true;
result.button = btn;
result.routting = routting;
}
});
//check seperate section
if(option.speratedSection){
option.speratedSection.forEach(section => {
btnsArr.forEach(btn =>
{
if(section === btn){
result.status = true;
result.button = btn;
result.routting = routting;
}
});
});
}
//return
return result;
}
var show = function(userid, injectedtext)
{
fn.userOper.setSection(userid, fn.mstr.settings['name'], true);
var btns = fn.mstr.settings['btns'];
var list = [
btns['firstmess'],
btns['strToSticker'],
btns['rowColumns'],
btns['statistic'],
];
var back = fn.str.goToAdmin['back'];
var mess = (injectedtext) ? injectedtext : fn.mstr.settings['name'];
var replymarkup = fn.generateKeyboard({'custom': true, 'grid':true, 'list': list, 'back':back}, false);
global.fn.sendMessage(userid, mess, replymarkup);
}
async function showStatistic(userid)
{
let state = '📊 ' + 'آمار ' + '\n\n';
// users
let usersState = await fn.db.user.count().exec().then();
let newUserState = await fn.db.user.count({'date': Date.today()}).exec().then();
state += '👥 کاربران ' + usersState + '\n';
state += '👤 کاربران امروز ' + newUserState + '\n .';
global.fn.sendMessage(userid, state);
}
var routting = function(message, speratedSection, user, mName)
{
var text = message.text;
var last = speratedSection.length-1;
var btns = fn.mstr.settings.btns;
//show root
if(text === fn.mstr.settings['name'] || text === fn.mstr.settings['back']) show(message.from.id);
//first message of robot
else if (text === btns['firstmess'])
{
var mess = fn.mstr.settings.mess['firstmess'];
var replymarkup = fn.generateKeyboard({'section': fn.mstr.settings['back']}, true);
global.fn.sendMessage(message.from.id, mess, replymarkup);
fn.userOper.setSection(message.from.id, btns['firstmess'], true);
}
else if (speratedSection[3] === btns['firstmess'])
{
if(text.length < 10) {
global.fn.sendMessage(message.from.id, fn.mstr.settings.mess['shorttext']);
return;
}
global.robot.config.firstmessage = text;
global.robot.save();
show(message.from.id, fn.str['seccess']);
}
//host address
else if (text === btns['domain'])
{
var mess = fn.mstr.settings.mess['getdomain'];
var replymarkup = fn.generateKeyboard({'section': fn.mstr.settings['back']}, true);
global.fn.sendMessage(message.from.id, mess, replymarkup);
fn.userOper.setSection(message.from.id, btns['domain'], true);
}
else if (speratedSection[3] === btns['domain'])
{
global.robot.config.domain = text;
global.robot.save();
show(message.from.id, fn.str['seccess']);
}
//string to sticker
else if (text === btns['strToSticker'] || speratedSection[3] === btns['strToSticker'])
strToSticker.routting(message, speratedSection, user, mName);
// row columns settings
else if (text === btns['rowColumns'] || speratedSection[3] === btns['rowColumns'])
rowColumns.routting(message, speratedSection, user, mName);
//show statistic
else if(text == btns['statistic'])
showStatistic(user.userid);
}
let strToSticker = require('./strToSticker');
let rowColumns = require('./rowColumns');
var query = require('./query');
var upload = require('./upload');
module.exports = { name, checkRoute, query, upload, routting, show, strToSticker, rowColumns }