Как я могу ударить кого-то, используя идентификатор пользователя discord, вместо того, чтобы отмечать его?

#javascript #discord.js

Вопрос:

 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) amp;amp; !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].command_role) amp;amp; !message.member.roles.cache.some(r => r.id === botconfig["leo_setup"].high_command_role) amp;amp; !message.member.hasPermission("ADMINISTRATOR") amp;amp; !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"
}
 

Эй, так что у меня возникли проблемы с моей пользовательской переменной, я имею в виду, что сейчас это работает нормально, но я хочу иметь возможность ввести идентификатор разногласий для выполнения команды вместо того, чтобы отмечать пользователя, потому что прямо сейчас я должен пометить пользователя, чтобы использовать команду, и по какой-либо причине я не могу ввести там идентификатор разногласий, так как я мог бы это исправить, чтобы я мог просто упомянуть пользователя и использовать там идентификатор разногласий.

Комментарии:

1. Что вы подразумеваете под забастовкой? Если вам нужно пропинговать кого-то внутри сообщения, используйте <@идентификатор пользователя здесь>

2. команда strike — это моя собственная пользовательская команда для сервера fivem, и я пытаюсь выполнить команду с идентификатором пользователя вместо того, чтобы упоминать их, поэтому вместо /mute <@370248812897501212> 5m spamming того, чтобы я хотел иметь возможность просто /mute 370248812897501212 5m spamming @Tembero

Ответ №1:

С помощью.fetch должен сделать свое дело

 const user = await message.guild.members.fetch(args[0])
 

Комментарии:

1. работы очень ценят это.

2. Отлично, если бы вы могли отметить это как решение, было бы неплохо @Lorelei Ramirez