mirror of
https://github.com/danbulant/Shasha
synced 2026-07-05 19:11:13 +00:00
reowrk again
This commit is contained in:
parent
b228a296e8
commit
68fba58d9c
7 changed files with 57 additions and 39 deletions
21
Main.js
21
Main.js
|
|
@ -16,10 +16,9 @@ if (process.argv.includes("-d")) {
|
||||||
|
|
||||||
const sqlite = require('sqlite');
|
const sqlite = require('sqlite');
|
||||||
const configFile = require('./config.json');
|
const configFile = require('./config.json');
|
||||||
const { errLog, trySend, noPerm, getUTCComparison, defaultEventLogEmbed, getChannel, getUser } = require('./resources/functions');
|
const { errLog, trySend, defaultEventLogEmbed } = require('./resources/functions');
|
||||||
const { join } = require('path');
|
const { join } = require('path');
|
||||||
const getColor = require("./resources/getColor");
|
const getColor = require("./resources/getColor");
|
||||||
const { timestampAt } = require("./resources/debug");
|
|
||||||
const requireAll = require("require-all");
|
const requireAll = require("require-all");
|
||||||
const { chatAnswer } = require("./resources/shaChat");
|
const { chatAnswer } = require("./resources/shaChat");
|
||||||
|
|
||||||
|
|
@ -199,22 +198,4 @@ process.on("uncaughtException", e => errLog(e, null, client));
|
||||||
process.on("unhandledRejection", e => errLog(e, null, client));
|
process.on("unhandledRejection", e => errLog(e, null, client));
|
||||||
process.on("warning", e => errLog(e, null, client));
|
process.on("warning", e => errLog(e, null, client));
|
||||||
|
|
||||||
async function execPunishmentSchedule([guildID, userID, type]) {
|
|
||||||
if (!guildID || !userID || !type) throw new TypeError("Undefined param!");
|
|
||||||
let USER = client.users.resolve(userID);
|
|
||||||
if (!USER) USER = await client.users.fetch(userID);
|
|
||||||
if (!USER) throw new Error("Unknown user");
|
|
||||||
const GUILD = client.guilds.resolve(guildID);
|
|
||||||
if (!GUILD) throw new Error("Unknown guild");
|
|
||||||
if (!GUILD.DB) GUILD.dbLoad();
|
|
||||||
const CL = GUILD.member(client.user);
|
|
||||||
let ret;
|
|
||||||
if (type === "mute") {
|
|
||||||
ret = await USER.unmute(GUILD, CL, "Punishment expired");
|
|
||||||
} else {
|
|
||||||
ret = await USER.unban(GUILD, CL, "Punishment expired");
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
client.login(configFile.token);
|
client.login(configFile.token);
|
||||||
|
|
@ -120,7 +120,6 @@ module.exports = class mute extends commando.Command {
|
||||||
try {
|
try {
|
||||||
const RES = await EXEC.mute(msg.guild, { duration: duration, infraction: infractionToDoc.infraction, moderator: msg.member }, reason);
|
const RES = await EXEC.mute(msg.guild, { duration: duration, infraction: infractionToDoc.infraction, moderator: msg.member }, reason);
|
||||||
if (RES.infraction) infractionN.push(RES.infraction);
|
if (RES.infraction) infractionN.push(RES.infraction);
|
||||||
console.log(RES);
|
|
||||||
muted.push(EXEC.id);
|
muted.push(EXEC.id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (/Missing Permissions|someone with higher position/.test(e.message)) cant.push(EXEC.id);
|
if (/Missing Permissions|someone with higher position/.test(e.message)) cant.push(EXEC.id);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ const Bree = require("bree");
|
||||||
const { errLog } = require("../../../resources/functions");
|
const { errLog } = require("../../../resources/functions");
|
||||||
|
|
||||||
const { join } = require("path"),
|
const { join } = require("path"),
|
||||||
scheduler = require("../../../resources/scheduler"),
|
{ scheduler } = require("../../../resources/scheduler"),
|
||||||
{ database } = require("../../../database/mongo"),
|
{ database } = require("../../../database/mongo"),
|
||||||
col = database.collection("Schedule");
|
col = database.collection("Schedule");
|
||||||
|
|
||||||
|
|
@ -36,10 +36,10 @@ async function createSchedule(client, { guildID, userID, type, until }) {
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await col.updateOne({ document: NAME }, { $set: SC, $setOnInsert: { document: NAME } }, { upsert: true });
|
await jobManager.remove(NAME).catch(() => { });
|
||||||
await jobManager.remove(NAME).catch(() => { })
|
|
||||||
jobManager.add(SC);
|
jobManager.add(SC);
|
||||||
jobManager.start(NAME);
|
jobManager.start(NAME);
|
||||||
|
return col.updateOne({ document: NAME }, { $set: SC, $setOnInsert: { document: NAME } }, { upsert: true });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return errLog(e, null, client);
|
return errLog(e, null, client);
|
||||||
}
|
}
|
||||||
|
|
@ -47,6 +47,9 @@ async function createSchedule(client, { guildID, userID, type, until }) {
|
||||||
|
|
||||||
async function init(client) {
|
async function init(client) {
|
||||||
const jobs = await col.find({}).toArray();
|
const jobs = await col.find({}).toArray();
|
||||||
|
console.log(jobs);
|
||||||
jobManager = scheduler(client, jobs);
|
jobManager = scheduler(client, jobs);
|
||||||
jobManager.start();
|
jobManager.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = { createSchedule }
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const NAME = process.argv[2]?.split(/\//);
|
const { parentPort } = require("worker_threads");
|
||||||
|
|
||||||
|
if (parentPort) {
|
||||||
|
const NAME = process.argv[2]?.split(/\//);
|
||||||
|
parentPort.postMessage(NAME);
|
||||||
|
};
|
||||||
|
|
@ -30,7 +30,6 @@ module.exports = class unmute extends commando.Command {
|
||||||
}
|
}
|
||||||
if (mentions?.length > 0) {
|
if (mentions?.length > 0) {
|
||||||
const FR = await targetUser(msg, mentions, targetUsers, resultMsg);
|
const FR = await targetUser(msg, mentions, targetUsers, resultMsg);
|
||||||
console.log(FR);
|
|
||||||
targetUsers = FR.targetUser;
|
targetUsers = FR.targetUser;
|
||||||
resultMsg = FR.resultMsg;
|
resultMsg = FR.resultMsg;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,41 @@ const { errLog, trySend } = require("./functions"),
|
||||||
* @param {object[]} jobs
|
* @param {object[]} jobs
|
||||||
* @returns {Bree}
|
* @returns {Bree}
|
||||||
*/
|
*/
|
||||||
module.exports = (client, jobs = []) => {
|
function scheduler(client, jobs = []) {
|
||||||
return new Bree({
|
return new Bree({
|
||||||
// logger: new cabin(),
|
logger: (data) => {
|
||||||
|
return trySend(client, schedulerLog, data);
|
||||||
|
},
|
||||||
root: false,
|
root: false,
|
||||||
jobs: jobs,
|
jobs: jobs,
|
||||||
workerMessageHandler: (a) => trySend(client, schedulerLog, a),
|
workerMessageHandler: ({ message }) => {
|
||||||
errorHandler: (e, m) => errLog(e, null, client, false, `\`${m?.threadId}\` \`${m?.name}\``)
|
const NAME = message;
|
||||||
|
console.log(NAME);
|
||||||
|
if (!NAME[0] || !NAME[1] || !NAME[2]) throw new Error("Value undefined!");
|
||||||
|
return execPunishmentSchedule(client, NAME[0], NAME[1], NAME[2]);
|
||||||
|
},
|
||||||
|
errorHandler: (e, m) => {
|
||||||
|
return errLog(e, null, client, false, `\`${m?.threadId}\` \`${m?.name}\``)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function execPunishmentSchedule(client, guildID, userID, type) {
|
||||||
|
if (!guildID || !userID || !type || !client) throw new TypeError("Undefined param!");
|
||||||
|
const USER = await client.users.fetch(userID);
|
||||||
|
if (!USER) throw new Error("Unknown user");
|
||||||
|
if (!USER.DB) await USER.dbLoad();
|
||||||
|
const GUILD = await client.guilds.fetch(guildID);
|
||||||
|
if (!GUILD) throw new Error("Unknown guild");
|
||||||
|
if (!GUILD.DB) await GUILD.dbLoad();
|
||||||
|
const CL = GUILD.member(client.user);
|
||||||
|
let ret;
|
||||||
|
if (type === "mute") {
|
||||||
|
ret = await USER.unmute(GUILD, CL, "Punishment expired");
|
||||||
|
} else {
|
||||||
|
ret = await USER.unban(GUILD, CL, "Punishment expired");
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { scheduler, execPunishmentSchedule }
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
const { Structures, Guild, GuildMember, BanOptions } = require("discord.js"),
|
const { Structures, Guild, GuildMember, BanOptions } = require("discord.js"),
|
||||||
{ database } = require("../database/mongo"),
|
{ database } = require("../database/mongo"),
|
||||||
{ errLog, defaultEventLogEmbed, defaultDateFormat, trySend } = require("./functions");
|
{ errLog, defaultEventLogEmbed, defaultDateFormat, trySend } = require("./functions");
|
||||||
|
const { createSchedule } = require("../cmds/moderation/src/createSchedule");
|
||||||
const { TimedPunishment } = require("./classes");
|
const { TimedPunishment } = require("./classes");
|
||||||
|
|
||||||
Structures.extend("Guild", u => {
|
Structures.extend("Guild", u => {
|
||||||
|
|
@ -14,7 +15,6 @@ Structures.extend("Guild", u => {
|
||||||
async dbLoad() {
|
async dbLoad() {
|
||||||
return database.collection("Guild").findOne({ document: this.id }).then((r, e) => {
|
return database.collection("Guild").findOne({ document: this.id }).then((r, e) => {
|
||||||
if (e) return errLog(e, null, this.client);
|
if (e) return errLog(e, null, this.client);
|
||||||
console.log(r);
|
|
||||||
if (!r) r = {};
|
if (!r) r = {};
|
||||||
if (!r.eventChannels) r.eventChannels = {};
|
if (!r.eventChannels) r.eventChannels = {};
|
||||||
if (!r.settings) r.settings = {};
|
if (!r.settings) r.settings = {};
|
||||||
|
|
@ -22,14 +22,13 @@ Structures.extend("Guild", u => {
|
||||||
timedPunishments = new Map();
|
timedPunishments = new Map();
|
||||||
if (r.infractions)
|
if (r.infractions)
|
||||||
for (const U in r.infractions) {
|
for (const U in r.infractions) {
|
||||||
console.log(r.infractions[U]);
|
|
||||||
infractions.set(U, r.infractions[U]);
|
infractions.set(U, r.infractions[U]);
|
||||||
}
|
}
|
||||||
if (r.timedPunishments)
|
if (r.timedPunishments)
|
||||||
for (const U in r.timedPunishments) {
|
for (const U in r.timedPunishments) {
|
||||||
|
console.log(r.timedPunishments[U]);
|
||||||
const tr = new TimedPunishment(r.timedPunishments[U]);
|
const tr = new TimedPunishment(r.timedPunishments[U]);
|
||||||
tr.setDataDuration(tr.duration.invoked, tr.duration.until);
|
tr.setDataDuration(tr.duration.invoked, tr.duration.until);
|
||||||
console.log(timedPunishments.set(U, tr));
|
|
||||||
}
|
}
|
||||||
r.infractions = infractions;
|
r.infractions = infractions;
|
||||||
r.timedPunishments = timedPunishments;
|
r.timedPunishments = timedPunishments;
|
||||||
|
|
@ -62,9 +61,7 @@ Structures.extend("Guild", u => {
|
||||||
if (!this.DB) await this.dbLoad();
|
if (!this.DB) await this.dbLoad();
|
||||||
console.log("SETTING INF");
|
console.log("SETTING INF");
|
||||||
const ret = this.DB.infractions.set(add.moderator.id + "/" + add.infraction, add);
|
const ret = this.DB.infractions.set(add.moderator.id + "/" + add.infraction, add);
|
||||||
console.log(ret);
|
|
||||||
await this.setDb("infractions", this.DB.infractions);
|
await this.setDb("infractions", this.DB.infractions);
|
||||||
console.log(ret);
|
|
||||||
return ret;
|
return ret;
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
}
|
}
|
||||||
|
|
@ -100,7 +97,7 @@ Structures.extend("Guild", u => {
|
||||||
async setTimedPunishment(Punishment) {
|
async setTimedPunishment(Punishment) {
|
||||||
console.log("SET TIMED PUNISHMENT");
|
console.log("SET TIMED PUNISHMENT");
|
||||||
const ret = this.DB.timedPunishments.set(Punishment.userID + "/" + Punishment.type, Punishment);
|
const ret = this.DB.timedPunishments.set(Punishment.userID + "/" + Punishment.type, Punishment);
|
||||||
await this.setDb("timedPunishments", this.DB.timedPunishments);
|
console.log(await this.setDb("timedPunishments", this.DB.timedPunishments));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,7 +130,6 @@ Structures.extend("Guild", u => {
|
||||||
async removeTimedPunishment(userID, type) {
|
async removeTimedPunishment(userID, type) {
|
||||||
console.log("REMOVE TIMEDPUNISHMENT");
|
console.log("REMOVE TIMEDPUNISHMENT");
|
||||||
const ret = this.DB.timedPunishments.delete(userID + "/" + type);
|
const ret = this.DB.timedPunishments.delete(userID + "/" + type);
|
||||||
console.log(ret);
|
|
||||||
await this.setDb("timedPunishments", this.DB.timedPunishments);
|
await this.setDb("timedPunishments", this.DB.timedPunishments);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -162,6 +158,7 @@ Structures.extend("User", u => {
|
||||||
return database.collection("User").updateOne({ document: this.id }, { $set: { [query]: set }, $setOnInsert: { document: this.id } },
|
return database.collection("User").updateOne({ document: this.id }, { $set: { [query]: set }, $setOnInsert: { document: this.id } },
|
||||||
{ upsert: true }).then((r, e) => {
|
{ upsert: true }).then((r, e) => {
|
||||||
if (e) return errLog(e, null, this.client);
|
if (e) return errLog(e, null, this.client);
|
||||||
|
console.log(set);
|
||||||
return this.DB[query] = set;
|
return this.DB[query] = set;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -225,6 +222,8 @@ Structures.extend("User", u => {
|
||||||
const MC = guild.getTimedPunishment(this.id, "mute"),
|
const MC = guild.getTimedPunishment(this.id, "mute"),
|
||||||
TP = new TimedPunishment({ userID: this.id, duration: data.duration, infraction: data.infraction, type: "mute" });
|
TP = new TimedPunishment({ userID: this.id, duration: data.duration, infraction: data.infraction, type: "mute" });
|
||||||
|
|
||||||
|
if (data.duration.until) await createSchedule(guild.client, { guildID: guild.id, userID: this.id, type: "mute", until: data.duration.until?.toJSDate() });
|
||||||
|
|
||||||
return { set: await guild.setTimedPunishment(TP), existing: MC }
|
return { set: await guild.setTimedPunishment(TP), existing: MC }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -294,6 +293,9 @@ Structures.extend("User", u => {
|
||||||
|
|
||||||
const MC = guild.getTimedPunishment(this.id, "ban"),
|
const MC = guild.getTimedPunishment(this.id, "ban"),
|
||||||
TP = new TimedPunishment({ userID: this.id, duration: data.duration, infraction: data.infraction, type: "ban" });
|
TP = new TimedPunishment({ userID: this.id, duration: data.duration, infraction: data.infraction, type: "ban" });
|
||||||
|
|
||||||
|
if (data.duration.until) await createSchedule(guild.client, { guildID: guild.id, userID: this.id, type: "ban", until: data.duration.until?.toJSDate() });
|
||||||
|
|
||||||
return { set: await guild.setTimedPunishment(TP), existing: MC }
|
return { set: await guild.setTimedPunishment(TP), existing: MC }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -382,6 +384,7 @@ Structures.extend("GuildMember", u => {
|
||||||
return database.collection("GuildMember").updateOne({ document: this.id }, { $set: { [query]: set }, $setOnInsert: { document: this.id } },
|
return database.collection("GuildMember").updateOne({ document: this.id }, { $set: { [query]: set }, $setOnInsert: { document: this.id } },
|
||||||
{ upsert: true }).then((r, e) => {
|
{ upsert: true }).then((r, e) => {
|
||||||
if (e) return errLog(e, null, this.client);
|
if (e) return errLog(e, null, this.client);
|
||||||
|
console.log(set);
|
||||||
return this.DB[query] = set;
|
return this.DB[query] = set;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue