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
?