我一直在尝试做一个简单的命令,让聊天中的某个人扮演一个角色,让他们说一个不好的词,这会给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之一,我将使其静音。
有人可以解释这是怎么回事吗?
谢谢。
答案 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;
}
})
注意!文本文件中的角色名称必须与提到的角色名称相同,请注意小写和大写字母,否则代码将无法正常工作。