javascript - 如何让我的 Discord 机器人提及我提到的某人?

标签 javascript node.js discord discord.js

我刚刚开始编写 Discord 机器人,但在提及某人时遇到了一个小问题。当我在任何 channel 的 Discord 上提到某人时,我希望我的机器人能够提及某人并说他有多酷,例如:

Dahkris: lul howcool @Myfriend
Bot: @Myfriend is 80% cool ! 

(随机部分是功能性的)

由于我是js新手,我不知道这些参数是如何工作的,所以我不知道是否应该使用@member或“member.displayName”等(我尝试了不同的类型)。我已经搜索过类似的代码,但通常机器人只提及消息的作者。

bot.on('message', message => {
    if (message.startsWith === 'lul howcool') {
      if ( message.content === @member ) {
      message.channel.send ( @member + ' is ' + ( Math.floor(Math.random() * 100) + 1 ) + "% cool ! " )
    }
  }
  })

这段代码似乎没有任何错误,但不起作用,因为该消息从不包含“@member”(我认为)。

最佳答案

一条消息有 mentions属性是一个 MessageMentions ,它有 2 个您可能感兴趣的属性:usersmembers 。区别在于你想用它做什么。 membersGuildMember 的集合而usersuser的集合。

注意:您可以使用 varGuildMember.userGuildMember 访问user

在这里你想提及某人。两种类型都有一个 toString() 方法,该方法返回一个提及用户的字符串。例如,如果变量 oneUser 中有某人的实例,并且执行 channel.send('Hello ' + oneUser),则输出将为 你好@TheUser

如何使用它取决于你的命令如何工作(检查是否只有一个提及,有多少个参数等)。 我将采用最简单的形式,即消息是否以 lul howcool 开头并且是否包含用户的提及。如果还有其他消息,它仍然有效。

bot.on('message', message => {
  if (message.startsWith('lul howcool')) { // this is how you use startsWith https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
    if (message.mentions.users.length > 0) { // check if an user is mentionned
      message.mentions.users.forEach((k, v) => { // do something for each mentions
        message.channel.send( v + ' is ' + ( Math.floor(Math.random() * 100) + 1 ) + "% cool ! " );
      })
    }
  }
})

它将针对消息中的每个提及(用户提及,而不是 channel 或 Angular 色)发送一条消息。

免责声明:我无法测试代码,因此可能会出现错误。其背后的逻辑仍然是可行的。如果你想在发送消息后处理可能的错误,你不应该使用 forEach 而是使用 for 循环,因为 forEach 不适用于 Promise see this .

关于javascript - 如何让我的 Discord 机器人提及我提到的某人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56954469/

相关文章:

javascript - 添加元素后需要点击触发

javascript - 动态生成条形图 : JS, Jquery, CSS

c# - 是否可以检查 channel 是否存在?

javascript - 获取消息(按 ID)并编辑它

javascript - 基于不同对象在多级对象上应用过滤器

node.js - Windows 10 中的 npm 安装错误 ( npm install -g angular-cli )

javascript - MEAN/AngularJS 应用程序检查对象是否已发布

javascript - 如何组织用户系统的 Mongo 集合

java - 如何使用 JDA 添加多个 react 来嵌入消息

javascript - 无法使用 Javascript 或 JQuery trim 对象属性