下面代码中的基本思想是,它将首先GuildMember从公会中的用户那里获取发送消息的对象。然后,它将检查消息中是否有任何提及,并将所有角色 ID 放入messageRoles. 它还将所有用户的成员角色放入另一个名为memberRoles. 然后,它将两个数组与some(非常方便的方法)进行比较,如果为真,那么它会回复。
代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
const ownerId = "";
client.on("message", async message => {
if (message.author.bot) return false;
if (message.mentions.has(ownerId)) {
message.reply(`reply`);
}
let user = client.users.cache.get(ownerId);
let currentGuild = message.guild;
let currentMember = currentGuild.members.cache.get(user.id);
let memberRoles = [];
currentMember.roles.cache.each(role => {
memberRoles.push(role.id);
});
let messageRoles = [];
console.log(message.mentions.roles);
message.mentions.roles.each(role => {
messageRoles.push(role.id);
})
let containsMention = messageRoles.some(x => memberRoles.includes(x));
if (containsMention) {
message.reply('reply');
}
});