我正在尝试为加入我的服务器的用户创建一个验证系统。他们必须对正确的表情符号做出反应,才能获得成员角色。我花了大约14个小时以上的时间阅读文档,甚至尝试使用集合和try-catch块。如何获取事件处理程序以识别成员和消息属性,以便该事件可以相应地起作用?
client.on('guildMemberAdd', member => {
member.guild.channels.get('549387603773828971').send(embed).then(async embedMessage => {
await embedMessage.react('✔️');
await embedMessage.react('❌');
});
client.on('messageReactionAdd', (reaction, user) => {
if (reaction.emoji.name === "✔️") {
//assign role to new user
} else if (reaction.emoji.name === "❌")
// tell user to react to the correct emote
});
});
答案 0 :(得分:0)
首先,我使用guildMember
获取了reaction.message
,以获取所有消息属性和方法。之后,我使用reaction.message.guild
属性和方法按角色名称获取了角色。
对于您的消息,我还使用了reaction.message.channel
方法。
尝试使用以下代码:
client.on('guildMemberAdd', member => {
member.guild.channels.get('549387603773828971').send(embed).then(async embedMessage => {
await embedMessage.react('✔️');
await embedMessage.react('❌');
});
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.emoji.name === "✔️") {
const guildMember = reaction.message.guild.members.get(user.id);
if (!guildMember) throw 'Couldn\'t get guildMember!'
const roleToAssign = reaction.message.guild.roles.find(r => r.name === 'NAME OF THE ROLE')
if (!roleToAssign) throw 'Couldn\'t get roleToAssign!'
await guildMember.addRole(roleToAssign)
} else if (reaction.emoji.name === "❌")
reaction.message.channel.send('Tell user to react to the correct emote');
});
});