Javascript 问题DMing用户:无法读取属性';getMaxListeners';未定义的

Javascript 问题DMing用户:无法读取属性';getMaxListeners';未定义的,javascript,discord.js,Javascript,Discord.js,在我开始之前,我想声明我是一名编码初学者,而不是编码专家,所以如果我的代码中有任何错误,请原谅,因为我还在学习。任何批评都将受到高度赞赏,因为这将改善我的工作: 因此,正如标题所提到的,想要拥有一个用户,在本例中,输入“&test”,我的bot将对用户进行DM,比如说“请输入一个rest响应”,启动消息收集器,然后当用户回复类似“test”的内容时,收集器将结束,并发送响应“test”我想实现这个功能,因为它当前的目的是向谁发送物品的更新(在minecraft服务器上,是的,我知道,但我们是一个

在我开始之前,我想声明我是一名编码初学者,而不是编码专家,所以如果我的代码中有任何错误,请原谅,因为我还在学习。任何批评都将受到高度赞赏,因为这将改善我的工作:

因此,正如标题所提到的,想要拥有一个用户,在本例中,输入“&test”,我的bot将对用户进行DM,比如说“请输入一个rest响应”,启动消息收集器,然后当用户回复类似“test”的内容时,收集器将结束,并发送响应“test”我想实现这个功能,因为它当前的目的是向谁发送物品的更新(在minecraft服务器上,是的,我知道,但我们是一个相当大的群体),我最近刚想添加这个功能,当我发现任何人都可以响应任何用户的命令时,收集器就停在那里,因此它们不断地用无用的嵌入来淹没响应通道。以下是当前代码(没有尝试的实现):

client.on('message',异步消息=>{
if(message.author.bot)返回;
if(message.content.toLowerCase()=='&reserveupdate'){
message.channel.send(“**请告知我们您正在使用下面的备用金做什么。请记住,不要占用超过当前备用金的一半:*”);
让filter=m=>!m.author.bot;
设计数器=0;
let collector=new discord.MessageCollector(message.channel,filter);
让destination=client.channels.cache.get('my channel id');
收集器.on('collect',(m,col)=>{
console.log(“收集的消息:+m.content”);
计数器++;
如果(计数器==1){
message.channel.send(“**感谢您更新我们的令牌保留!**”);
收集器。停止();
}
如果(目的地){
if(m.content.toLowerCase()=='&stop'&&(message.author.id===m.author.id)){
log(“停止收集器”);
收集器。停止();
}
否则{
let embed=new discord.MessageEmbed()
.setTitle(“**保留更新。**”)
.setDescription(m.content)
.setTimestamp()文件
.setAuthor(m.author.tag,m.author.displayAvatarURL)
.setColor(“#ada228”)
.setFooter(“Unb.9机器人开发人:Alduin#0010”)
发送(嵌入);
}
}
});
collector.on('end',collected=>{
console.log(“收集的消息:+collected.size”);
}); 
}
});
下面是我尝试使用的代码,将其切换到DMs,收集响应,然后将用户响应发送到提供的特定通道ID:

client.on('message',异步消息=>{
if(message.author.bot)返回;
if(message.content.toLowerCase()=='&reserveupdate'){
message.channel.send(“**请告知我们您正在使用下面的备用金做什么。请记住,不要占用超过当前备用金的一半:*”);
让filter=m=>!m.author.bot;
设计数器=0;
让收集器=new discord.MessageCollector(discord.DMChannel,m=>m.author.id,filter);
让destination=client.channels.cache.get('my channel id');
收集器.on('collect',(m,col)=>{
日志(“收集的消息:+author.content”);
计数器++;
如果(计数器==1){
message.channel.send(“**感谢您更新我们的储备!**”);
收集器。停止();
}
如果(目的地){
if(m.content.toLowerCase()=='&stop'&&(message.author.id===m.author.id)){
log(“停止收集器”);
收集器。停止();
}
否则{
let embed=new discord.MessageEmbed()
.setTitle(“**保留更新。**”)
.setDescription(m.content)
.setTimestamp()文件
.setAuthor(m.author.tag,m.author.displayAvatarURL)
.setColor(“#ada228”)
.setFooter(“Unb.9机器人开发人:Alduin#0010”)
发送(嵌入);
}
}
});
collector.on('end',collected=>{
console.log(“收集的消息:+collected.size”);
}); 
}
});
bot成功地对用户进行了DMs,并在输入命令时做出响应,但是每当执行命令时,Powershell日志都会显示:

“(节点:4540)未处理的PromisejectionWarning:TypeError:无法读取未定义的
在新的MessageCollector上“

谁能给我指点一下吗?我应该对代码做什么更改?这是一个我很想实现的功能,因为我相信这将对我们的团队有益,并减少混乱和垃圾邮件。非常感谢您的回复

您试图将侦听器附加到
discord.DMChannel
类,但这是不正确的

您需要将侦听器附加到要侦听的特定dm频道,在本例中是消息作者(注意
User
如何实现
TextBasedChannel

试一试

let collector=new discord.MessageCollector(message.author,m=>m.author.id,filter);

您试图将侦听器附加到
discord.DMChannel
类,但这是不正确的