Node JS 日志系统中的 Twitch Bot
Twitch Bot in Node JS log system
我正在 node.js 开发一个 twitch 机器人并使用 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]
我是不是忽略了什么?我找不到获取当前聊天用户名的方法。
感谢大家的帮助
我不能说我对 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
?
我正在 node.js 开发一个 twitch 机器人并使用 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]
我是不是忽略了什么?我找不到获取当前聊天用户名的方法。
感谢大家的帮助
我不能说我对 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
?