【问题标题】:Discord.js bot responds when mentionedDiscord.js 机器人在提及时做出响应
【发布时间】:2020-12-28 16:50:13
【问题描述】:

我正在尝试让我的 discord.js 机器人在被 ping 时发送一条消息。我不确定如何做到这一点,所以我参考了这段代码:

client.on('message', message => {
    if (message.content === '<@745648345216712825>') {
        message.channel.send('Message Here');
    }
});

但是,这不起作用。

另外,当有人提到特定用户时,我的机器人是否可能会做出响应,例如,如果用户在机器人响应的消息中的任何位置提到了我?如果是的话,你能告诉我怎么做吗?

【问题讨论】:

  • 如果你用一个简单的字符串替换&lt;@745648345216712825&gt;,比如hello,然后你在Discord上打个招呼,这行得通吗?另外,您是否收到任何可以提供帮助的错误消息?
  • “这不起作用”到底是什么意思?

标签: javascript node.js discord discord.js


【解决方案1】:

Message 有一个名为mentions 的属性,其中包含消息中提到的所有频道、成员、角色和用户。您可以使用MessageMentions 的方法.has(data, [options]) 来查看您的机器人是否被提及。


client.on("messageCreate", (message) => {
    if (message.author.bot) return false;

    if (message.content.includes("@here") || message.content.includes("@everyone") || message.type == "REPLY") return false;

    if (message.mentions.has(client.user.id)) {
        message.channel.send("Hello there!");
    }
});

在 Discord.JS v13 中,message 事件已重命名为 messageCreate。使用message 仍然有效,但在您切换之前,您会收到弃用警告。

【讨论】:

  • 谢谢您...这行得通。但是,如果我 ping @here 或 @everyone,它仍然会显示 Hello There!无论如何,我可以防止这种情况发生吗?
  • 之所以这样做是因为@everyone@here 也提到了机器人。您可以检查消息内容是否包含@everyone@here,然后返回。 More info.
  • 对不起。但是,我无法理解你在说什么。能给我一个示例代码吗?
  • @Jakye 在我的情况下,当我回复它的任何消息时它也会回复
  • @IrtizaKhanLabib 感谢您告诉我。我已经更新了代码。你能再试一次吗?
【解决方案2】:

discord.js 刚刚更新,您可以使用

client.on('message', message => {
    if (message.mentions.has(client.user)) {
        message.channel.send('your message');
    }
});

【讨论】:

    【解决方案3】:

    检查整条消息中是否仅提及您的机器人的最佳方法之一是正则表达式。你可以使用这个正则表达式来检查是否只提到了客户端:

    /^<@!?${<client>.user.id}>( |)$/
    

    您可以使用Stringmatch 方法查看消息。在我们的例子中,Stringmessage.content

    if (message.content.match(/^<@!?${client.user.id}>( |)$/)) {
      return message.channel.send("Thanks for mentioning me! my prefix is ...");
    };
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2021-07-02
      • 2021-01-08
      • 2023-04-07
      • 1970-01-01
      • 2021-07-08
      • 2020-09-08
      • 2020-08-09
      • 2021-01-06
      相关资源
      最近更新 更多