const Discord = require("discord.js")
const ms = require("ms");
const fs = require("fs").promises;
const botconfig = require("../../botconfig.json");
module.exports.run = async (bot, message, args) => {
if (!message.guild.id === botconfig["bot_setup"].guild_id) {
console.log(`I have left ${guild.name} as it does not match the server ID in the config file.\nThis bot only supports one server per-instance.`)
return guild.leave()
}
if (!message.channel.name.startsWith(`${botconfig["leo_setup"].leo_commands_channel_name}`)) return message.channel.send(`You must be in <#${botconfig["leo_setup"].leo_commands_channel}> to run this command.`).then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
let mod = message.author;
let leoRole = message.guild.roles.cache.find(role => role.id === botconfig["leo_setup"].leo_role);
let cadetRole = message.guild.roles.cache.find(role => role.id === botconfig["leo_setup"].cadet_role);
if (!cadetRole) return console.log("Role not found (Config: 'leo_setup - cadet_role')");
if (!leoRole) return console.log("Role not found (Config: 'leo_setup - leo_role')");
if (!message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].supervisor_role) && !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].command_role) && !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].high_command_role) && !message.member.hasPermission("ADMINISTRATOR") && !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].asst_commish_role)) return message.channel.send('Invalid permissions.').then(msg => msg.delete({ timeout: 8000 })).catch(console.error)
const user = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[0]));
if (!user) return message.channel.send("Please put a valid member or a user ID for me to strike.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (user === bot) return message.channel.send('You can\'t strike a bot').then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!args[0]) return message.channel.send("You must provide the offenders tag.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!user.roles.cache.find(r => r.id === botconfig["join_roles"].role)) return message.channel.send("You cannot strike this user. Their not verified in the server.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
let type = args[1];
let callSign = args[2];
let banned = args[3]
let comments = args.slice(4).join(" ");
if (!banned) return message.channel.send("Is the user being banned? yes or no").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!type) return message.channel.send("Please provide the type of strike `leo or staff`").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!callSign) return message.channel.send("Please provide there call-sign.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!comments) return message.channel.send("Please provide a statement.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (user.id === message.author.id) return message.channel.send('Why are you trying to strike yourself?').then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (user.hasPermission('ADMINISTRATOR') || user.roles.highest.rawPosition >= message.guild.me.roles.highest.rawPosition) return message.channel.send("You cannot strike this member").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
message.channel.send(`You understand by submitting this strike form you are prepared to be spoken to at any given time per log accepters? Type ***yes*** if you understand.`).then(async (m) => {
message.channel.awaitMessages(response => response.content === 'yes', {
max: 1,
time: 10000,
errors: ['time'],
}).then(async (collected) => {
setTimeout( () => collected.first().delete() , 15000)
setTimeout( () => m.delete(), 15000)
if (type === "leo") {
const emoji1 = bot.emojis.cache.find(emoji => emoji.name === "check2")
const emoji2 = bot.emojis.cache.find(emoji => emoji.name === "investigating")
const emoji3 = bot.emojis.cache.find(emoji => emoji.name === "x2")
if (!user.roles.cache.some(r => r.id === botconfig["leo_setup"].leo_role)) return message.channel.send("You cannot strike this user. Their not Law Enforcement.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
const logEmbed = new Discord.MessageEmbed()
.setAuthor(`${mod.tag}`, message.author.displayAvatarURL({ dynamic: true }))
.setDescription(`A new LEO Strike Log has been submitted by ${message.author}`)
.setThumbnail(botconfig["bot_setup"].embed_logo)
.addField('Enforcers Name', `\`${mod.tag}\` - (${mod.id})`)
.addField('Offenders Call-sign and Name', `\`[${callSign}] | ${user.user.tag}\` - (${user.id})`)
.addField('Action', 'Strike')
.addField('Banned?', `${banned}`)
.addField('Details', comments)
.setColor(botconfig["bot_setup"].main_embed_color)
.setTimestamp();
if (user.roles.cache.some(r => r.id === botconfig["leo_setup"].strike_role2)) {
user.roles.remove(user.roles.cache)
user.roles.add(botconfig["join_roles"].role)
message.channel.send(`${emoji2} <@${user.id}> has reached \`3 LEO Strikes\`, waiting for review.`).then(msg => msg.delete({ timeout: 10000 })).catch(console.error);
let logChannel2 = message.guild.channels.cache.find(c => c.id === botconfig["channel_setup"].blacklist_log_channel);
logChannel2.send(`${user} has reached \`3 LEO Strikes\`. Investigate the strike and confirm the blacklist.`)
const blacklistEmbed = new Discord.MessageEmbed()
.setTitle(`Blacklist Log`)
.setDescription(`A new Blacklist Log has been submitted.`)
.setThumbnail(botconfig["bot_setup"].embed_logo)
.addField('Enforcers Name', `\`${mod.tag}\` - (${mod.id})`)
.addField('Offenders Call-sign and Name', `\`[${callSign}] | ${user.user.tag}\` - (${user.id})`)
.addField('Action', 'Strike')
.addField('Banned?', `${banned}`)
.addField('Details', comments)
.setColor(botconfig["bot_setup"].main_embed_color)
.setTimestamp();
logChannel2.send(blacklistEmbed)
return;
}
let logChannel = message.guild.channels.cache.find(channel => channel.id === botconfig["leo_setup"].leo_punishments_channel);
if (!logChannel) return console.log("Channel not found (Config: 'strike_log_channel')");
message.channel.send(`${emoji1} Added a PD Strike to <@${user.id}> waiting for review.`).then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
logChannel.send(logEmbed)
if (user.roles.cache.some(r => r.id === botconfig["leo_setup"].strike_role)) {
return user.roles.add(botconfig["leo_setup"].strike_role2)
} else {
await user.roles.add(botconfig["leo_setup"].strike_role)
}
} else if (type === "staff") {
const emoji1 = bot.emojis.cache.find(emoji => emoji.name === "check2")
const emoji2 = bot.emojis.cache.find(emoji => emoji.name === "investigating")
const emoji3 = bot.emojis.cache.find(emoji => emoji.name === "x2")
if (!user.roles.cache.some(r => r.id === botconfig["staff_roles"].staff_role)) return message.channel.send("You cannot strike this user. Their not staff.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
const logEmbed = new Discord.MessageEmbed()
.setAuthor(`${mod.tag}`, message.author.displayAvatarURL({ dynamic: true }))
.setDescription(`A new Staff Strike Log has been submitted by ${message.author}`)
.setThumbnail(botconfig["bot_setup"].embed_logo)
.addField('Enforcers Name', `\`${mod.tag}\` - (${mod.id})`)
.addField('Offenders Call-sign and Name', `\`[${callSign}] | ${user.user.tag}\` - (${user.id})`)
.addField('Action', 'Strike')
.addField('Banned?', `${banned}`)
.addField('Details', comments)
.setColor(botconfig["bot_setup"].main_embed_color)
.setTimestamp();
if (user.roles.cache.some(r => r.id === botconfig["staff_roles"].strike_role2)) {
user.roles.remove(user.roles.cache)
user.roles.add(botconfig["join_roles"].role)
message.channel.send(`${emoji2} <@${user.id}> has reached \`3 Staff Strikes\`, waiting for review.`).then(msg => msg.delete({ timeout: 10000 })).catch(console.error);
let logChannel2 = message.guild.channels.cache.find(channel => channel.id === botconfig["channel_setup"].blacklist_log_channel);
if (!logChannel2) return console.log("Channel not found (Config: 'blacklist_log_channel')");
logChannel2.send(`${user} has reached \`3 Staff Strikes\`. Investigate the strike and confirm the blacklist.`)
const blacklistEmbed = new Discord.MessageEmbed()
.setTitle(`Blacklist Log`)
.setDescription(`A new Blacklist Log has been submitted.`)
.setThumbnail(botconfig["bot_setup"].embed_logo)
.addField('Enforcers Name', `\`${mod.tag}\` - (${mod.id})`)
.addField('Offenders Call-sign and Name', `\`[${callSign}] | ${user.user.tag}\` - (${user.id})`)
.addField('Action', 'Strike')
.addField('Banned?', `${banned}`)
.addField('Details', comments)
.setColor(botconfig["bot_setup"].main_embed_color)
.setTimestamp();
logChannel2.send(blacklistEmbed)
return;
}
let logChannel = message.guild.channels.cache.find(channel => channel.id === botconfig["staff_roles"].staff_strike_log);
if (!logChannel) return console.log("Channel not found (Config: 'strike_log_channel')");
message.channel.send(`${emoji1} Added a Staff Strike to <@${user.id}> waiting for review.`).then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
logChannel.send(logEmbed)
if (user.roles.cache.some(r => r.id === botconfig["staff_roles"].strike_role)) {
return user.roles.add(botconfig["staff_roles"].strike_role2)
} else {
await user.roles.add(botconfig["staff_roles"].strike_role)
}
}
})
})
}
module.exports.help = {
name: "strike"
}
嘿,所以我的用户变量有问题我的意思是它现在工作正常,但我希望能够输入一个不和谐的 ID 以运行命令,而不是必须标记用户,因为现在我必须标记用户使用该命令,无论出于何种原因,我都无法在其中输入 discord id,所以我将如何解决这个问题,所以我可以只提及用户并在那里使用 discord id。