Shasha/resources/eventsLogger/guildMemberRemove.js
2021-08-09 17:42:02 +07:00

40 lines
No EOL
2 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
const { GuildMember } = require("discord.js");
const { DateTime, Interval, Settings } = require("luxon");
const { intervalToDuration } = require("../../cmds/moderation/src/duration");
const { getChannel, defaultEventLogEmbed, trySend, splitOnLength, defaultDateFormat } = require("../functions");
const getColor = require("../getColor");
Settings.defaultZone = "utc";
/**
* @param {GuildMember} member
* @returns
*/
module.exports = async (member) => {
if (!member.guild.DB) await member.guild.dbLoad();
member.guild.updateCached("systemChannelID", member.guild.systemChannelID);
member.guild.updateCached("iconURL", member.guild.iconURL({ size: 4096, format: "png", dynamic: true }));
const RO = member.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1);
if (member.guild.DB.eventChannels?.leave) {
const log = getChannel(member, member.guild.DB.eventChannels.leave);
if (!log) return;
const emb = defaultEventLogEmbed(member.guild),
RU = splitOnLength(RO, 1010, ">, <@&"),
LE = DateTime.fromJSDate(member.joinedAt),
INT = Interval.fromDateTimes(LE, DateTime.now());
emb
.setTitle((member.user.bot ? "`[BOT]` " : "") + "`" + member.user.tag + "` left")
.setThumbnail(member.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true }))
.setColor(getColor("yellow"))
.addField("Nick", "`" + member.displayName + "`")
.addField("Joined", defaultDateFormat(member.joinedAt) + `\n(${intervalToDuration(INT).strings.join(" ")} ago)`)
.setDescription(`<@!${member.id}> (${member.id}) just left.\nWe have ${member.guild.memberCount} total members now.`);
for (const U of RU) {
emb.addField(emb.fields.length === 2 ? "Roles" : "", U.length ? "<@&" + U.join(">, <@&") + ">" : "`[NONE]`");
}
return trySend(member.client, log, emb);
}
await member.setLeaveRoles(RO);
}