Code: Alles auswählen
var button = [{name: 'меню',button: ['Комната 1','Комната 2','Закрыть','меню']},
{name: 'Комната 1',button: ['Сценарии','Ручное управление','Назад','Закрыть','меню']},
{name: 'Сценарии', button: ['Сцена 1','Сцена 2','Назад','Закрыть','Комната 1']},
{name: 'Ручное управление', button: ['Действие 3','Действие 4','Назад','Закрыть','Комната 1']},
{name: 'Комната 2', button: ['Действие 1','Действие 2','Назад','Закрыть','меню']}
];
var menuUp = 'меню';
var first_tap = false;
on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));
//************************************
// меню
//************************************
var menu = {
reply_markup: {
inline_keyboard: [[],[]],
}
};
log("message_id = " + getState("telegram.0.communicate.requestMessageId").val);
log("menuUp = " + menuUp);
if (command === 'меню') first_tap = true;
if (command === 'Назад') command = menuUp;
var but1 = getButtonArray(button, 'name', command).toString();
if (but1.length > 0) { // проверяем, что строка не пустая
var but2 = but1.split(','); //преобразуем в массив
menuUp = but2.pop(); //вырезаем последний элемент
log ("but2 = " + JSON.stringify(but2));
if (but2.length > 0) { // проверяем что массив не пуст
var index = 0;
for (var i=0, len=but2.length; i<len; i++) {
if ((i > 1)&&(index < 1)) index = ++index;
menu.reply_markup.inline_keyboard[index].push({ text: but2[i], callback_data: but2[i]});
}
log(JSON.stringify(menu.reply_markup.inline_keyboard));
if (first_tap) {
sendTo('telegram.0', {user: user, text: 'Меню ' + command, reply_markup: menu.reply_markup});
first_tap = false;
} else sendTo('telegram', {
user: user,
text: 'Меню ' + command,
editMessageText: {
options: {
chat_id: getState("telegram.0.communicate.requestChatId").val,
message_id: getState("telegram.0.communicate.requestMessageId").val,
reply_markup: menu.reply_markup
}
}
});
}
} else log("but1 пуст");
//************************************
// Команды
//************************************
// ищем в тексте команды
if (command ==="Действие 1") {
//тут код что надо сделать
CommandDone();
}
if (command ==="Закрыть") {
sendTo('telegram', {
user: user,
text: 'Конец',
editMessageText: {
options: {
chat_id: getState("telegram.0.communicate.requestChatId").val,
message_id: getState("telegram.0.communicate.requestMessageId").val,
}
}
});
}
});
function CommandDone(){
sendTo('telegram', {
user: user,
text: 'Выполняю...',
editMessageText: {
options: {
chat_id: getState("telegram.0.communicate.requestChatId").val,
message_id: getState("telegram.0.communicate.requestMessageId").val,
}
}
});
}
function getButtonArray(obj, keyName, Name) {
var result = [];
for (var attr in obj) {
if (obj[attr] && typeof obj[attr] === 'object') {
result = result.concat(getButtonArray(obj[attr], keyName, Name));
}
if (attr === keyName && obj[attr] === Name) {
result.push(obj.button);
}
}
return result;
}