Javascript 提到谁点击了机器人后的反应

Javascript 提到谁点击了机器人后的反应,javascript,discord,discord.js,Javascript,Discord,Discord.js,我使用了${reaction.message.author},所以bot会提到在它之后单击反应的人。但是机器人正在提到它自己 如何使机器人提到用户谁点击后的反应机器人 ==代码=== client.on('message',(message)=>{ const args=message.content.slice(prefix.length.trim().split(+/+/g); const命令=args.shift().toLowerCase(); if(message.content.st

我使用了
${reaction.message.author}
,所以bot会提到在它之后单击反应的人。但是机器人正在提到它自己

如何使机器人提到用户谁点击后的反应机器人

==代码===

client.on('message',(message)=>{
const args=message.content.slice(prefix.length.trim().split(+/+/g);
const命令=args.shift().toLowerCase();
if(message.content.startsWith(前缀+'Interpol')){
const response=args.join(“”);
消息通道
.发送({
内容:“”,
嵌入:{
颜色:3447003,
标题:',
时间戳:新日期(),
},
})
.然后((sentMessage)=>{
sentMessage.react('1️⃣');
message.delete({timeout:100});
常量过滤器=(反应,用户)=>{
返回[1]️⃣'].包括(reaction.emoji.name);
};
短信
.1(过滤器、{
最高:2,
时间:60000,
错误:['time'],
})
。然后((收集)=>{
const reaction=收集的.first();
如果(reaction.emoji.name=='1️⃣') {
console.log(reaction.message.author);
message.author.send({
嵌入:{
颜色:3447003,
标题:“з,
描述:`**СССССССССССССцццццццццц,
时间戳:新日期(),
},
});
}
});
});
}
});

如果
用户是机器人,您可以更新过滤器以过滤掉反应。这样,第一个反应将来自成员:

const filter=(反应,用户)=>{
返回[1]️⃣'].包括(reaction.emoji.name)和&!user.bot;
};
更新:因此,您希望找到第一个对消息做出反应的成员,而不是bot。问题是您发送了一个带有
反应的DM。message.author
。是此反应所指的消息,因此您的
sentMessage
和此消息的
author
就是bot本身

通过检查
反应.users.cache
反应,您可以
.find()
对消息作出反应的第一个成员。users
是给出此反应的用户(包括bot)的管理者。通过使用
.find()
,您可以返回单个成员:

message.channel
.发送({
内容:“”,
嵌入:{
颜色:3447003,
标题:',
时间戳:新日期(),
},
})
.然后((sentMessage)=>{
sentMessage.react('1️⃣');
message.delete({timeout:100});
常量过滤器=(反应,用户)=>{
return!user.bot&&['1️⃣'].包括(reaction.emoji.name);
};
短信
.1(过滤器、{
最高:1,
时间:60000,
//错误:['time'],
})
。然后((收集)=>{
const reaction=收集的.first();
如果(reaction.emoji.name=='1️⃣') {
//找到第一个做出反应且不是机器人的成员
const member=reaction.users.cache.find((user)=>!user.bot);
message.author.send({
嵌入:{
颜色:3447003,
标题:“з,
说明:`**СССССССццццimk_:*${member}`,
时间戳:新日期(),
},
});
}
})
.catch(console.log);
});

如果我没有弄错的话,您只是缺少了一个过滤器。这是一种常见的情况,当尝试收集信息时,bot会选择自己的消息/反应

要更正此问题,您只需将所有内容添加到筛选函数中。
&&user.id===message.author.id;

因此:
return['1️⃣'].包括(reaction.emoji.name)和&user.id==message.author.id;


这基本上是检查做出反应的用户是否也是消息的发送者,我假设是机器人。否则,你可以将其设置为
!user.bot
,以检查它是否不是像Zsolt所说的那样做出反应的机器人。

我尝试过,但机器人停止了反应。以前,他只是提到自己,但现在什么都没有,因为e您添加了
错误:['time']
max:2
。如果只有一个成员单击该反应,它将在60秒后超时,这应该是
catch
ed。尝试将
max
值减少到1,或删除
errors
选项。是的,机器人不断提到自己。我刚刚更新了我的答案。