禁止词语filter(tmi.js)

所以我一直在努力做这个工作大概3个小时,而且我几乎放弃了。

我目前的代码是:

var tmi = require('tmi.js'); var linksDisallowed = ["http://", "https://", ".dk"]; var options = { options: { debug: true }, connection: { cluster: "aws", reconnect: true }, identity: { username: "botstormen", password: "**CENSORED FOR SECURITY REASONS**" }, channels: ["dunkstormen"] }; var client = new tmi.client(options); client.connect(); client.on('connected', function(adress, port) { client.action("dunkstormen", "joinede chatten og er klar til at hjælpe! :3"); }); client.on('chat', function(channel, user, message, self) { if(message === "!social" || message === "!Social") { client.action("dunkstormen", "Twitter: twitter.com/dunkstormen Facebook: facebook.com/dunkstormen"); } }); client.on('chat', function(channel, user, message, self) { for (var i = 0; i < 3; i++) { if(message.indexOf(linksDisallowed[i]) >= 0) { client.say("Hello, " + user); } } }); 

但是,无论何时我键入数组中的单词linksDisallowed进入聊天机器人只是立即崩溃与以下错误:

 C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\commands.js:207 if (message.toLowerCase().startsWith("/me ") || message.toLowerCase().startsWith("\\me ")) { ^ TypeError: Cannot read property 'toLowerCase' of undefined at client.say (C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\commands.js:207:20) at client.<anonymous> (C:\Users\Benjamin Jørgensen\Desktop\botstormen\app.js:37:11) at client.EventEmitter.emit (C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\events.js:99:50) at client.handleMessage (C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\client.js:792:34) at C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\client.js:919:18 at Array.forEach (native) at client._onMessage (C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\lib\client.js:917:11) at WebSocket.onMessage (C:\Users\Benjamin Jørgensen\Desktop\botstormen\node_modules\tmi.js\node_modules\ws\lib\WebSocket.js:442:14) at emitTwo (events.js:87:13) at WebSocket.emit (events.js:172:7) 

tmi.js命令say需要2个参数,你只传递一个参数。

https://docs.tmijs.org/v0.0.29/Commands.html#say

更改client.say("Hello, " + user);client.say(channel,"Hello, " + user);

编辑帮忙评论一下:

根据文档, https://docs.tmijs.org/v0.0.29/Events.html#chat聊天事件返回一个用户对象&#x3002; 有一个用户对象的描述正好在下面,关于它可以改变的通知…但你现在可以做到这一点:用user.usernamereplaceuser

如果不起作用,请检查用户对象以find您应该使用的正确属性。

这意味着你的app.js不会发送消息到tmi.js服务