好吧,所以我有一个机器人,静音角色适用于每个人都可以看到的频道,但是当某个员工静音时,他们无法在常规聊天中聊天,但可以在员工聊天中聊天,该员工聊天仅对staff +可见。代码以防万一需要更改
const { red_dark } = require("../../colors.json");
const ms = require("ms");
module.exports = {
name: "mute",
description: "Mutes a member in the discord!",
usage: "!mute <user> <reason>",
category: "moderation",
accessableby: "Members",
aliases: ["m", "nospeak"],
run: async (bot, message, args) => {
// check if the command caller has permission to use the command
if(!message.member.hasPermission("MANAGE_ROLES", "ADMINISTRATOR") || !message.guild.owner) return message.channel.send(":x: **You do not have the permission to use this command!**");
if(!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send(":x: **I do not have the permission to add roles!**")
//define the reason and mutee
let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
if(!tomute) return message.reply("Couldn't find user.");
let muterole = message.guild.roles.find(`name`, "Muted");
//start of create role
if(!muterole){
try{
muterole = await message.guild.createRole({
name: "Muted",
color: "#ff0000",
permissions:[]
})
message.guild.channels.forEach(async (channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false,
CONNECT: false
});
});
}catch(e){
console.log(e.stack);
}
}
//end of create role
let mutetime = args[1];
if(!mutetime) return message.reply(":X: You didn't specify a time!");
await(tomute.addRole(muterole.id));
message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`);
tomute.send(`Hello, you have been muted in ${message.guild.name} for: **${mutetime}**`).catch(err => console.log(err))
setTimeout(function(){
tomute.removeRole(muterole.id);
message.channel.send(`<@${tomute.id}> is no longer muted! Welcome Back!!`);
}, ms(mutetime));
}
}```
答案 0 :(得分:0)
首先,由于新的NodeJS更新,此行不正确:
let muterole = message.guild.roles.find(`name`, "Muted");
应更改为以下内容:
let muterole = message.guild.roles.find(r => r.name === "Muted");
除此之外,它必须具有某些频道权限。我最近发现,如果某个用户(没有特定的mod /管理权限)在其角色之一上具有“发送消息”以允许,他们会绕过静音。要更改此设置(允许其使用此角色),必须将其设置为null(中间的灰色选项),以禁止他们通过静音角色讲话。示例:
如果我尝试使具有“ Beta测试人员”角色的任何人静音,即使静音的人被拒绝,他们仍然可以在该特定频道中讲话。
我希望这在一定程度上是合理的,并且希望我能消除一些困惑,这对您有所帮助! 祝你有美好的一天