#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