网络错误:错误:连接ETIMEDOUT 149.154.167.220:443

时间:2018-05-25 18:10:09

标签: node.js telegram-bot

我在server.js文件中有这个代码块:

const Telegram = require('telegram-node-bot')

const tg = new Telegram.Telegram('***********token**************',{
    workers:1
});

const pingController = require('./controllers/ping')
    ,otherwiseController = require('./controllers/otherwise')

tg.router.when(new Telegram.TextCommand('/ping','pingCommand'), new pingController())
    .otherwise(new otherwiseController());

和ping.js文件中的此代码块:

const Telegram = require('telegram-node-bot');
class pingController extends Telegram.TelegramBaseController{
    pingHandler($){
        $.sendMessage('pong');
    }

    get routes() {
        return{
            'pingCommand': 'pingHandler'
        };
    }
}

module.exports = pingController;

最后这个代码块在其他文件中:

const Telegram = require('telegram-node-bot');
class otherwiseController extends Telegram.TelegramBaseController{
    handler($){
        $.sendMessage('Sorry!!!')
}
}

module.exports = otherwiseController;

当我运行node server.js时,我得到的错误是这样的: [错误]

  

网络错误:错误:连接ETIMEDOUT 149.154.167.220:443       at Object._errnoException(util.js:1031:13)       at _exceptionWithHostPort(util.js:1052:20)       在TCPConnectWrap.afterConnect [as oncomplete](net.js:1195:14)请求TelegramApiRequest {_method:'setWebhook',_ params:{   url:''},_ multipart:undefined}

此外,电报在​​我们国家过滤!!!,我使用Siphon 3代理。

2 个答案:

答案 0 :(得分:0)

因为您没有为终端/ cmd设置代理

for Linux:

export http_proxy='http://proxyserveraddress:3128'    
export https_proxy='https://proxyserveraddress:3128'

对于Wndows:

set HTTP_PROXY=http://proxyserveraddress:3128    
set HTTPS_PROXY=https://proxyserveraddress:3128

答案 1 :(得分:0)

您可以将SOCKS5代理与socks5-https-client lib一起使用。例如:

const TelegramBot = require('node-telegram-bot-api')
const Agent = require('socks5-https-client/lib/Agent')

const bot = new TelegramBot(process.env.TELEGRAM_API_TOKEN, {
    polling: true,
    request: {
        agentClass: Agent,
        agentOptions: {
            socksHost: process.env.PROXY_SOCKS5_HOST,
            socksPort: parseInt(process.env.PROXY_SOCKS5_PORT),
            // If authorization is needed:
            // socksUsername: process.env.PROXY_SOCKS5_USERNAME,
            // socksPassword: process.env.PROXY_SOCKS5_PASSWORD
        }
    }
})

此解决方案继续在您的本地PC上开发bot(没有代理,您无法启动来自伊朗和俄罗斯的机器人)并且可以正常工作。