Twitch Bot в лог-системе Node JS

Я работаю над дергающимся ботом в node.js и использую 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(){});      
    }
    });

});

это срабатывает каждый раз, когда пользователь вводит сообщение в чате. И я думал, что переменная "пользователь" будет иметь значение болтовни, которая просто что-то печатает.

Но ценность пользователя всегда [object Object]

Я что-то пропускаю? Я не могу найти способ получить имя пользователя текущей болтовни.

Спасибо за помощь, ребята

1 ответ

Решение

Я не могу сказать, что у меня есть опыт работы с tmi.js, но, похоже, user переменная, которую вы получаете, это объект, а не строка. Когда вы пытаетесь привести его к строке, используя +, вы получаете [объект объекта] по умолчанию. Попробуйте сделать это:

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?

Другие вопросы по тегам