Node.js 静音角色仅在每个人都能看到的频道中工作| Bot discord.js
好的,我有一个机器人,静音角色适用于每个人都能看到的频道,但是当一个工作人员被静音时,他们不能在普通聊天中聊天,但可以在工作人员聊天中聊天,工作人员聊天只能由工作人员看到+这是代码,以防需要更改某些内容Node.js 静音角色仅在每个人都能看到的频道中工作| Bot discord.js,node.js,discord,discord.js,Node.js,Discord,Discord.js,好的,我有一个机器人,静音角色适用于每个人都能看到的频道,但是当一个工作人员被静音时,他们不能在普通聊天中聊天,但可以在工作人员聊天中聊天,工作人员聊天只能由工作人员看到+这是代码,以防需要更改某些内容 const { red_dark } = require("../../colors.json"); const ms = require("ms"); module.exports = { name: "mute", description: "Mutes a mem
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));
}
}```
const{red_dark}=require(“../../colors.json”);
常数ms=要求(“ms”);
module.exports={
名称:“静音”,
描述:“使不和谐中的成员静音!”,
用法:“!静音”,
类别:“适度”,
可访问者:“成员”,
别名:[“m”,“nospeak”],
运行:异步(机器人、消息、参数)=>{
//检查命令调用方是否具有使用该命令的权限
如果(!message.member.hasPermission(“管理_角色”、“管理员”)| |!message.guild.owner)返回message.channel.send(:x:*您没有使用此命令的权限!**);
if(!message.guild.me.hasPermission([“管理_角色”,“管理员”])返回message.channel.send(“:x:*我没有添加角色的权限!**”)
//定义原因并静音
让tomute=message.guild.member(message.indications.users.first()| | message.guild.members.get(args[0]);
if(!tomute)返回message.reply(“找不到用户”);
让muterole=message.guild.roles.find(`name`,Muted”);
//开始创建角色
if(!mute角色){
试一试{
muterole=wait message.guild.createRole({
名称:“静音”,
颜色:“ff0000”,
权限:[]
})
message.guild.channels.forEach(异步(通道,id)=>{
等待通道。覆盖权限(互斥角色{
发送消息:false,
添加:false,
连接:false
});
});
}捕获(e){
console.log(e.stack);
}
}
//创建角色结束
设mutetime=args[1];
if(!mutetime)返回message.reply(“:X:您没有指定时间!”);
wait(tomute.addRole(muterole.id));
message.reply(`has mute for${ms(ms(mutetime))}`);
tomute.send(`Hello,您在${message.guild.name}中被静音:*${mutetime}**`).catch(err=>console.log(err))
setTimeout(函数(){
tomute.removole(muterole.id);
message.channel.send(`不再静音!欢迎回来!!`);
},毫秒(秒);
}
}```
首先,由于新节点更新,此行不正确:
let muterole=message.guild.roles.find(`name`,“Muted”)代码>
应更改为以下内容:
let muterole=message.guild.roles.find(r=>r.name==“Muted”)代码>
除此之外,它必须是一些通道权限。我最近发现,如果一个用户(没有特定的mod/管理权限)有“发送消息”来允许他们的角色之一,他们就会绕过静音。若要更改此设置,则必须将其设置为null(中间的灰色选项),以拒绝他们通过静音角色进行对话。例如:
如果我试图让任何扮演“Beta测试者”角色的人保持沉默,他们仍然可以在这个特定的频道里说话,即使沉默的人被拒绝
我希望这有点道理,我希望我消除了一些困惑,这有帮助!
祝你今天愉快