我正在编写一个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 );