我正在创建一个简单的Messenger机器人,使用非官方的Facebook Chat API(https://github.com/schmavery/schmavery/facebook-chat-api)和node.js。
目前,我正在努力在特定时间向特定用户发送消息。这是我的代码的一部分:
if(msgdate.getTime() <= currdate.getTime()){
console.log(alarms[i].message);
// output: test
api.getUserID(alarms[i].user, (err, users) => {
if(err) return console.error(err);
api.sendMessage(alarms[i].message, users[0].userID);
// TypeError: Cannot read property 'message' of undefined
});
}
,我的问题是:我如何将警报数组传递给此回调,因此我可以将消息发送给特定用户?
看起来您在某个地方更改i
变量,因此当回调称为alarms[i]
时,不确定。您需要将alarms[i]
存储在新变量中,然后在回调中使用它:
let alarm = alarms[i];
api.getUserID(alarm.user, (err, users) => {
if(err) {
return console.error(err);
}
api.sendMessage(alarm.message, users[0].userID);
});
看起来您正在用于室外的循环。尝试以这种方式传递您的Var:
var alarm = alarm[i];
(function (alarm) {
if(msgdate.getTime() <= currdate.getTime()){
console.log(alarm.message);
// output: test
api.getUserID(alarm.user, (err, users) => {
if(err) return console.error(err);
api.sendMessage(alarm.message, users[0].userID);
// TypeError: Cannot read property 'message' of undefined
});
})(alarm);
也许您也需要通过其他VAR。只需放一个逗号和其他var,例如:
(function (alarm, user){
// your code here
})(alarm, user);