如何解决NodeJS/Axios Telegram Bot 超时
我正在尝试使用 NodeJS 和 Axios 以及无服务器部署到 Vercel 来创建 Telegram 机器人。
我的部署工作正常,可以看到 Vercel 中的日志以及我的 Telegram webhook 设置,以遵循我的 Vercel 无服务器功能。我可以看到这一点,因为当我在我的机器人频道中输入时,很快就会在 Vercel 门户网站中显示日志。
但是,我不断收到:
Task timed out after 10.01 seconds
在我的 Vercel 无服务器功能的日志中。
让我觉得我的代码有问题导致响应永远不会触发。
这是无服务器功能的代码:
const url = require('url')
const axios = require("axios")
let telegram_url = // Omitted for security reasons,but this is the telegram sendMessage end point with my telegram bot API key baked in.
export default (req,res) => {
const urlString = url.parse(req.url,true)
const path = urlString.pathname
let reply = "Welcome to telegram bot";
let body = ''
req.on('data',data => {
body += data
})
req.on('end',() => {
if (req.method !== 'POST' || path !== '/start_bot') {
res.writeHead(404);
res.end()
} else if (body !== '') {
const { message } = JSON.parse(body)
console.log('BODY',JSON.parse(body))
if (message.text.toLowerCase().includes('hi')) {
sendMessage(telegram_url,reply,message,res);
res.writeHead(200);
res.end();
} else {
reply = "request not understood,please review and try again.";
sendMessage(telegram_url,res);
res.writeHead(200);
res.end();
}
} else {
res.writeHead(400);
res.end()
}
})
}
function sendMessage(url,res) {
axios.post(url,{
chat_id: message.chat.id,text: reply
}).then(response => {
console.log("Message posted");
res.end("ok");
}).catch(error =>{
console.log(error);
});
}
现在,如果我要说,将上面的代码替换为:
export default (req,res) => {
res.writeHead(200);
res.end();
}
然后,当我输入 Telegram bot 时,我会在我的 vercel 日志中看到成功的请求(但显然没有任何内容会发布到 bot 频道,因为我没有发布到 Telegram sendMessage 命令)。
有人能发现第一个代码有什么问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。