mirror of
https://github.com/danbulant/Shasha
synced 2026-06-14 11:51:18 +00:00
added executor
This commit is contained in:
parent
2b096ffee0
commit
9631c25d20
5 changed files with 52 additions and 14 deletions
|
|
@ -17,7 +17,6 @@ let jobManager,
|
|||
async function createSchedule(client, { guildID, userID, type, until }) {
|
||||
if (!client || !guildID || !userID || !type || !until) throw new TypeError("Undefined params!");
|
||||
const CHK = new Date().valueOf();
|
||||
if (until.valueOf() < CHK) throw new RangeError("Schedule should be in the future! Not in the past!");
|
||||
if (!jobManager) await init(client);
|
||||
if (typeof until === "string") until = new Date(until);
|
||||
const NAME = [guildID, userID, type].join("/"),
|
||||
|
|
@ -39,6 +38,10 @@ async function createSchedule(client, { guildID, userID, type, until }) {
|
|||
if ((until.valueOf() - CHK) < new Date(24 * 60 * 60 * 1000)) {
|
||||
jobManager.add(SC);
|
||||
jobManager.start(NAME);
|
||||
if (until.valueOf() < CHK) {
|
||||
console.log("RUNNING IMMEDIATELY");
|
||||
jobManager.run(NAME);
|
||||
}
|
||||
}
|
||||
await col.updateOne({ document: NAME }, { $set: SC, $setOnInsert: { document: NAME } }, { upsert: true });
|
||||
return console.log("SCHEDULE " + NAME + " CREATED");
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ const { cleanMentionID, findMemberRegEx } = require("../../../resources/function
|
|||
* @returns {Promise<{ targetUser: User[], resultMsg: string }>}
|
||||
*/
|
||||
module.exports = async (msg, mentions = [], targetUser = [], resultMsg = "") => {
|
||||
if (mentions.length === 0) throw new TypeError("Mentions has no length");
|
||||
if (!mentions.length) return { targetUser, resultMsg };
|
||||
for (const usermention of mentions) {
|
||||
if (usermention.trim().length < 1) continue;
|
||||
let found = [],
|
||||
|
|
|
|||
|
|
@ -1,17 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
const { Guild, User } = require("discord.js");
|
||||
const { getChannel, defaultEventLogEmbed, trySend } = require("../functions");
|
||||
const getColor = require("../getColor");
|
||||
|
||||
/**
|
||||
* @param {Guild} GUILD
|
||||
* @param {User} USER
|
||||
* @returns
|
||||
*/
|
||||
module.exports = async (GUILD, USER) => {
|
||||
if (GUILD.DB.settings.eventChannels?.ban) {
|
||||
if (USER.partial) USER = await USER.fetch();
|
||||
const log = getChannel(GUILD, GUILD.DB.settings.eventChannels.ban);
|
||||
if (!log) return;
|
||||
const emb = defaultEventLogEmbed(GUILD);
|
||||
let audit;
|
||||
if (GUILD.member(GUILD.client.user).hasPermission("VIEW_AUDIT_LOG")) {
|
||||
audit = (await GUILD.fetchAuditLogs({ limit: 1, type: "MEMBER_BAN_ADD" })).entries.first().executor;
|
||||
}
|
||||
const rea = (await GUILD.fetchBan(USER)).reason;
|
||||
emb.setDescription(rea ?? "No reason provided")
|
||||
.setTitle(`\`${USER.tag}\` banned`)
|
||||
emb.setDescription(rea || "No reason provided")
|
||||
.setTitle(`\`${USER.tag}\` banned` + (audit ? ` by \`${audit.tag}\`` : ""))
|
||||
.setColor(getColor("red"))
|
||||
.setThumbnail(USER.displayAvatarURL({ size: 4096, format: "png", dynamic: true }))
|
||||
.addField("User", `<@${USER.id}>\n(${USER.id})`);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ const getColor = require("../getColor");
|
|||
* @param {GuildMember} membernew
|
||||
* @returns
|
||||
*/
|
||||
module.exports = (memberold, membernew) => {
|
||||
module.exports = async (memberold, membernew) => {
|
||||
const NEWAV = membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true });
|
||||
if (!membernew.guild.DB.eventChannels?.memberRole && !membernew.guild.DB.eventChannels?.member) {
|
||||
if (membernew.user.DB.cachedAvatarURL != NEWAV) {
|
||||
|
|
@ -20,25 +20,42 @@ module.exports = (memberold, membernew) => {
|
|||
let log, thumbMes = "";
|
||||
const emb = defaultEventLogEmbed(membernew.guild), oldT = memberold.toJSON().displayAvatarURL;
|
||||
const oldAV = membernew.user.DB.cachedAvatarURL || oldT;
|
||||
emb.setAuthor(emb.author.name, NEWAV)
|
||||
.setTitle("Profile `" + memberold.user.tag + "` updated")
|
||||
.setColor(getColor("blue"));
|
||||
if (oldAV) thumbMes += "This embed's thumbnail is the user's old avatar.\n";
|
||||
let audit;
|
||||
if (membernew.guild.DB.eventChannels?.memberRole) {
|
||||
log = getChannel(membernew, membernew.guild.DB.eventChannels.memberRole);
|
||||
if (membernew.guild.member(membernew.client.user).hasPermission("VIEW_AUDIT_LOG")) {
|
||||
audit = (await membernew.guild.fetchAuditLogs({ limit: 1, type: "MEMBER_ROLE_UPDATE" })).entries.first().executor;
|
||||
}
|
||||
if (membernew.roles.cache.size > memberold.roles.cache.size) {
|
||||
emb.addField("Role added", ("<@&" + membernew.roles.cache.difference(memberold.roles.cache).sort((a, b) => b.position - a.position).map(r => r.id).join(">, <@&") + ">").slice(0, 2048))
|
||||
.setDescription("**Old roles**\n" + (memberold.roles.cache.size > 1 ? "<@&" + memberold.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1).join(">, <@&") + ">" : "`[NONE]`"));
|
||||
const use = membernew.roles.cache.difference(memberold.roles.cache).sort((a, b) => b.position - a.position).map(r => r.id);
|
||||
const use2 = memberold.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1);
|
||||
|
||||
emb.addField(`Role${membernew.roles.cache.size > 2 ? "s" : ""} added`,
|
||||
("<@&" + use.slice(0, 39).join(">, <@&") + ">" + (use.length > 39 ? ` and ${use.slice(39).length} more...` : "")))
|
||||
|
||||
.setDescription(`**Old role${memberold.roles.cache.size > 2 ? "s" : ""}**\n` + (memberold.roles.cache.size > 1 ? "<@&" +
|
||||
use2.slice(0, 82).join(">, <@&") + ">" + (use2.length > 82 ? ` and ${use2.slice(82).length} more...` : "") : "`[NONE]`"));
|
||||
}
|
||||
if (membernew.roles.cache.size < memberold.roles.cache.size) {
|
||||
emb.addField("Role removed", ("<@&" + memberold.roles.cache.difference(membernew.roles.cache).sort((a, b) => b.position - a.position).map(r => r.id).join(">, <@&") + ">").slice(0, 2048))
|
||||
.setDescription("**Current roles**\n" + (membernew.roles.cache.size > 1 ? "<@&" + membernew.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1).join(">, <@&") + ">" : "`[NONE]`"));
|
||||
const use = memberold.roles.cache.difference(membernew.roles.cache).sort((a, b) => b.position - a.position).map(r => r.id);
|
||||
const use2 = membernew.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1);
|
||||
|
||||
emb.addField(`Role${memberold.roles.cache.size > 2 ? "s" : ""} removed`,
|
||||
("<@&" + use.slice(0, 39).join(">, <@&") + ">" + (use.length > 39 ? ` and ${use.slice(39).length} more...` : "")))
|
||||
|
||||
.setDescription(`**Current role${membernew.roles.cache.size > 2 ? "s" : ""}**\n` + (membernew.roles.cache.size > 1 ? "<@&" +
|
||||
use2.slice(0, 82).join(">, <@&") + ">" + (use2.length > 82 ? ` and ${use2.slice(82).length} more...` : "") : "`[NONE]`"));
|
||||
}
|
||||
}
|
||||
if (membernew.guild.DB.eventChannels?.member && membernew.roles.cache.size === memberold.roles.cache.size) {
|
||||
log = getChannel(membernew, membernew.guild.DB.eventChannels.member);
|
||||
if (membernew.displayName !== memberold.displayName) {
|
||||
emb.addField("Nickname", "Changed from `" + memberold.displayName + "` to `" + membernew.displayName + "`");
|
||||
if (membernew.guild.member(membernew.client.user).hasPermission("VIEW_AUDIT_LOG")) {
|
||||
audit = (await membernew.guild.fetchAuditLogs({ limit: 1, type: "MEMBER_UPDATE" })).entries.first().executor;
|
||||
}
|
||||
emb.addField("Current Nickname", "`" + membernew.displayName + "`")
|
||||
.addField("Original Nickname", "`" + memberold.displayName + "`")
|
||||
}
|
||||
if (membernew.user.DB.cachedAvatarURL !== NEWAV) {
|
||||
emb
|
||||
|
|
@ -47,6 +64,10 @@ module.exports = (memberold, membernew) => {
|
|||
if (oldAV) emb.setThumbnail(oldAV);
|
||||
}
|
||||
}
|
||||
emb.setAuthor(emb.author.name, NEWAV)
|
||||
.setTitle("Profile `" + memberold.user.tag + "` updated" +
|
||||
(audit ? ` by \`${audit.tag}\`` : ""))
|
||||
.setColor(getColor("blue"));
|
||||
membernew.user.DB.cachedAvatarURL = NEWAV;
|
||||
membernew.user.setDb("cachedAvatarURL", membernew.user.DB.cachedAvatarURL);
|
||||
if (!emb.fields || emb.fields.length === 0) return;
|
||||
|
|
|
|||
|
|
@ -18,8 +18,12 @@ module.exports = async (msg) => {
|
|||
const log = getChannel(msg, msg.guild.DB.eventChannels.mesDel?.channel);
|
||||
if (!log || !msg.author) return;
|
||||
const emb = defaultEventLogEmbed(msg.guild);
|
||||
let audit;
|
||||
if (msg.guild.member(msg.client.user).hasPermission("VIEW_AUDIT_LOG")) {
|
||||
audit = (await msg.guild.fetchAuditLogs({ limit: 1, type: "MESSAGE_DELETE" })).entries.first().executor;
|
||||
}
|
||||
emb.setColor(getColor("yellow"))
|
||||
.setTitle((!msg.webhookID ? "Message " + msg.id : "Webhook " + msg.webhookID) + " deleted")
|
||||
.setTitle((!msg.webhookID ? "Message " + msg.id : "Webhook " + msg.webhookID) + " deleted" + (audit ? ` by \`${audit.tag}\`` : ""))
|
||||
.setDescription(msg.content.length > 0 ? msg.content : "`[EMPTY]`")
|
||||
.setAuthor(emb.author.name, msg.author?.displayAvatarURL({ format: "png", size: 128, dynamic: true }))
|
||||
.addField("Author", `<@!${msg.author?.id}>\n\`${msg.author?.tag}\`\n(${msg.author?.id})`, true)
|
||||
|
|
|
|||
Loading…
Reference in a new issue