client.on('raw', (e) => {
if (e.t === 'MESSAGE_REACTION_ADD' && e.d.message_id === '813150433651851265' && e.d.emoji.name === "✅" )
{
const guild = client.guilds.cache.get(e.d.guild_id)
const member = guild.members.cache.find(user => user.id === e.d.user_id)
console.log(member)
const role = guild.roles.cache.find(role => role.id === "812809799233699871")
if (!member.roles.find(role => role.id === "812809799233699871")) member.roles.add(role)
else return
}
})
我正在尝试扮演一个反应角色。但是成员未定义?有人知道为什么吗?
答案 0 :(得分:0)
我建议您首先发出 messageReactionAdd 事件,然后运行 messageReactionAdd 事件并使用它进行配置,因为它比使用原始事件更容易,以下是发出 messageReactionAdd 事件的方法,
client.on('raw', (packet) => {
if(!['MESSAGE_REACTION_ADD'].includes(packet.t)) return undefined;
let channel = client.channels.cache.get(packet.d.channel_id);
if(channel.messages.cache.has(packet.d.message_id)) return undefined;
channel.messages.fetch(packet.d.message_id).then(message => {
const emoji = packet.d.emoji.id ? `${packet.d.emoji.name}:${packet.d.emoji.id}` : packet.d.emoji.name;
const reaction = message.reactions.cache.get(emoji);
if (reaction) reaction.users.cache.set(packet.d.user_id, client.users.cache.get(packet.d.user_id));
if (packet.t === 'MESSAGE_REACTION_ADD') {
client.emit('messageReactionAdd', reaction, client.users.cache.get(packet.d.user_id));
}
})
})
现在您可以使用 messageReactionAdd 事件为您的反应角色,
client.on('messageReactionAdd', (reaction, user) => {
//Do your thing here.
})
希望对你有帮助?