0
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。

4

1 回答 1

0

使用 .fetch 应该可以解决问题

const user = await message.guild.members.fetch(args[0])
于 2021-09-17T18:59:57.473 回答