Bot telegram e google sheet

di il
7 risposte

Bot telegram e google sheet

Ciao a tutti,
premetto che ho già postato per errore questa richiesta in altro 3d e mi è stato consigliato di spostarla qui, chiedo il vostro aiuto per questo codice che mi da al debug due errori.Non avendo idea di come sia possibile spostare il mio quesito lo ripropongo.
Seguendo alcuni video sul web ho provato a creare un bot telegram che interrogato fornisca dati presi da un foglio googlesheeet.

Ho utilizzato il codice:


var token = "MIO TOKEN";
var SheetID = "ID FOGLIO";
function doPost(e) {
var stringJson = e.postData.getDataAsString();
var updates = JSON.parse(stringJson);

if(updates.message.text){
sendText(updates.message.chat.id,searchFoglio1ById(updates.message.text));
}

}
function getRows(){
var rangeName = 'Foglio1!A2:B';
var rows = Sheets.Spreadsheets.Values.get(SheetID, rangeName).values;
return rows;
}
function searchFoglio1ById(idFoglio1){
var dataFoglio1 = getRows();
for (var row = 0; row < dataFoglio1.length; row++) {
if(dataFoglio1[row][0]==idFoglio1){
return dataFoglio1[row][1];
}
}
return "Non trovato";
}
function testgetrow(){
var nome= searchFoglio1ById(1003);
var x = "";

}
function sendText(chatid,text,replymarkup){
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(chatid),
text: text,
parse_mode: "HTML",
reply_markup: JSON.stringify(replymarkup)
}
};
UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
}


var token = "MIO TOKEN";
function doPost(e) {
var stringJson = e.postData.getDataAsString();
sendText("98058903",stringJson);
var updates = JSON.parse(stringJson);

if(updates.message.new_chat_participant){
//invia messaggio di benvenuto updates.message.chat.id
sendText(updates.message.chat.id,"Ciao" + updates.message.new_chat_participant.first_name);
} else if(updates.message.left_chat_participant){
//invia messaggio di saluto updates.message.chat.id
sendText(updates.message.chat.id,"Alla prossima" + updates.message.left_chat_participant.first_name);
} else if(updates.message.photo){
//invia messaggio di saluto updates.message.chat.id
sendText(updates.message.chat.id,"Questa è la foto");
}else if(updates.message.text){

if(updates.message.text[0]=="/"){
//inviare un messaggio di risposta al comando

sendText(updates.message.chat.id,"Questo è il testo del comando");
} else {
//inviare un normale messaggio di testo di risposta
sendText(updates.message.chat.id,"Questo è un testo normale");
}

}

}
function sendText(chatid,text,replymarkup){
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(chatid),
text: text,
parse_mode: "HTML",
reply_markup: JSON.stringify(replymarkup)
}
};
UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
}


Gli errori sono 2 ... doPost e sendText
TypeError: Impossibile leggere la proprietà "postData" da undefined. (riga 48, file "Codice")Ignora

e

La richiesta non riuscita per https://api.telegram.or ha restituito il codice 400. Risposta del server troncata: {"ok":false,"error_code":400,"description":"Bad Request: message text is empty"} (usa l'opzione muteHttpExceptions per esaminare la risposta completa) (riga 86, file "Codice")DettagliIgnora

Come risolvo ?


Grazie dell'aiuto.

ligiem

7 Risposte

  • Re: Bot telegram e google sheet

    Ciao Ligiem,
    prima di tutto potresti formattare il tuo codice utilizzando il tag apposito (quello con il simbolo </> nell'editor)? Così sarà più semplice per gli altri darti risposta
  • Re: Bot telegram e google sheet

    Ciao Andreadev, formatterei volentieri il codice .... se solo sapessi come.
    Il codice l'ho preso e adattato seguendo alcuni video trovati sul web e utilizzato in appscript su foglio google.
    Ad ogni modo, grazie.
  • Re: Bot telegram e google sheet

    C'e' il button "</>" oppure scrivi il codice TRA

    \[code\]

    e

    \[/code\]

    MA NON METTERE "\" !!!!
  • Re: Bot telegram e google sheet

    Ciao migliorabile, intendi che il codice va compreso tra quadre e i commenti fuori da esse ?
    grazie
  • Re: Bot telegram e google sheet

    Ciao migliorabile,

    intendi qualcosa di simile ....

    <
    var token = "MIO TOKEN";
    var SheetID = "ID FOGLIO";
    function doPost(e) {
    var stringJson = e.postData.getDataAsString();
    var updates = JSON.parse(stringJson);
    >
    <
    if(updates.message.text){
    sendText(updates.message.chat.id,searchFoglio1ById(updates.message.text));
    }
    >
    <
    }
    function getRows(){
    var rangeName = 'Foglio1!A2:B';
    var rows = Sheets.Spreadsheets.Values.get(SheetID, rangeName).values;
    return rows;
    }
    >
    <
    function searchFoglio1ById(idFoglio1){
    var dataFoglio1 = getRows();
    for (var row = 0; row < dataFoglio1.length; row++) {
    if(dataFoglio1[row][0]==idFoglio1){
    return dataFoglio1[row][1];
    }
    }
    return "Non trovato";
    }
    >
    <
    function testgetrow(){
    var nome= searchFoglio1ById(1003);
    var x = "";

    }
    >
    <
    function sendText(chatid,text,replymarkup){
    var data = {
    method: "post",
    payload: {
    method: "sendMessage",
    chat_id: String(chatid),
    text: text,
    parse_mode: "HTML",
    reply_markup: JSON.stringify(replymarkup)
    }
    };
    UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
    }

    >
    <
    var token = "MIO TOKEN";
    function doPost(e) {
    var stringJson = e.postData.getDataAsString();
    sendText("98058903",stringJson);
    var updates = JSON.parse(stringJson);

    if(updates.message.new_chat_participant){

    sendText(updates.message.chat.id,"Ciao" + updates.message.new_chat_participant.first_name);
    } else if(updates.message.left_chat_participant){

    sendText(updates.message.chat.id,"Alla prossima" + updates.message.left_chat_participant.first_name);
    } else if(updates.message.photo){

    sendText(updates.message.chat.id,"Questa è la foto");
    }else if(updates.message.text){
    >
    <
    if(updates.message.text[0]=="/"){


    sendText(updates.message.chat.id,"Questo è il testo del comando");
    } else {

    sendText(updates.message.chat.id,"Questo è un testo normale");
    }

    }

    }
    >
    <
    function sendText(chatid,text,replymarkup){
    var data = {
    method: "post",
    payload: {
    method: "sendMessage",
    chat_id: String(chatid),
    text: text,
    parse_mode: "HTML",
    reply_markup: JSON.stringify(replymarkup)
    }
    };
    >
    <
    UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
    }

    >

    Scusami ma, come avrai capito, non sono bill gates.
    Grazie
  • Re: Bot telegram e google sheet

    Provo così .....

    var token = "MIO TOKEN";
    var SheetID = "ID FOGLIO";
    function doPost(e) {
    var stringJson = e.postData.getDataAsString();
    var updates = JSON.parse(stringJson);

    if(updates.message.text){
    sendText(updates.message.chat.id,searchFoglio1ById(updates.message.text));
    }

    }
    function getRows(){
    var rangeName = 'Foglio1!A2:B';
    var rows = Sheets.Spreadsheets.Values.get(SheetID, rangeName).values;
    return rows;
    }
    function searchFoglio1ById(idFoglio1){
    var dataFoglio1 = getRows();
    for (var row = 0; row < dataFoglio1.length; row++) {
    if(dataFoglio1[row][0]==idFoglio1){
    return dataFoglio1[row][1];
    }
    }
    return "Non trovato";
    }
    function testgetrow(){
    var nome= searchFoglio1ById(1003);
    var x = "";

    }
    function sendText(chatid,text,replymarkup){
    var data = {
    method: "post",
    payload: {
    method: "sendMessage",
    chat_id: String(chatid),
    text: text,
    parse_mode: "HTML",
    reply_markup: JSON.stringify(replymarkup)
    }
    };
    UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
    }


    var token = "MIO TOKEN";
    function doPost(e) {
    var stringJson = e.postData.getDataAsString();
    sendText("98058903",stringJson);
    var updates = JSON.parse(stringJson);

    if(updates.message.new_chat_participant){
    sendText(updates.message.chat.id,"Ciao" + updates.message.new_chat_participant.first_name);
    } else if(updates.message.left_chat_participant){
    sendText(updates.message.chat.id,"Alla prossima" + updates.message.left_chat_participant.first_name);
    } else if(updates.message.photo){
    sendText(updates.message.chat.id,"Questa è la foto");
    }else if(updates.message.text){

    if(updates.message.text[0]=="/"){

    sendText(updates.message.chat.id,"Questo è il testo del comando");
    } else {
    sendText(updates.message.chat.id,"Questo è un testo normale");
    }

    }

    }
    function sendText(chatid,text,replymarkup){
    var data = {
    method: "post",
    payload: {
    method: "sendMessage",
    chat_id: String(chatid),
    text: text,
    parse_mode: "HTML",
    reply_markup: JSON.stringify(replymarkup)
    }
    };
    UrlFetchApp.fetch('https://api.telegram.org/bo' + token + '/', data);
    }
    Gli errori sono 2 ... doPost e sendText
    TypeError: Impossibile leggere la proprietà "postData" da undefined. (riga 48, file "Codice")Ignora

    e

    La richiesta non riuscita per https://api.telegram.or ha restituito il codice 400. Risposta del server troncata: {"ok":false,"error_code":400,"description":"Bad Request: message text is empty"} (usa l'opzione muteHttpExceptions per esaminare la risposta completa) (riga 86, file "Codice")DettagliIgnora


    Forse così potrebbe andare ?
  • Re: Bot telegram e google sheet

    Irrisolvibile ?
    Per me si senza il vostro aiuto.
Devi accedere o registrarti per scrivere nel forum
7 risposte