使用聊天机器人

时间:2015-10-31 11:26:43

标签: javascript node.js timeout

我正在编写一个能够回答命令的IRC聊天机器人。我的问题是对命令进行冷却。

我的想法是:

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

每次用户输入聊天时,机器人都会做出反应。然后它会检查用户是否输入了命令,然后它显然会填充。

但我的想法不起作用。机器人不断回答命令。我只是希望他在5秒前讲话时不回答。

我尝试使用计时器和date.now和东西,但我认为如果我定义一个像

这样的变量
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);
  }
});

1 个答案:

答案 0 :(得分:1)

那是因为你的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 );