Bots de conversa de Telegram amb Google Apps Script

Bots de conversa Exemples Dades pràctiques   Recursos CITCEA
Google Apps Script Projectes Interacció   Inici

Comunitat

Aquest bot de Telegram està creat per a poder fer la gestió monetària d'una comunitat de propietaris. És l'administrador de la comunitat el que haurà de proporcionar les dades de cada propietat. L'administrador també serà responsable d'introduir i modificar el valor de la quota total i el percentatge destinat a les despeses ordinàries. El percentatge dels estalvis no és modificable, doncs va lligat al percentatge de les despeses ordinàries. D'aquesta forma, si en una junta posterior es decideix modificar aquests percentatges, el bot no queda en desús.

Un cop introduïda la diferent informació, l'administrador ja podrà consultar certa informació sobre cada propietat. Una de les moltes funcionalitats disponibles per l'administrador és demanar al bot de Telegram la quota mensual de cada propietat o el seu correu vinculat. Per fer possible el control dels pagaments, cada vegada que l'administrador rebi la notificació del banc conforme un propietari ha pagat, haurà d'introduir un missatge en el xat.

El programa de l'script és el següent:

var token = "^^16879430:AAFKWQMD7mMPHq6z0vUOQKtbmge4-YsIVaA"; 
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/^^fycbwVZQVlWrpdDfqZcdmCwXsB4Y0bZcT27IPa9rZ_0WuQ0RkdopLKzvhlvRupyRN8cLgt_Q/exec";
function setWebhook() {
  var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
  var response = UrlFetchApp.fetch(url);
}
function sendMessage(id, text) {
  var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text="+ text;
  var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
  var contents = JSON.parse(e.postData.contents);
  var id = contents.message.from.id; 
  var text = contents.message.text;
  var ssId = "^^SQ1Np4wI4yvn2eLVeIu7OWMWPkYn9sf6N_6stN1Klo";
  var sheet1 = SpreadsheetApp.openById(ssId).getSheetByName("informació");
  var sheet2 = SpreadsheetApp.openById(ssId).getSheetByName("compacte");
  var sheet9 = SpreadsheetApp.openById(ssId).getSheetByName("Pagaments");
  var paraules = text.split(" ");
  var pp = paraules[0];
  var sp = paraules[1];
  var tp = paraules[2];
  var qp = paraules[3];
  var cp = paraules[4];
  var ingressos = SpreadsheetApp.openById(ssId).getSheetByName("informació").getDataRange().getCell(1,1);
  var pdespeses = SpreadsheetApp.openById(ssId).getSheetByName("informació").getDataRange().getCell(1,2);
  var id1 = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(3,2);
  //CANVIAR ELS INGRESSOS TOTALS DESITJATS majúscules i minúscules
  if (pp == "/qtotal") {
    var ingressos = ingressos.setValue(sp);
    return sendMessage(id, "OK!");
  }
  //CANVIAR EL PERCENTATGE DE DESPESES FIXES majúscules i minúscules  //COMANDA: percentatge despeses "numero"
  if (pp == "/pdespeses") {
    if (0 <= parseInt(sp) && parseInt(sp) <=100) {
      var pdespeses = pdespeses.setValue(sp/100);
      return sendMessage(id, "OK!");
    } else {
      return sendMessage(id, "El percentatge ha d'estar entre 0 i 100.");
    }
  }
  // COMANDA: quota "numero prop"
  if (pp == '/quota'){
    var n = parseInt(sp)+2;
    var quota = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,5).getValue();
    return sendMessage(id, quota +' €');
  }
  // COMANDA: pagat "numero prop"
  if (pp == '/pagat'){
    var n = parseInt(sp)+2;
    var perpagar = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,6).setValue(1);
    return sendMessage(id, 'Pagament registrat de manera correcta!');
  }
  // COMANDA: pagat "numero prop"
  if (pp == '/nopagat'){
    var n = parseInt(sp)+2;
    var perpagar = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,6).setValue(0);
    return sendMessage(id, 'Pagament editat!');
  }
  // COMANDA: check  QUOTA = 0 no enviar correu
  if (pp == '/comprova'){
    var m = "Cal que facis el pagament d'aquest mes de ";
    var asunto = 'Pagament pendent';
    var ultimafila = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getLastRow();
    for (var i=3; i<=ultimafila; i++){
      var pagado = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,6).getValue();
      if (parseInt(pagado) == 0){
        var mail = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,2).getValue();
        var cuota = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,5).getValue();
        GmailApp.sendEmail(mail, asunto, m + String(cuota) + ' €!')
      }
    }
  }
  // COMANDA: id "numero prop"
  if (pp=='/correu'){
    var n = parseInt(sp)+2;
    var idprop = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,2).getValue();
    return sendMessage(id, idprop)
  }
  //per començar el bot
  if (pp == '/help'){
    var a = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(1,1).getValue();
    var b = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(2,1).getValue();
    var c = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(3,1).getValue();
    var d = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(4,1).getValue();
    var e = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(5,1).getValue();
    var f = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(6,1).getValue();
    var g = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(7,1).getValue();
    var h = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(8,1).getValue();
    var i = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(9,1).getValue();
    var j = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(10,1).getValue();
    sendMessage(id,a)
    sendMessage(id,b)
    sendMessage(id,c)
    sendMessage(id,d)
    sendMessage(id,e)
    sendMessage(id,f)
    sendMessage(id,g)
    sendMessage(id,h)
    sendMessage(id,i)
    return sendMessage(id,j)
  }
  //COMENÇAR AMB EL BOT
  if (pp== '/start'){
    var a = 'Comença amb la gestió de la comunitat, si necessites ajuda usa la comanda /help';
    return sendMessage(id,a)
  }
  //INTRODUIR PROPIETARI
  if (pp == '/propietat') {
    sheet1.appendRow([sp,tp,qp]);
    return sendMessage(id,'Propietari identificat!')
  }
  //CANVI DE PROPIETARI
  if (pp == '/venut'){
    var fila = parseInt(sp)+2;
    sheet1.getDataRange().getCell(fila,2).setValue(tp);
    return sendMessage(id, 'Nou propietari identificat!')
  } else{
    return sendMessage(id,"Comanda no reconeguda. Per conèixer les comandes introdueix /help en el xat.");
  }
}

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.