我正在尝试为我的 Discord 机器人创建一个临时静音命令。它创建了静音角色,但即使我更改了权限,用户仍然可以写入消息。 最重要的是,我收到以下弃用警告:
(节点:15956)DeprecationWarning:Collection#find:改为传递函数
const Discord = require("discord.js");
const ms = require("ms");
module.exports.run = async (bot, message, args) => {
//!tempmute @user 1s/m/h/d
let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
if(!tomute) return message.reply("Couldn't find user.");
if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!");
let muterole = message.guild.roles.find(`name`, "muted");
//start of create role
if(!muterole){
try{
muterole = await message.guild.createRole({
name: "muted",
color: "#000000",
permissions:[]
})
message.guild.channels.forEach(async (channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false
});
});
}catch(e){
console.log(e.stack);
}
}
//end of create role
let mutetime = args[1];
if(!mutetime) return message.reply("You didn't specify a time!");
await(tomute.addRole(muterole.id));
message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`);
setTimeout(function(){
tomute.removeRole(muterole.id);
message.channel.send(`<@${tomute.id}> has been unmuted!`);
}, ms(mutetime));
//end of module
}
module.exports.help = {
name: "tempmute"
}
我发现了问题,就像你说的,是权限问题。最重要的是我应该改变:
let muterole = message.guild.roles.find(`name`, "muted");
致以下人士:
let muterole = message.guild.roles.find(muterole => muterole.name === "muted");
我在你的脚本中发现了一些错误,所以我为你修复了它
//!tempmute @user 1s/m/h/d
let tomute = message.guild.member(message.mentions.users.first() ||
message.guild.members.get(args[0])); if(!tomute) return
message.reply("Couldn't find user.");
if(tomute.hasPermission("MANAGE_MESSAGES")) return
message.reply("Can't mute them!"); let muterole =
message.guild.roles.find(muterole => muterole.name === "muted");
//start of create role if(!muterole){
try{
muterole = await message.guild.createRole({
name: "muted",
color: "#000000",
permissions:[]
})
message.guild.channels.forEach(async (channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false
});
});
}catch(e){
console.log(e.stack);
} } //end of create role let mutetime = args[1]; if(!mutetime) return message.reply("You didn't specify a time!");
await(tomute.addRole(muterole.id)); message.reply(`<@${tomute.id}>
has been muted for ${message(message(mutetime))}`);
setTimeout(function(){
tomute.removeRole(muterole.id);
message.channel.send(`<@${tomute.id}> has been unmuted!`); }, message (mutetime));
//end of module }
module.exports.help = { name: "tempmute" }