Javascript Discord.js Mute命令仅发送错误命令的嵌入
因此,我正在为我的discord bot制作一个静音命令,它会发现是否存在一个“静音”角色,如果不存在,则bot会创建一个“静音”角色,然后将该角色提供给提到的成员。目前,当我运行该命令时,它只会提供在命令编写错误时应该发送的嵌入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
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我正在测试角色不存在的部分,但不是创建角色并将其提供给用户,而是发送帮助嵌入“移动到答案”部分。