TypeError:无法读取未定义的问题嵌入式键盘的属性“聊天”

时间:2019-05-30 14:23:44

标签: node.js

我有这个问题,我想为电报机器人创建一个键盘,这是我的代码,在这里我使用在线键盘创建了按键。它给了我这个错误,我无法将其连接到我的帖子上,该单词已发布到/新闻

subprocess.call()

TypeError:无法读取未定义的属性“聊天”

在/app/server.js:22:35

const util = require('util');
const express = require('express');
const app = express();
// includiamo la libreria "axios"
const axios = require('axios');

// Includiamo la libreria "body-parser" per gestire le richieste in JSON.
const bodyparser = require('body-parser');
app.use(bodyparser.json());

app.get ('/', function (req, res) {
   res.status (200) .json ({status: 'ok'});
});

// Includiamo il modulo "request" per effettuare richieste HTTP
const https = require('https');


// Webhook per Telegram
 app.post('/', function (req, res)  {
  console.log("Richiesta: " + JSON.stringify(req.body));
  const chatid = req.body.message.chat.id;
  const text = req.body.message.text;
  const username = req.body.message.from.username

  console.log("Utente in chat " + chatid + " ha scritto '" + text + "'");


 const clientreq = https.request({
   method: 'POST',
   host: 'api.telegram.org',
   url: 'https://api.telegram.org/bot'+process.env.BOTTOKEN+'/setWebhook? 
   url=https://viktecnews.glitch.me/',
   path: '/bot' + process.env.BOTTOKEN + '/getMe'
    },function(resp) {
   // Questa funzione viene richiamata a richiesta eseguita
   if(resp.statusCode != 200) {
   console.log("Richiesta HTTP fallita");
    return;
  }
 console.log("Richiesta HTTP riuscita");


   var body = '';
  resp.on('data', function(d) {
      body += d;
   });
    resp.on('end', function() {
  // Ora body contiene il contenuto (corpo) della risposta
  console.log("Risposta da API Telegram: " + body);


  const j = JSON.parse(body);
  // j è un oggetto JavaScript che contiene i dati della risposta
  // ...
    });
 }); 


  if (text.match(/start/)) 

  { axios.post ('https://api.telegram.org/bot'+ 
             process.env.BOTTOKEN+'/sendMessage' 
,
               {
               chat_id: chatid,
               text: 'Benvenuto'+'\t'+ username +'\t' + 'in ViktecNews, 
  scopri le ultime news sul mondo della tecnologia, guide e recensioni. 
   Per qualsiasi cosa vai su info',
               reply_markup: JSON.stringify ({ 
                 inline_keyboard:[[
                   {
      text: 'news',
      callback_data: '/news'
    },{
      text: 'recensioni',
      callback_data: '/recensioni'
    },{
      text: 'guide',
      callback_data: '/guide'
    },{
      text: 'info',
      callback_data: '/info'
    }
                 ]]
               })
    }).then(response => { 
    // Messaggio postato 
     console.log('Message posted')
       console.log()
  res.end('ok')
})
.catch(err => {
  // ...Messaggio non postato
  console.log('Error :', err)
  res.end('Error :' + err)
    })
}
 else if (text.match(/info/)) {
     axios.post('https://api.telegram.org/bot'+
    process.env.BOTTOKEN+'/sendMessage' 
  ,
                 {
               chat_id: chatid,
               text: 'ViktecNews è un bot programmato per riportarti le 
   ultime dieci news, guide e recensioni. Per qualsiasi problema contatta 
 @viktec'
               })
        .then(response => {
      // Messaggio postato
      console.log('Message posted')
     res.end('ok')
   })
   .catch(err => {
       // ...Messaggio non postato
      console.log('Error :', err)
       res.end('Error :' + err)
     })

     }

  else if (text.match (/news/)) { 
       axios.get( URL ,{
        params: {
       categories: '8240'
        }
      })
  .then(response => {
        for(var i = 0; i < response.data.length; i++)
   axios.post('https://api.telegram.org/bot'+
   process.env.BOTTOKEN+'/sendMessage' 
   ,
               {
                  chat_id: chatid,
               text: response.data[i].title.rendered +" \n\t"+ 
  response.data[i].link + " \n\t"+"Autore : "+response.data[i].author
               })
      .then(response => {
  // Messaggio postato  
  console.log('Message posted')
  res.end('ok')
   })
     .catch(err => {
    // ...Messaggio non postato
    console.log('Error :', err)
     res.end('Error :' + err)
  })
  console.log(response.data[0]);
  })
  .catch(error => {
   console.log(error);
  });

 }else if (text.match (/recensioni/)) { 
    axios.get( URL ,{
     params: {
       categories: '8241'
     }
     })
  .then(response => {
       for(var i = 0; i < response.data.length; i++)
    axios.post('https://api.telegram.org/bot'+
    process.env.BOTTOKEN+'/sendMessage',
               {
               chat_id: chatid,
               text: response.data[i].title.rendered +" \n\t"+ 
  response.data[i].link + " \n\t"+"Autore : "+response.data[i].author
               })
      .then(response => {
  // Messaggio postato  
  console.log('Message posted')
  res.end('ok')
   })
  .catch(err => {
  // ...Messaggio non postato
  console.log('Error :', err)
  res.end('Error :' + err)
   })
  console.log(response.data[0]);
  })
  .catch(error => {
  console.log(error);
  });

 } else if (text.match (/guide/)) { 
   axios.get( URL ,{
     params: {
       categories: '8250'
     }
     })
 .then(response => {
     for(var i = 0; i < response.data.length; i++)


  axios.post('https://api.telegram.org/bot'+
  process.env.BOTTOKEN+'/sendMessage' ,
               {
               chat_id: chatid,
               text: response.data[i].title.rendered +" \n\t"+ 
 response.data[i].link + " \n\t"+"Autore : "+response.data[i].author
                })
      .then(response => {
   // Messaggio postato  
   console.log('Message posted')
   res.end('ok')
   })
   .catch(err => {
  // ...Messaggio non postato
  console.log('Error :', err)
   res.end('Error :' + err)
  })
  console.log(response.data[0]);
  })
 .catch(error => {
   console.log(error);
 });

   } else if (text.match (/games/)) { 
      axios.get( URL ,{
     params: {
       categories: '8245'
     }
     })
   .then(response => {
      for(var i = 0; i < response.data.length; i++)





      axios.post('https://api.telegram.org/bot'+
    process.env.BOTTOKEN+'/sendMessage',
               {
               chat_id: chatid,
               text: response.data[i].title.rendered +" \n\t"+ 
     response.data[i].link + " \n\t"+"Autore : "+response.data[i].author
               })
      .then(response => {
  // Messaggio postato  
  console.log('Message posted')
  res.end('ok')
  })
   .catch(err => {
  // ...Messaggio non postato
  console.log('Error :', err)
  res.end('Error :' + err)
   })
   console.log(response.data[0]);
 })
 .catch(error => {
  console.log(error);
 });

  }else 




      {axios.post('https://api.telegram.org/bot'+
      process.env.BOTTOKEN+'/sendMessage 
,
               {
                chat_id: chatid,
               text: "Carattere errato, utilizza i comandi!"
  })
 .then(response => {
  // Messaggio postato
  console.log('Message posted')
  res.end('ok')
    })
   .catch(err => {
  // ...Messaggio non postato
  console.log('Error :', err)
  res.end('Error :' + err)
    })}; 
  clientreq.end(); // questa chiamata esegue la richiesta 
 });



 const listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + 
listener.address().port);
 });`

1 个答案:

答案 0 :(得分:0)

此错误告诉您message未定义。请确保客户端提供message作为POST正文的一部分。