我在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代理。
答案 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(没有代理,您无法启动来自伊朗和俄罗斯的机器人)并且可以正常工作。