【发布时间】:2021-08-01 05:25:17
【问题描述】:
我的服务器上有这个验证系统,其中新成员必须对消息做出反应才能获得允许查看其他频道的角色。所以,我想让我的机器人在特定频道上发送消息,向他们打招呼,只有当成员获得特定角色时(已验证)
问题是:任何人都可以在消息中做出反应以一遍又一遍地获取已验证的角色,从而导致机器人发送垃圾邮件,而我仍然没有找到一种方法让每个用户只发送一次此欢迎消息
这是我的代码:
client.on('guildMemberUpdate', (oldMember, newMember) => {
const channel = client.channels.cache.get('channelID');
// If the role(s) are present on the old member object but no longer on the new one (i.e role(s) were removed)
const removedRoles = oldMember.roles.cache.filter(role => !newMember.roles.cache.has(role.id));
if (removedRoles.size > 0) console.log(`The roles ${removedRoles.map(r => r.name)} were removed from ${oldMember.displayName}.`);
// If the role(s) are present on the new member object but are not on the old one (i.e role(s) were added)
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
if (addedRoles.size > 0){
if (newMember.roles.cache.some(role => role.name === 'teste')) {
let embed = new Discord.MessageEmbed()
.setTitle("♡﹕welcome!")
.setDescription("lalalala")
.setColor("#FFB6C1")
.setThumbnail("https://cdn.discordapp.com/attachments/806974794461216813/817737054745526304/giffy_2.gif")
channel.send(`Welcome ${oldMember.user}`, embed)
}
console.log(`The roles ${addedRoles.map(r => r.name)} were added to ${oldMember.displayName}.`);
}
});
【问题讨论】:
标签: javascript discord discord.js