Событие messageReactionAdd
имеет два параметра - MessageReaction
и User
.
В вашем примере это будут reaction
и user
.Вы используете параметр reaction
, чтобы убедиться, что реакция добавлена именно так, как вам нужно.Однако, когда речь идет о добавлении роли к человеку, который добавил реакцию, вы ссылаетесь на member
, который на самом деле является лицом, отправившим сообщение (message.member
), а не лицом, добавившим реакцию к сообщению.
Чтобы добавить роль любому, кто реагирует, вам необходимо
Изменить:
member.addRole(role)
Для любого асинхронного события с: (client.on('messageReactionAdd', async (reaction, user) =>
)
const guildmember = await guild.fetchMember(user);
guildmember.addRole(role);
Или выполните:
guild.fetchMember(user).then(guildmember => guildmember.addRole(role));
Редактировать: функция addRole
существует только для объекта guildMember
, так как вы можете только добавить кому-то рольв гильдии.