机器人发送反应消息而没有反应
Bot sends reaction message without a reaction
所以我的机器人现在在第一条消息之后立即发送 "A" 反应消息,但用户没有反应。它不应该那样做。为什么?我没有错误。
client.on("guildMemberAdd", member => {
try {
member.send(`Hello ${member}, welcome to the PotatoHost Server!
I want to help you and so my question is: Do you want to buy a server or do you need more informations first? \n
A: I want to buy a server
B: I need more informations first \n
Please react to this message with A or B.`)
.then(function (message) {
message.react("")
message.react("")
const filter = (reaction, user) => {
return ['', 'B'].includes(reaction.emoji.name) && user.id === message.author.id;
};
message.awaitReactions(filter, { max: 1, time: 3600000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '') {
message.channel.send('Ok, so you want to buy a server. Let me recommend you to visit <#699374469977735208>.');
}
else {
message.channel.send('Ok, so you need more informations first. Let me recommend you to visit <#699374469977735208>.');
}
})
.catch(collected => {
message.channel.send('You reacted with neither A or B.');
})
});
}catch (err) {
console.log(err)
}
})
您似乎正在覆盖原始 message
对象。在您的过滤器中,您要确保它是会员的 ID,以便其他人无法认领它,
&& user.id === message.author.id
但是,在这种情况下,message
指的是您的机器人正在发送的消息 —.then(function (message) {
。因此,您的代码会读取过滤器,因为 ID 必须与您的机器人相匹配,并且由于您的机器人对 A 作出反应,它会吐出 A 反应消息。
要解决此问题,请将前面所述的过滤器更改为
&& user.id === member.id
编辑
第二个问题:B。你的过滤器只找到或B,你需要将B更改为return ['', 'B']
中的emoji版本。
所以我的机器人现在在第一条消息之后立即发送 "A" 反应消息,但用户没有反应。它不应该那样做。为什么?我没有错误。
client.on("guildMemberAdd", member => {
try {
member.send(`Hello ${member}, welcome to the PotatoHost Server!
I want to help you and so my question is: Do you want to buy a server or do you need more informations first? \n
A: I want to buy a server
B: I need more informations first \n
Please react to this message with A or B.`)
.then(function (message) {
message.react("")
message.react("")
const filter = (reaction, user) => {
return ['', 'B'].includes(reaction.emoji.name) && user.id === message.author.id;
};
message.awaitReactions(filter, { max: 1, time: 3600000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '') {
message.channel.send('Ok, so you want to buy a server. Let me recommend you to visit <#699374469977735208>.');
}
else {
message.channel.send('Ok, so you need more informations first. Let me recommend you to visit <#699374469977735208>.');
}
})
.catch(collected => {
message.channel.send('You reacted with neither A or B.');
})
});
}catch (err) {
console.log(err)
}
})
您似乎正在覆盖原始 message
对象。在您的过滤器中,您要确保它是会员的 ID,以便其他人无法认领它,
&& user.id === message.author.id
但是,在这种情况下,message
指的是您的机器人正在发送的消息 —.then(function (message) {
。因此,您的代码会读取过滤器,因为 ID 必须与您的机器人相匹配,并且由于您的机器人对 A 作出反应,它会吐出 A 反应消息。
要解决此问题,请将前面所述的过滤器更改为
&& user.id === member.id
编辑
第二个问题:B。你的过滤器只找到或B,你需要将B更改为return ['', 'B']
中的emoji版本。