首页 > 解决方案 > Discord.js 检查消息中的用户提及

问题描述

我有这个代码:

        const args = message.content.split(" ");
        args.shift();
        var mention = message.mentions.users.first()
        const subject = args[0];
        
        
        if (!subject) {
            return message.say(`*you wand projects a stream of water*`)
        } else if (subject === mention) {
            return message.say(`*Your wand projects a stream of water at ${mention} and they are now soaked*`)
    

我试图让它拾取mention.users.first()名为的变量mention,以便人们可以指定向某人发射咒语。我不太清楚如何检查它。我尝试了几件事,例如:

} else if (subject === mention) {
        } else if (subject === 'mention') {
        } else if (subject === {mention}) {

我知道这个可能行不通,但我试过了:

        } else if (subject === ${mention}) {

我不知道我的措辞是否正确,或者这完全是错误的做法。任何指针或想法将不胜感激。

标签: javascriptbotsdiscord.js

解决方案


那么角色提及<Message>.content将采用 的形式<@&ID>,它将是一个字符串,discord.js 已经具有验证角色提及所需的正则表达式的静态属性,即:/<@&(\d{17,19})>/g,所以现在您只需要测试字符串是否通过:

const regex = /<@&(\d{17,19})>/g;
if(regex.test(subject)) {

}

就像我说的,你可以通过静态属性 https://discord.js.org/#/docs/main/v12/class/MessageMentions?scrollTo=s-ROLES_PATTERN获得这个正则表达式

const {MessageMentions} = require("discord.js");
const regex = MessageMentions.ROLES_PATTERN;

推荐阅读