【问题标题】:How To Response To telegram bot Webhook Request? Same Request Are Coming Repeatedly如何响应电报机器人 Webhook 请求?相同的请求重复出现
【发布时间】:2016-12-05 01:45:39
【问题描述】:

我正在尝试使用官方电报机器人 api 用 nodejs 制作一个电报机器人(用于学习目的)。我为heroku设置了一个webhook。 我能够回复请求,但一段时间后,同样的请求会在一段时间后再次出现。收到相同的请求是正常的还是我没有响应即将到来的请求。当我调用 getwebhookinfo 方法时,它显示 pending_update_count 但我的代码确实响应了来自 webhook 的所有请求。 我用它来回复即将到来的请求

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var config = require('./lib/config');
var request = require('request');
var port = process.env.PORT || 3000;
var reply_url = "https://api.telegram.org/bot"+config.bot_token;
app.use(bodyParser.json());
app.get('/',function(req,res) {
    res.send("Working");
request({
    url: "https://api.telegram.org/bot"+config.bot_token+'/getMe',
    json : true
}, (err,res,body)=>{
    console.log(body);
});
});
app.post('/'+config.bot_token , (req,res)=>{
    var body = req.body;
    console.log(body);
    console.log(body.message.entities);

    request.post((reply_url+'/sendMessage'),{form:{chat_id:body.message.chat.id,text:"POST REPLY SUCCESS",reply_to_message_id:body.message.message_id}});
});

app.listen(port, () =>
{
    console.log("Server is Started at - "+port);
});

【问题讨论】:

  • 尝试在 APIfunction(req, res, next) 的回调函数中添加 next 并在执行 res.send('Working") 后调用 next() 函数。类似适用于其他 POST API ('/'+ config.bot_token).在/sendMessage API调用res.status().send()的成功和错误回调中再调用next();
  • 我遇到了 Typeerror,你能帮我重写代码吗?
  • 好的,我知道了 res.status(200).send('OK')

标签: javascript node.js webhooks telegram telegram-bot


【解决方案1】:

尝试在API函数(req, res, next)的回调函数中加入next,在做完res.status(201).send('Working")后调用next()函数。

类似的适用于其他 POST API ('/'+config.bot_token);在/sendMessage API的成功和错误回调中,调用res.status().send(),然后调用next();

始终调用 next() 作为使用 express.js 的标准做法

【讨论】:

    猜你喜欢
    • 2017-07-10
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多