Discord.JS | DM中的反应

Discord.JS | DM中的反应,discord.js,Discord.js,我不希望机器人加入我的服务器并在聊天室或用户的dm中发布广告,所以我想我会让新用户对消息做出反应,然后我的机器人会在dm中向他们发送一个问题,如果他们回答正确,他应该给他们验证角色。机器人可以发送消息,但之后会出现错误 (node:12356) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'type' of undefined 我不知道如何解决这个问题,因为Docs通道中存在.type 这是密码 clien

我不希望机器人加入我的服务器并在聊天室或用户的dm中发布广告,所以我想我会让新用户对消息做出反应,然后我的机器人会在dm中向他们发送一个问题,如果他们回答正确,他应该给他们验证角色。机器人可以发送消息,但之后会出现错误

(node:12356) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'type' of undefined
我不知道如何解决这个问题,因为Docs通道中存在.type

这是密码

client.on('messageReactionAdd',异步(反应,用户)=>{
常量过滤器=m=>true
if(reaction.message.partials)等待reaction.message.fetch();
if(reaction.partials)等待reaction.fetch();
if(user.bot)返回;
如果(!reaction.message.guild)返回;
如果(reaction.message.id=='814035246399488001'){
如果(reaction.emoji.name==)✅'){
send(“156-123的减数是多少?”)
.catch(()=>{console.log('couldnt发送DM')})
如果(channel.type==='dm')
user.dmChannel.waitingmessages(过滤器{
最高:1,
时间:30000,
错误:[“时间”]
})
。然后(收集=>{
if(collected.first().content==“33”){
reaction.message.guild.members.cache.get(user.id).roles.add('779523805492019254'))
如果(错误=>{
console.log(错误)
});
}否则{
user.send(“这不是正确答案,您将无法得到验证。”)
返回;
}
})
}
}
});

我在一些discord服务器中四处询问,找到了解决方案:

if (reaction.emoji.name === '✅'){
            let msg = await user.send("What is the subtrahend of 156 - 123?")
            .catch(()=>{console.log('couldnt send a DM')})
            if (msg.channel.type == `dm`)

我想发生的是,机器人现在知道,
msg.channel.type
是他以前发送消息的频道,是的,我很高兴它能工作:3,也谢谢你,你的评论也会导致解决方案,你在哪里定义了
channel
?通常是
message.channel.type
我以前试过oo,但后来它说,
无法读取未定义的属性“channel”
好吧,我假设您的
if(channel.type=='dm')
onReaction
事件中,而不是
onMessage
中。因此,消息是未定义的。channel也是未定义的。您需要“捕捉”用户在
客户端中的答案
嗯,我想我不明白你所说的“你需要“捕捉”用户在
客户端内的回答是什么意思。在(“message”,()=>…)
“一旦用户回复机器人的DM,你就无法在上面的反应代码中捕捉到该事件。你需要捕捉它。