如何从消息中接收角色

时间:2019-03-17 04:20:58

标签: javascript node.js discord.js

我一直在尝试做一个简单的命令,让聊天中的某个人扮演一个角色,让他们说一个不好的词,这会给message.author这个无声的角色。

client.on("message", (message) => {
  let member = message.guild.members.get(author.id);
  var array = fs.readFileSync('./pings.txt').toString().split("\n");
  if (array.includes(message.content)) {
    member.addRole('556210268418605069')
    message.author.send("You have been muted for using one of the pings.")
    message.author.send("If this had a legit reason to do so please message Collier.")
  } else {
    return;
  }
})

在这种情况下,如果某人ping @everyone或列出的ping之一,我将使其静音。

有人可以解释这是怎么回事吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您在此行if (array.includes(message.content))中所检查的是,如果仅提及消息内容(例如:CollierPlays: @everyone)而不是更多内容,则给消息作者一个角色。

我更改了代码,因此机器人在消息中首先提到了角色,并检查了角色名是否在您的数组中。

这是代码:

client.on("message", (message) => {
  let member = message.guild.members.get(author.id);
  var array = fs.readFileSync('./pings.txt').toString().split("\n");
  if (array.includes(message.mentions.roles.first().name)) {
    member.addRole('556210268418605069')
    message.author.send("You have been muted for using one of the pings.")
    message.author.send("If this had a legit reason to do so please message Collier.")
  } else {
    return;
  }
})

注意!文本文件中的角色名称必须与提到的角色名称相同,请注意小写和大写字母,否则代码将无法正常工作。