Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js Mute命令仅发送错误命令的嵌入_Javascript_Discord_Discord.js_Bots - Fatal编程技术网

Javascript Discord.js Mute命令仅发送错误命令的嵌入

Javascript Discord.js Mute命令仅发送错误命令的嵌入,javascript,discord,discord.js,bots,Javascript,Discord,Discord.js,Bots,因此,我正在为我的discord bot制作一个静音命令,它会发现是否存在一个“静音”角色,如果不存在,则bot会创建一个“静音”角色,然后将该角色提供给提到的成员。目前,当我运行该命令时,它只会提供在命令编写错误时应该发送的嵌入 const BaseCommand = require('../../utils/structures/BaseCommand'); const Discord = require('discord.js'); module.exports = class Mute

因此,我正在为我的discord bot制作一个静音命令,它会发现是否存在一个“静音”角色,如果不存在,则bot会创建一个“静音”角色,然后将该角色提供给提到的成员。目前,当我运行该命令时,它只会提供在命令编写错误时应该发送的嵌入

const BaseCommand = require('../../utils/structures/BaseCommand');
const Discord = require('discord.js');

module.exports = class MuteCommand extends BaseCommand {
  constructor() {
    super('mute', 'moderation', []);
  }

  async run(client, message, args) {
    if(!message.member.hasPermission("MUTE_MEMBERS")) return message.channel.send("You do not have Permission to use this command.");
    if(!message.guild.me.hasPermission("MUTE_MEMBERS")) return message.channel.send("I do not have Permissions to mute members.");
    const Embedhelp = new Discord.MessageEmbed()
    .setTitle('Mute Command')
    .setColor('#6DCE75')
    .setDescription('Use this command to Mute a member so that they cannot chat in text channels nor speak in voice channels')
    .addFields(
      { name: '**Usage:**', value: '=mute (user) (time) (reason)'},
      { name: '**Example:**', value: '=mute @Michael stfu'},
      { name: '**Info**', value: 'You cannot mute yourself.\nYou cannot mute me.\nYou cannot mute members with a role higher than yours\nYou cannot mute members that have already been muted'}
   )
    .setFooter(client.user.tag, client.user.displayAvatarURL());

    let role = 'Muted'
    let muterole = message.guild.roles.cache.find(x => x.name === role);
    if (typeof muterole === undefined) {
      message.guild.roles.create({
        data: {
          name: 'muted',
          color: '#ff0000',
          permissions: {
              SEND_MESSAGES: false,
              ADD_REACTIONS: false,
              SPEAK: false
          }
        },
        reason: 'to mute people',
      })
      .catch(err => console.log(err).then(message.channel.send('Mute Role could not be created')))
    } 

    const mentionedMember = message.mentions.members.first() || await message.guild.members.fetch(args[0]);
    let reason = args.slice(1).join(" ");
    const banEmbed = new Discord.MessageEmbed()
     .setTitle('You have been Muted in '+message.guild.name)
     .setDescription('Reason for Mute: '+reason)
     .setColor('#6DCE75')
     .setTimestamp()
     .setFooter(client.user.tag, client.user.displayAvatarURL());

   if (!reason) reason = 'No reason provided';
   if (!args[0]) return message.channel.send(Embedhelp);
   if (!mentionedMember) return message.channel.send(Embedhelp);
   if (!mentionedMember.bannable) return message.channel.send(Embedhelp);
   if (mentionedMember.user.id == message.author.id) return message.channel.send(Embedhelp);
   if (muterole = undefined) return message.channel.send(Embedhelp);
   if (mentionedMember.user.id == client.user.id) return message.channel.send(Embedhelp);
   if (mentionedMember.roles.cache.has(muterole)) return message.channel.send(Embedhelp);
   if (message.member.roles.highest.position <= mentionedMember.roles.highest.position) return message.channel.send(Embedhelp);

   await mentionedMember.send(banEmbed).catch(err => console.log(err));
   await mentionedMember.roles.add(muterole).catch(err => console.log(err).then(message.channel.send('There was an error while muting the member')))

  } 
}
const BaseCommand=require('../../utils/structures/BaseCommand');
const Discord=require('Discord.js');
module.exports=类MuteCommand扩展BaseCommand{
构造函数(){
超级(‘静音’、‘适度’、[]);
}
异步运行(客户端、消息、参数){
if(!message.member.hasPermission(“MUTE_MEMBERS”))返回message.channel.send(“您没有使用此命令的权限”);
如果(!message.guild.me.hasPermission(“静音成员”))返回message.channel.send(“我没有静音成员的权限”);
const embeddehelp=new Discord.MessageEmbed()
.setTitle(“静音命令”)
.setColor(“#6DCE75”)
.setDescription('使用此命令使成员静音,这样他们就不能在文本频道聊天,也不能在语音频道讲话')
addFields先生(
{name:'**用法:*',值:'=mute(user)(time)(reason)'},
{name:'**示例:*',值:'=mute@Michael stfu'},
{name:'**Info**',value:'您不能使自己静音。\n您不能使我静音。\n您不能使角色高于您的成员静音\n您不能使已经静音的成员静音'}
)
.setFooter(client.user.tag,client.user.displayAvatarURL());
让角色='静音'
让muterrole=message.guild.roles.cache.find(x=>x.name==role);
if(类型muteOf role==未定义){
message.guild.roles.create({
数据:{
名称:“静音”,
颜色:“#ff0000”,
权限:{
发送消息:false,
添加:false,
说:错
}
},
理由:“让人哑口无言”,
})
.catch(err=>console.log(err).then(message.channel.send('无法创建静音角色'))
} 
const sindedMember=message.sindements.members.first()| | wait message.guild.members.fetch(args[0]);
让reason=args.slice(1.join)(“”);
const banEmbed=new Discord.MessageEmbed()
.setTitle('您已在'+message.guild.name'中被禁用)
.setDescription('静音原因:'+原因)
.setColor(“#6DCE75”)
.setTimestamp()文件
.setFooter(client.user.tag,client.user.displayAvatarURL());
如果(!reason)原因='未提供原因';
if(!args[0])返回message.channel.send(帮助);
如果(!NiededMember)返回message.channel.send(帮助);
如果(!NidedMember.bannable)返回message.channel.send(EmbeddeHelp);
if(referencedMember.user.id==message.author.id)返回message.channel.send(Embedhelp);
if(muterole=undefined)返回message.channel.send(embeddehelp);
if(referencedMember.user.id==client.user.id)返回message.channel.send(Embedhelp);
if(referencedMember.roles.cache.has(muterole))返回message.channel.send(Embedhelp);
if(message.member.roles.highest.position console.log(err));
等待提及member.roles.add(muterole).catch(err=>console.log(err).then(message.channel.send('禁用成员时出错'))
} 
}
我仍然无法找出问题所在以及原因,我非常想知道代码中的错误,以及是否还有我不知道的错误。

我们可以看到您的代码:


让角色='静音'
让muterrole=message.guild.roles.cache.find(x=>x.name==role);
if(类型muteOf role==未定义){
message.guild.roles.create({
数据:{
名称:“静音”,
颜色:“#ff0000”,
权限:{
发送消息:false,
添加:false,
说:错
}
},
理由:“让人哑口无言”,
})
.catch(err=>console.log(err).then(message.channel.send('无法创建静音角色'))
} 
if(muterole=undefined)返回message.channel.send(embeddehelp);
这将在未定义muterole时停止运行。 由于muterole无法创建,它将在运行到if muterole行时停止运行。 要解决此问题,在discord.js中创建角色时,仅当您要向角色添加权限时才需要权限标志。您不必将false/deny设置为您不希望在角色中使用的特定权限,因为如果您不将这些权限标记出来,它会将所有权限标记为false。 因此,我们可以仅用括号替换权限:

if(muterole==未定义){
message.guild.roles.create({
数据:{
名称:“静音”,
颜色:“#ff0000”,
权限:[]
},
理由:“让人哑口无言”,
})
.catch(err=>console.log(err).then(message.channel.send('无法创建静音角色'))
}

测试命令时,您处于什么位置?您正在测试缺少的角色部分还是什么?@Bobosky yea我正在测试角色不存在的部分,但不是创建角色并将其提供给用户,而是发送帮助嵌入“移动到答案”部分。