有理由踢出命令
Kick command with reason
我创建了一个有原因的踢出命令,但它没有踢出成员,我没有任何错误...
另外,为什么我发送命令后,它会删除它?
我尝试自己修复,但还是不行。感谢您的帮助。
这是我的代码:
client.on('message', message => {
if(message.content.startsWith(prefix + "kick")) {
if(message.channel.type === 'DM') {
message.channel.send('This command can use only in guide');
return;
};
if(!message.member.hasPermission('KICK_MEMBERS')) {
const KickEmbed = new Discord.MessageEmbed()
.setColor("YELLOW")
.setAuthor(message.author.username)
.setDescription("Sorry, but you don't have the permission to use the kick command.")
message.channel.send(KickEmbed);
return;
};
let mentionMember = message.mentions.members.first();
if(!mentionMember) {
const ErrEmbed = new Discord.MessageEmbed()
.setColor('YELLOW')
.setAuthor(message.author.username)
.setDescription('**Usage:** `y!kick <@user> or ID` You need to mention an user!')
message.channel.send(ErrEmbed);
return;
};
let args = message.content.slice(prefix.length).trim().split(/ +/g);
if(!args.lenght) {
const ReasonError = new Discord.MessageEmbed()
.setColor('YELLOW')
.setAuthor(message.author.username)
.setDescription('Before kicking this member, you need to provide a reason of your kick.')
message.channel.send(ReasonError)
return;
};
let authorHighestRole = message.member.roles.highest.position;
let mentionHighestRole = mentionMember.roles.highest.position;
if(mentionHighestRole >= authorHighestRole) {
message.channel.send('You can`t kick members with equal or higher position');
return;
};
if(!mentionMember.kickable) {
message.channel.send('I have no permissions to kick this user');
return
};
mentionMember.kick()
.then(() => message.channel.send(`Kicked ${mentionMember.tag} with reason: ${args}`))
.catch(console.error);
}
}
);
发帖前应查看文档:
https://discord.js.org/#/docs/main/stable/class/GuildMember?scrollTo=kick
但无论如何:
<Member>.kick(Reason)
,就是你传入的一个字符串。
另外,args 看起来像一个数组,所以您不能只在字符串中使用 args
,试试 args.join(" ")
。 (在 message.channel.send("Kicked...")
内)
总而言之,这里是变化:
所以mentionMember.kick()
=> mentionMember.kick(args.join(" "))
我创建了一个有原因的踢出命令,但它没有踢出成员,我没有任何错误... 另外,为什么我发送命令后,它会删除它?
我尝试自己修复,但还是不行。感谢您的帮助。
这是我的代码:
client.on('message', message => {
if(message.content.startsWith(prefix + "kick")) {
if(message.channel.type === 'DM') {
message.channel.send('This command can use only in guide');
return;
};
if(!message.member.hasPermission('KICK_MEMBERS')) {
const KickEmbed = new Discord.MessageEmbed()
.setColor("YELLOW")
.setAuthor(message.author.username)
.setDescription("Sorry, but you don't have the permission to use the kick command.")
message.channel.send(KickEmbed);
return;
};
let mentionMember = message.mentions.members.first();
if(!mentionMember) {
const ErrEmbed = new Discord.MessageEmbed()
.setColor('YELLOW')
.setAuthor(message.author.username)
.setDescription('**Usage:** `y!kick <@user> or ID` You need to mention an user!')
message.channel.send(ErrEmbed);
return;
};
let args = message.content.slice(prefix.length).trim().split(/ +/g);
if(!args.lenght) {
const ReasonError = new Discord.MessageEmbed()
.setColor('YELLOW')
.setAuthor(message.author.username)
.setDescription('Before kicking this member, you need to provide a reason of your kick.')
message.channel.send(ReasonError)
return;
};
let authorHighestRole = message.member.roles.highest.position;
let mentionHighestRole = mentionMember.roles.highest.position;
if(mentionHighestRole >= authorHighestRole) {
message.channel.send('You can`t kick members with equal or higher position');
return;
};
if(!mentionMember.kickable) {
message.channel.send('I have no permissions to kick this user');
return
};
mentionMember.kick()
.then(() => message.channel.send(`Kicked ${mentionMember.tag} with reason: ${args}`))
.catch(console.error);
}
}
);
发帖前应查看文档:
https://discord.js.org/#/docs/main/stable/class/GuildMember?scrollTo=kick
但无论如何:
<Member>.kick(Reason)
,就是你传入的一个字符串。
另外,args 看起来像一个数组,所以您不能只在字符串中使用 args
,试试 args.join(" ")
。 (在 message.channel.send("Kicked...")
内)
总而言之,这里是变化:
所以mentionMember.kick()
=> mentionMember.kick(args.join(" "))