【问题标题】:Discord.js check for a user mention inside a messageDiscord.js 检查消息中的用户提及
【发布时间】:2020-10-13 04:46:44
【问题描述】:

我有这个代码:

        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*`)
    

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

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

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

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

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

【问题讨论】:

    标签: javascript bots discord.js


    【解决方案1】:

    <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;
    

    【讨论】:

    • 当我尝试测试时,我得到了不和谐的 api 错误“DiscordAPIError: Invalid Form Body content: must be 2000 or less in length.”
    • 无论如何,当您执行message.say("string"); 之类的操作时会发生该错误,很可能您有一个变量,并且它超过了 2000 个字符,在这种情况下您需要截断它。
    猜你喜欢
    • 2020-09-06
    • 2021-02-09
    • 2021-06-17
    • 2021-05-12
    • 2021-09-14
    • 2023-03-11
    • 1970-01-01
    • 2021-07-02
    • 2018-07-21
    相关资源
    最近更新 更多