使用聊天机器人在Nodejs中正确使用setTimout()



我正在编写一个IRC聊天机器人,它可以响应命令。我的问题是命令的冷却时间。

我的想法是:

setTimeout(function() {
  client.on('chat', function (channel,user, message, self) {
    if (message === 'command') {
      // do stuff
    }
  });
}, 5000);

每当用户输入聊天内容时,机器人都会做出反应。然后它检查用户是否键入了命令,然后它显然会执行某些操作。

但我的想法不起作用。机器人不断响应命令。我只是希望他在5秒钟前已经发言时不要回答。

我试过用计时器和日期之类的东西,但我想如果我定义一个像这样的变量

var timer = 100000000000000

变量将一直具有该值,我不能更改一次,因为它将被重新定义。

http://www.tmijs.org/docs/我正在为我的机器人使用的库

编辑:

function doStuff(channel, user, message, self) {
      // do stuff
};

client.on('chat', function(channel, user, message, self) {
  if (message === 'command') {
    setTimeout( function() {
      client.on('chat', doStuff(channel, user, message,self));
    }, 5000);
    doStuff(channel, user, message, self);
  }
});

这是因为setTimeout处理程序只为chat事件设置了一个处理程序;它实际上并没有调用处理程序。何时调用处理程序?每次发送chat消息时。因此,请在收到chat事件时设置超时。类似于:

var handleMsg = function(channel, user, message, self) {
  if (message === 'command') {
    setTimeout( function() {
      client.once( 'chat', handleMsg );
    }, 5000);
    // do stuff
  }
};
client.once('chat', handleMsg );

相关内容

  • 没有找到相关文章