mrmBot-Matrix/commands/warn.js

64 lines
3.2 KiB
JavaScript
Raw Normal View History

2020-02-27 15:49:32 +00:00
const database = require("../utils/database.js");
const client = require("../utils/client.js");
const paginator = require("../utils/pagination/pagination.js");
exports.run = async (message, args) => {
if (!message.member.permission.has("manageMessages")) return `${message.author.mention}, you need to have the \`Manage Messages\` permission on this server to warn people!`;
const memberCheck = message.mentions.length >= 1 ? message.mentions[0] : client.users.get(args[0]);
const member = memberCheck ? memberCheck : client.users.get(args[0].replace(/\D/g, ""));
if (member) {
const guildDB = await database.query("SELECT * FROM guilds WHERE guild_id = $1", [message.channel.guild.id]);
const array = guildDB.rows[0].warns[member.id] ? guildDB.rows[0].warns[member.id] : [];
2020-02-27 15:49:32 +00:00
if (args[1].toLowerCase() !== "list") {
args.shift();
array.push({
message: args.join(" "),
time: new Date(),
creator: message.author.id
});
guildDB.rows[0].warns[member.id] = array;
await database.query("UPDATE guilds SET warns = $1 WHERE guild_id = $2", [guildDB.rows[0].warns, message.channel.guild.id]);
2020-02-27 15:49:32 +00:00
//await message.channel.guild.banMember(member.id, 0, `ban command used by @${message.author.username}#${message.author.discriminator}`);
return `Successfully warned ${member.mention} for \`${args.join(" ")}\`.`;
} else {
if (!message.channel.guild.members.get(client.user.id).permission.has("addReactions") && !message.channel.permissionsOf(client.user.id).has("addReactions")) return `${message.author.mention}, I don't have the \`Add Reactions\` permission!`;
if (!message.channel.guild.members.get(client.user.id).permission.has("embedLinks") && !message.channel.permissionsOf(client.user.id).has("embedLinks")) return `${message.author.mention}, I don't have the \`Embed Links\` permission!`;
const warnArray = [];
for (const [i, value] of array.entries()) {
console.log(value);
warnArray.push(`**${i + 1}: Added by ${message.channel.guild.members.get(value.creator).username}#${message.channel.guild.members.get(value.creator).discriminator}**: ${value.message} (${new Date(value.time).toUTCString()})`);
2020-02-27 15:49:32 +00:00
}
const pageSize = 15;
const embeds = [];
const groups = warnArray.map((item, index) => {
return index % pageSize === 0 ? warnArray.slice(index, index + pageSize) : null;
}).filter((item) => {
return item;
});
for (const [i, value] of groups.entries()) {
embeds.push({
"embed": {
"title": "Warn List",
"color": 16711680,
"footer": {
"text": `Page ${i + 1} of ${groups.length}`
},
"description": value.join("\n"),
"author": {
"name": member.username,
"icon_url": member.avatarURL
}
}
});
}
if (embeds.length === 0) return `${message.author.mention}, I couldn't find any warns for this user!`;
return paginator(message, embeds);
}
} else {
return `${message.author.mention}, you need to provide a member to warn!`;
}
};
exports.category = 2;
exports.help = "Warns a server member";
exports.params = "[mention] {reason/list}";