Доброго времени суток.
Тренировался с restApi Telegram, захотелось написать простенький примерчик. Написал, он работал. Потом в какой-то момент, понял что код слишком крив, чтобы оставлять его для всех. Решил переписать, настолько, насколько хватило скиллов и опыта (учу JS на начальном уровне). Однако, к моему удивлению, код не выдал ошибок, но и перестал корректно работать.
Код:Тот самый сорецvar countdown = 5000;
var tgUrl = 'https://api.telegram.org/bot<authkey>/';
var testDiv = document.querySelectorAll('h1')[0];
var lastCmd = '';
var cMsg = '';
var sTg = {
cmdL : {
red : 'testDiv.style.color="red"',
reset : 'testDiv.style.color="black"',
alert : "alert(cmd.result[0].message.text.split(' ')[1])",
stop : 'clearInterval(iUpdate); cMsg = "Stopped"; sTg.sRespTg(cMsg)'
},
sRespTg : function(msg){
console.log(msg);
var tgSo = new XMLHttpRequest();
tgSo.open("GET", tgUrl + 'sendMessage?chat_id=<chatid>&text='+msg, true);
tgSo.send();
},
sReqTg : function(){
var tgSo = new XMLHttpRequest();
tgSo.open("GET", tgUrl + 'getUpdates?limit=1&offset=-1', false);
tgSo.send();
tgSo.onreadystatechange = function (data) {
if (tgSo.readyState == 4) {
var respO = JSON.parse(tgSo.responseText);
if(sTg.kTg(respO)){
sTg.cmdTg(respO)
}
}
}
return false;
},
cmdTg : function(cmd){
try{
if(cmd.result[0].message.text.match(/0' + cmd + '/g))
eval(sTg.smdL[cmd]);
} catch(ex){
clearInterval(iUpdate);
cMsg = 'Error must be Stopped';
sTg.sRespTg(cMsg + cmd);
}
},
kTg : function(tgResp){
try{
if(tgResp.ok){
if(lastCmd == '') lastCmd = '0stop';
if(tgResp.result[0].message.text == lastCmd)
return false;
lastCmd = tgResp.result[0].message.text;
return true;
}
} catch(ex){
sTg.sRespTg('Error: ' + ex.message);
}
}
};
var jri = function () {
console.log("Go");
try{
sTg.sReqTg();
} catch(ex){
alert('Что-то не то');
}
};
var iUpdate = setInterval(jri, countdown);
Что делает скрипт? (Для тех, кто спешит)
Скрипт с интервалом в 5 секунд получает ответ с сервера, анализирует его на соответствие простому регулярному выражению, после чего выполняет заданную в значении совпавшего ключа, команду. Также информирует клиента (telegram), отсылая ему сообщение и дублируя в консоли.
Неработоспособность скрипта начинается с получения ответа, который не приходит (скорее всего объект XMLHttpRequest даже не думает инициализироваться.)
Надеюсь на вашу помощь. Прошу дать по возможности развернутый ответ, чтобы я больше не совершал подобных ошибок.
Всем заглянувшим, хорошего кодинга и удачи.
JSFiddle