我在为Telegram机器人编写的My Expressjs代码上遇到此错误 我使用Nginx在CloudVps上托管了此代码 我将其用于Telegram Bot API webhook
这是电报聊天机器人 在用户输入匹配时设置一些自动回复,它将发送自动回复。
日志文件错误
TypeError: Cannot read property 'chat' of undefined
at app.post (/var/www/hellobot/index.js:22:37)
at Layer.handle [as handle_request] (/var/www/hellobot/node_modules/express/lib/router/layer.js:95:5)
at next (/var/www/hellobot/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/var/www/hellobot/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/var/www/hellobot/node_modules/express/lib/router/layer.js:95:5)
at /var/www/hellobot/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/var/www/hellobot/node_modules/express/lib/router/index.js:335:12)
at next (/var/www/hellobot/node_modules/express/lib/router/index.js:275:10)
at /var/www/hellobot/node_modules/body-parser/lib/read.js:130:5
at invokeCallback (/var/www/hellobot/node_modules/raw-body/index.js:224:16)
这是我的代码
app.listen(port, () => {
console.log(`Listening on port ${port}`);
});
app.post('/', (req, res, next) => {
var Content = require('./blogposts.json');
var random = Content.blogtext[Math.floor(Math.random() * Content.blogtext.length)];
const chatId = req.body.message.chat.id;
const sentMessage = req.body.message.text || req.body.message.sticker.file_id;
if (sentMessage.match(/start/gi)) {
axios.post(`${url}${apiToken}/sendMessage`, {
chat_id: chatId,
text: 'Hello I am Bot',
})
.then((response) => {
next();
res.status(200).send(response);
return res.end();
}).catch((error) => {
res.send(error);
});
} else if (sentMessage.match(/posts/gi)) {
axios.post(`${url}${apiToken}/sendMessage`, {
chat_id: chatId,
text: random.blogtext,
})
.then((response) => {
next();
res.status(200).send(response);
}).catch((error) => {
res.send(error);
});
} else {
axios.post(`${url}${apiToken}/sendMessage`, {
chat_id: chatId,
text: 'Sorry answer not found',
})
.then((response) => {
res.status(200).send(response);
}).catch((error) => {
res.send(error);
});
}
});