Javascript 如何在没有用户输入的情况下发送消息

Javascript 如何在没有用户输入的情况下发送消息,javascript,node.js,api,bots,telegram,Javascript,Node.js,Api,Bots,Telegram,我用Node.js和Telegram bot API制作了一个简单的机器人,问题是如何在每次特定时间发送消息,例如,我想每5分钟说一声“你好”,我该怎么办 这是我目前的代码: var express = require('express'); var app = express(); var bodyParser = require('body-parser'); const axios = require('axios') app.use(bodyParse

我用Node.js和Telegram bot API制作了一个简单的机器人,问题是如何在每次特定时间发送消息,例如,我想每5分钟说一声“你好”,我该怎么办

这是我目前的代码:

var express     = require('express');
var app         = express();
var bodyParser  = require('body-parser');
const axios     = require('axios')

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({
   extended: true
})); // for parsing application/x-www-form-urlencoded
//This is the route the API will call
app.post('/new-message', function(req, res) {
  const {message} = req.body;

  //Each message contains "text" and a "chat" object, which has an "id" which is the chat id

  axios.get('some_api'+message.text.toLowerCase()+ '/')
  .then(resp => {
       axios.post('https://api.telegram.org/bot<MYTOKEN>/sendMessage', {
        chat_id: message.chat.id,
        text: `*${resp.data[0].name} (#${resp.data[0].symbol})*
        Price USD: ${resp.data[0].price_usd}
        Percent Change 24h: ${resp.data[0].percent_change_24h}
        Market Cap USD: ${resp.data[0].market_cap_usd}`,
        parse_mode:'Markdown'
  })
  .then(response => {
    // We get here if the message was successfully posted
    console.log('Message posted')
    res.end('ok')
  })
  .catch(err => {
    // ...and here if it was not
    console.log('Error :', err)
    res.end('Error :' + err)
  })

  })
  .catch(err => {
    // ...and here if it was not
    console.log('Error :', err)
    res.end('Error :' + err)
})
});

// Finally, start our server
app.listen(3000, function() {
  console.log('Telegram app listening on port 3000!');
});
var express=require('express');
var-app=express();
var bodyParser=require('body-parser');
常量axios=require('axios')
app.use(bodyParser.json());//用于解析application/json
app.use(bodyParser.urlencoded({
扩展:正确
})); // 用于解析应用程序/x-www-form-urlencoded
//这是API将调用的路由
app.post('/new message',函数(req,res){
const{message}=req.body;
//每条消息都包含“文本”和“聊天”对象,该对象有一个“id”,即聊天id
get('some_api'+message.text.toLowerCase()+'/'))
。然后(resp=>{
轴心柱https://api.telegram.org/bot/sendMessage', {
聊天室id:message.chat.id,
文本:`*${resp.data[0].name}(#${resp.data[0].symbol})*
价格美元:${resp.data[0]。价格美元}
24h变化百分比:${resp.data[0]。24h变化百分比}
市值美元:${resp.data[0]。市值美元`,
解析模式:'Markdown'
})
。然后(响应=>{
//如果消息成功发布,我们就可以到达这里
console.log('消息已发布')
res.end('ok')
})
.catch(错误=>{
//…如果不是的话,这里呢
console.log('Error:',err)
res.end('错误:'+err)
})
})
.catch(错误=>{
//…如果不是的话,这里呢
console.log('Error:',err)
res.end('错误:'+err)
})
});
//最后,启动我们的服务器
app.listen(3000,函数(){
console.log('telegramapp监听端口3000!');
});
你可以这样做,
您可以向特定用户或特定聊天室发送消息

但首先,您需要从.id或
'msg.chat.id'
获取
msg.from.id,存储它,并在需要时发送通知

当用户加入您的bot并按下“开始”按钮时,您可以在服务器上触发该操作:

// on global scope or wherever
 var fromId=null
 var chatId=null
// trigers when user press 'start' button
bot.onText(/\/start/, function (msg, match) {
   chatId=msg.chat.id;
   fromId = msg.from.id; // store that value and use it as param on sendMessage()
   var name = msg.from.first_name
   bot.sendMessage(fromId, `Welcome dear ${name} have fun`);
});
现在您可以创建我们的时间间隔并发送给用户或字符


我希望这有帮助

if(fromId) {
   setInterval(() => {
     bot.sendMessage(fromId, `message to the user`),
     300,000}) // every 5 mins
   }