【问题标题】:How to detect when bot is mentioned如何检测何时提到机器人
【发布时间】:2021-04-16 19:37:13
【问题描述】:

在您将此标记为重复之前,我已经尝试过此帖子:How to detect if the bot has been mentioned?

else if (message.mentions.has(client.user)) { 
    message.channel.send("https://images-ext-2.discordapp.net/external/L-agoqC2Qsf2sdz4tdrcD5hUiJe6moglhwHjXPi8McE/https/i.imgflip.com/3ia3r2.png")
    console.log('Bot was mentioned')
 }

当它被提及时我让它记录但不记录,所以我认为它没有检测到它被提及。是否有其他方法可以检测是否提到了机器人?

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    为了检查对特定Guild#GuildMember 的提及,您应该写

    if (message.mentions.members.has(<Client>.user.id)) {
        message.channel.send("https://images-ext-2.discordapp.net/external/L-agoqC2Qsf2sdz4tdrcD5hUiJe6moglhwHjXPi8McE/https/i.imgflip.com/3ia3r2.png");
        console.log('Bot was mentioned');
    }
    

    这将检查对机器人的直接提及。

    【讨论】:

    • (.user.id)) 应该是 (client.user.id)) 对吗?因为当它有“”时会导致错误。无论哪种方式,仍然对我不起作用。我想这是我的机器人的问题,因为它对你有用
    • 我写了 来识别一般的客户。所以任何人都可以使用这条线。但是是的,它应该是client.user.id。你能尝试用“includes”替换“has”吗?
    • 还是不行。我的机器人肯定有问题。没有收到任何错误,也没有其他命令正在运行,所以我会调查一下
    【解决方案2】:

    if (message.mentions.has(...) 的烦人之处在于,即使提到 @everyone 或 @here,它也会让机器人做出反应,因此我不建议使用它。

    最好的事情,不幸的是,最丑陋的事情是有一个 if 语句检查消息是否包含客户提及,这可以使用:

    if (message.content.includes(`<@!${client.user.id}>`) console.log('Bot was mentioned!')
    

    【讨论】:

    • 嗯。似乎不起作用。我尝试将 {client.user.id} 更改为机器人的 ID,但仍然无法正常工作。
    猜你喜欢
    • 2019-08-07
    • 2020-07-29
    • 2018-06-05
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2014-04-01
    • 2020-04-05
    相关资源
    最近更新 更多