我正在尝试为我为学校里的人们制作的服务器制作discord.js机器人。我正在尝试建立一个#classes
频道,如果您对某些消息做出反应,它将给您一个角色(使您可以访问该类的文本频道)。
client.on('messageReactionAdd', (reaction, user) => {
console.log("client.on completed.")
if (message.channel.name === 'classes') {
console.log("if(message) completed.")
if (reaction.emoji.name === "reminder_ribbon") {
console.log("emoji test completed.")
const guildMember = reaction.message.guild.members.get(user.id);
const role = reaction.message.guild.roles.find(role => role.name === "FACS");
guildMember.addRole(role);
}
}
});
这是我到目前为止尝试过的方法,但是,它没有使我/其他人对此角色做出反应,也没有返回错误消息。
P.S。另外,当他们不反应时,我怎么能做到这一点呢?
编辑:看来,它只会从bot启动后发送的缓存消息/消息中获得反应。另外,在第一条if(message.channel.id)消息上未定义消息。
答案 0 :(得分:0)
尝试使用以下代码:
client.on('messageReactionAdd', (reaction, user) => {
if (message.channel.id === '552708152232116224') {
if (reaction.emoji.name === "reminder_ribbon") {
const guildMember = reaction.message.guild.members.get(user.id);
const role = reaction.message.guild.roles.get('552709290427940875');
guildMember.addRole(role);
}
}
});
首先,reaction.users
是一个对象,其中包含所有对该消息做出反应的用户,因此您首先必须定义要将角色分配给哪个用户。我修复了使用guildMember
来获取user.id
的问题。
第二个错误是您尝试为guildMember
分配角色ID,尽管您首先必须获取角色,然后再将角色Object分配给guildMember
。