我正试图让这个不和谐机器人工作。这个想法很简单,当有人加入语音聊天时,机器人会发送通知。我在Atom上做这个,我得到的错误就是这个:
TypeError: Cannot read property 'send' of undefined
at Client.client.on (C:\Users\Franco\Desktop\bot\bot.js:15:20)
at emitTwo (events.js:126:13)
at Client.emit (events.js:214:7)
at VoiceStateUpdateHandler.handle (C:\Users\Franco\Desktop\bot\node_modules\discord.js\src\client\websocket\packets\handlers\VoiceStateUpdate.js:39:16)
at WebSocketPacketManager.handle (C:\Users\Franco\Desktop\bot\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
at WebSocketConnection.onPacket (C:\Users\Franco\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (C:\Users\Franco\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
at WebSocket.onMessage (C:\Users\Franco\Desktop\bot\node_modules\ws\lib\event-target.js:120:16)
at emitOne (events.js:116:13)
at WebSocket.emit (events.js:211:7)
代码尝试:
client.on("message", function(message) {
client.on('voiceStateUpdate', (oldMember, newMember) => {
console.log('lol');
let newUserChannel = newMember.voiceChannel
let oldUserChannel = oldMember.voiceChannel
var channel = client.channels.get('353996293154144259');
if(oldUserChannel === 353996293154144260 && newUserChannel !== 489674797261783041) {
channel.send('has joined a voice channel');
// User Joins a voice channel
} else if(newUserChannel === 489674797261783041){
channel.send('has left a voice channel');
// User leaves a voice channel
}
})
})
console.log仅用于测试voiceStateUpdate
是否正常工作。
当我尝试运行它时,我收到此错误:
“TypeError:无法读取未定义的属性'send'”
.send
function is undefined我从这里得到几乎所有东西:
我试过的一切:
client.on("message", function(message) {
.send
编辑为.message
和.sendMessage
var channel = client.channels.get('353996293154144259');
client.on('voiceStateUpdate', (oldMember, newMember) => {
移出client.on("message", function(message) {
当我这样做时,我又出现了另一个错误“当我移动client.on out时,我得到的第二个错误:”(节点:18196)MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。添加了11个消息监听器。使用emitter.setMaxListeners()来增加限制“
也许一些无用的信息:
好吧,我解决了部分问题,我需要使用message.channel.send('has joined a voice channel');
而不是channel.send('has joined a voice channel');
但我不能让它按我想要的方式工作。
特别感谢YakovL。他帮助我使这篇文章更完整,更好。
更换
var channel = client.channelID.get('353996293154144259');
同
var channel = client.channels.get('353996293154144259');
正如我在不和谐公会中多次告诉你的那样。