Node JS日志系统中的Twitch Bot

时间:2015-08-20 10:11:13

标签: javascript node.js twitch

我正在使用node.js中的twitch bot并使用tmi.js https://github.com/Schmoopiie/tmi.js

我的问题在于我创建的日志系统。我想我在这里误解了node.js。我需要从只是输入内容的聊天中获取用户名。 这是我的代码:

client.on('chat', function (channel, user, message, self) {

    fs.open('logs/' + user +'.txt','r',function(err,fd){
    if (err && err.code=='ENOENT') 
    {
    fs.writeFile('logs/' + user +'.txt', '[' + 'GMT' + moment().format('Z ') + moment().format('D.M.YYYY H:mm:ss')  + '] ' + user + ': ' + message, function (err) {});
    } else {
    fs.appendFile('logs/' + user +'.txt', '[' + 'GMT' + moment().format('Z ') + moment().format('D.M.YYYY H:mm:ss')  + '] ' + user + ': ' + message + '\n', function(){});      
    }
    });

});

每次用户在聊天中键入消息时都会触发此操作。我认为变量" user"将具有刚刚输入内容的喋喋不休的价值。

但用户的价值始终为[object Object]

我忽略了什么吗?我无法找到获取当前聊天用户名的方法。

感谢帮助人员

1 个答案:

答案 0 :(得分:0)

我不能说我对tmi.js有任何经验,但看起来你得到的user变量有一个对象,而不是一个字符串。当您尝试使用+将其强制转换为字符串时,默认情况下会获得[object Object]。试着这样做:

fs.appendFile('logs/' + JSON.stringify(user) +'.txt', '[' + 'GMT' + moment().format('Z ') + moment().format('D.M.YYYY H:mm:ss')  + '] ' + JSON.stringify(user) + ': ' + message + '\n', function(){});

或者更好,因为你只想进行调试:

console.log(user);

检查控制台。它可能不会很漂亮,但至少你能够看到user变量中的内容。也许它将是一个具有username属性的对象,您将能够简单地使用user.username