mirror of
https://github.com/danbulant/Shasha
synced 2026-05-19 03:58:38 +00:00
hm
This commit is contained in:
parent
5bfd4eee2e
commit
304e21f377
14 changed files with 237 additions and 236 deletions
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
const commando = require("@iceprod/discord.js-commando");
|
||||
const { trySend, findMemberRegEx, cleanMentionID, findChannelRegEx, findRoleRegEx, defaultImageEmbed, parseDoubleDash, parseComa } = require("../../resources/functions");
|
||||
const { trySend, findMemberRegEx, cleanMentionID, findChannelRegEx, findRoleRegEx, defaultImageEmbed, parseDoubleDash, parseComa, getRole } = require("../../resources/functions");
|
||||
const { database } = require("../../database/mongo");
|
||||
const col = database.collection("Guild");
|
||||
const schedule = database.collection("Schedule");
|
||||
|
|
@ -47,7 +47,7 @@ module.exports = class mute extends commando.Command {
|
|||
group: "moderation",
|
||||
description: "Mute.",
|
||||
guildOnly: true,
|
||||
userPermissions:['MANAGE_ROLES']
|
||||
userPermissions: ['MANAGE_ROLES']
|
||||
});
|
||||
}
|
||||
/**
|
||||
|
|
@ -56,42 +56,37 @@ module.exports = class mute extends commando.Command {
|
|||
* @returns
|
||||
*/
|
||||
async run(msg, arg) {
|
||||
const doc = await col.findOne({document: msg.guild.id}),
|
||||
modDoc = doc?.["moderation"],
|
||||
muteSettingsDoc = modDoc?.["settings"]?.mute,
|
||||
defaultDurationDoc = muteSettingsDoc?.defaultDuration,
|
||||
infractionsDoc = modDoc?.infractions,
|
||||
args = parseDoubleDash(arg),
|
||||
mentions = parseComa(args.shift()),
|
||||
durationRegExp = /\d+(?![^ymwdhs])[ymwdhs]?o?/gi,
|
||||
invokedAt = msg.createdAt,
|
||||
duration = {
|
||||
year: invokedAt.getFullYear(),
|
||||
month: invokedAt.getMonth(),
|
||||
date: invokedAt.getDate(),
|
||||
hour: invokedAt.getHours(),
|
||||
minute: invokedAt.getMinutes(),
|
||||
second: invokedAt.getSeconds()
|
||||
};
|
||||
if (!msg.guild.dbLoaded) msg.guild.dbLoad();
|
||||
const muteSettingsDoc = msg.guild.moderation.mute,
|
||||
defaultDurationDoc = muteSettingsDoc.defaultDuration,
|
||||
args = parseDoubleDash(arg),
|
||||
mentions = parseComa(args.shift()),
|
||||
durationRegExp = /\d+(?![^ymwdhs])[ymwdhs]?o?/gi,
|
||||
invokedAt = msg.createdAt,
|
||||
duration = {
|
||||
year: invokedAt.getFullYear(),
|
||||
month: invokedAt.getMonth(),
|
||||
date: invokedAt.getDate(),
|
||||
hour: invokedAt.getHours(),
|
||||
minute: invokedAt.getMinutes(),
|
||||
second: invokedAt.getSeconds()
|
||||
};
|
||||
let theSettingUp = {
|
||||
role: undefined,
|
||||
defaultDuration: {
|
||||
date: undefined,
|
||||
string: undefined
|
||||
},
|
||||
logChannel: undefined
|
||||
}
|
||||
},
|
||||
durationHasSet = false,
|
||||
settingUp = false,
|
||||
settingRole = false,
|
||||
settingRoleHasSet = false,
|
||||
settingDuration = false,
|
||||
settingDurationHasSet = false,
|
||||
settingLogChannel = false,
|
||||
settingLogChannelHasSet = false,
|
||||
[timeForMessage, targetUser] = [["Indefinite"], []],
|
||||
reason = "No reason provided.",
|
||||
resultMsg = "";
|
||||
durationHasSet = false,
|
||||
settingUp = false,
|
||||
settingRole = false,
|
||||
settingRoleHasSet = false,
|
||||
settingDuration = false,
|
||||
settingDurationHasSet = false,
|
||||
[timeForMessage, targetUser] = [["Indefinite"], []],
|
||||
reason = "No reason provided.",
|
||||
resultMsg = "";
|
||||
for (const argument of args) {
|
||||
const setArg = argument.toLowerCase().trim();
|
||||
if (/^settings?$/i.test(setArg)) {
|
||||
|
|
@ -100,9 +95,6 @@ module.exports = class mute extends commando.Command {
|
|||
if (settingUp && /^durations?$/i.test(setArg)) {
|
||||
settingDuration = true;
|
||||
}
|
||||
if (settingUp && /^log$/i.test(setArg)) {
|
||||
settingLogChannel = true;
|
||||
}
|
||||
if (settingUp && /^role$/i.test(setArg)) {
|
||||
settingRole = true;
|
||||
}
|
||||
|
|
@ -141,41 +133,13 @@ module.exports = class mute extends commando.Command {
|
|||
}
|
||||
durationHasSet = true;
|
||||
} else {
|
||||
if (!settingRole && !settingLogChannel && argument.length > 0 && argument !== "--") {
|
||||
if (!settingRole && argument.length > 0 && argument !== "--") {
|
||||
reason = argument.trim();
|
||||
} else {
|
||||
if (settingLogChannel && !settingLogChannelHasSet && argument.length > 0 && argument !== "--" && setArg !== "log") {
|
||||
settingLogChannelHasSet = true;
|
||||
const key = cleanMentionID(argument);
|
||||
let logChannel;
|
||||
if (/^\d{17,19}$/.test(key)) {
|
||||
logChannel = msg.guild.channels.cache.get(argument);
|
||||
} else {
|
||||
const found = findChannelRegEx(msg, key);
|
||||
logChannel = found[0];
|
||||
}
|
||||
if (/^none$/i.test(key)) {
|
||||
logChannel = undefined;
|
||||
}
|
||||
if (logChannel || /^none$/i.test(key)) {
|
||||
theSettingUp.logChannel = logChannel?.id;
|
||||
} else {
|
||||
resultMsg += `No channel found for: **${argument}**\n`;
|
||||
}
|
||||
}
|
||||
if (settingRole && !settingRoleHasSet && argument.length > 0 && argument !== "--" && setArg !== "role") {
|
||||
settingRoleHasSet = true;
|
||||
const key = cleanMentionID(argument);
|
||||
let role;
|
||||
if (/^\d{17,19}$/.test(key)) {
|
||||
role = msg.guild.roles.cache.get(argument);
|
||||
} else {
|
||||
const found = findRoleRegEx(msg, key);
|
||||
role = found[0]?.id;
|
||||
}
|
||||
if (/^none$/i.test(key)) {
|
||||
role = undefined;
|
||||
}
|
||||
let role = getRole(msg.guild, key)?.id;
|
||||
if (role || /^none$/i.test(key)) {
|
||||
theSettingUp.role = role;
|
||||
} else {
|
||||
|
|
@ -187,7 +151,7 @@ module.exports = class mute extends commando.Command {
|
|||
}
|
||||
const roleConfCheck = msg.guild.roles.cache.get(muteSettingsDoc?.role);
|
||||
if (!roleConfCheck && !settingUp) {
|
||||
return trySend(this.clientPermissions, msg, `No mute role configured! Run \`${msg.guild.commandPrefix}${this.name} --settings <--role --<role_[name | ID]>> [--duration --<duration> | --log --<channel_[name | ID]>]\` to set it up.`);
|
||||
resultMsg += `No mute role configured! Run \`${msg.guild.commandPrefix}${this.name} --settings <--role --<role_[name | ID]>> [--duration --<duration>\` to set it up.`;
|
||||
}
|
||||
let untilDate = new Date(String(duration.year), String(duration.month), String(duration.date), String(duration.hour), String(duration.minute), String(duration.second));
|
||||
if (untilDate.toString() === "Invalid Date") untilDate = "Indefinite";
|
||||
|
|
@ -201,31 +165,31 @@ module.exports = class mute extends commando.Command {
|
|||
if (untilDate instanceof Date) {
|
||||
timeForMessage = [];
|
||||
const elapsedTime = new Date(untilDate.valueOf() - invokedAt.valueOf() + 1000),
|
||||
elapsed = [
|
||||
elapsedTime.getFullYear() - 1970,
|
||||
elapsedTime.getMonth(),
|
||||
elapsedTime.getDate() - 1,
|
||||
elapsedTime.getHours(),
|
||||
elapsedTime.getMinutes(),
|
||||
elapsedTime.getSeconds()
|
||||
],
|
||||
elapsedName = [
|
||||
"year",
|
||||
"month",
|
||||
"day",
|
||||
"hour",
|
||||
"minute",
|
||||
"second"
|
||||
];
|
||||
elapsed = [
|
||||
elapsedTime.getFullYear() - 1970,
|
||||
elapsedTime.getMonth(),
|
||||
elapsedTime.getDate() - 1,
|
||||
elapsedTime.getHours(),
|
||||
elapsedTime.getMinutes(),
|
||||
elapsedTime.getSeconds()
|
||||
],
|
||||
elapsedName = [
|
||||
"year",
|
||||
"month",
|
||||
"day",
|
||||
"hour",
|
||||
"minute",
|
||||
"second"
|
||||
];
|
||||
|
||||
for (let index = 0; index < elapsed.length; index++) {
|
||||
if (elapsed[index] > 0) {
|
||||
let mes = `${elapsed[index]} ${elapsedName[index]}`;
|
||||
if (elapsed[index] > 1) {
|
||||
mes += "s";
|
||||
} else {}
|
||||
} else { }
|
||||
timeForMessage.push(mes);
|
||||
} else {}
|
||||
} else { }
|
||||
}
|
||||
if (timeForMessage.length > 1) {
|
||||
timeForMessage[timeForMessage.length - 2] += " and";
|
||||
|
|
@ -233,43 +197,35 @@ module.exports = class mute extends commando.Command {
|
|||
if (settingDuration && !settingDurationHasSet && timeForMessage.length > 0) {
|
||||
settingDurationHasSet = true;
|
||||
theSettingUp.defaultDuration.date = elapsedTime,
|
||||
theSettingUp.defaultDuration.string = timeForMessage.join(" ");
|
||||
theSettingUp.defaultDuration.string = timeForMessage.join(" ");
|
||||
}
|
||||
}
|
||||
if (settingUp) {
|
||||
if(settingRoleHasSet) {
|
||||
await col.updateOne({document:msg.guild.id}, {$set:{"moderation.settings.mute.role":theSettingUp.role}}, {upsert:true}).catch(e => {return trySend(this.client, msg, "```js\n"+e.stack+"```")});
|
||||
if (settingUp || !roleConfCheck && !settingUp) {
|
||||
if (settingRoleHasSet) {
|
||||
await col.updateOne({ document: msg.guild.id }, { $set: { "moderation.settings.mute.role": theSettingUp.role } }, { upsert: true }).catch(e => { return trySend(this.client, msg, "```js\n" + e.stack + "```") });
|
||||
}
|
||||
if (durationHasSet) {
|
||||
await col.updateOne({document:msg.guild.id}, {$set:{"moderation.settings.mute.defaultDuration":theSettingUp.defaultDuration}}, {upsert:true}).catch(e => {return trySend(this.client, msg, "```js\n"+e.stack+"```")});
|
||||
await col.updateOne({ document: msg.guild.id }, { $set: { "moderation.settings.mute.defaultDuration": theSettingUp.defaultDuration } }, { upsert: true }).catch(e => { return trySend(this.client, msg, "```js\n" + e.stack + "```") });
|
||||
}
|
||||
if (settingLogChannelHasSet) {
|
||||
await col.updateOne({document:msg.guild.id}, {$set:{"moderation.settings.mute.logChannel":theSettingUp.logChannel}}, {upsert:true}).catch(e => {return trySend(this.client, msg, "```js\n"+e.stack+"```")});
|
||||
}
|
||||
const doc = await col.findOne({document: msg.guild.id}),
|
||||
modDoc = doc?.["moderation"],
|
||||
muteSettingsDoc = modDoc?.["settings"]?.mute,
|
||||
defaultDurationDoc = muteSettingsDoc?.defaultDuration,
|
||||
logChannelDoc = muteSettingsDoc?.logChannel,
|
||||
roleDoc = muteSettingsDoc?.role;
|
||||
const defaultDurationDoc = muteSettingsDoc?.defaultDuration,
|
||||
roleDoc = muteSettingsDoc?.role;
|
||||
let settings = defaultImageEmbed(msg);
|
||||
settings
|
||||
.setTitle("Mute Configuration")
|
||||
.addField("Role", roleDoc ? "<@&"+roleDoc+">" : "Not set")
|
||||
.addField("Duration", defaultDurationDoc?.string ?? "Not set")
|
||||
.addField("Log", logChannelDoc ? "<#"+logChannelDoc+">" : "Not set");
|
||||
return trySend(this.client, msg, {content:resultMsg, embed:settings});
|
||||
.setTitle("Mute Configuration")
|
||||
.addField("Role", roleDoc ? "<@&" + roleDoc + ">" : "Not set")
|
||||
.addField("Duration", defaultDurationDoc?.string ?? "Not set");
|
||||
return trySend(this.client, msg, { content: resultMsg, embed: settings });
|
||||
}
|
||||
for (const usermention of mentions) {
|
||||
if (usermention.length > 0) {
|
||||
let found = [],
|
||||
nameid = cleanMentionID(usermention);
|
||||
nameid = cleanMentionID(usermention);
|
||||
if (/^\d{17,19}$/.test(nameid)) {
|
||||
const findmem = msg.guild.member(nameid);
|
||||
if (findmem) {
|
||||
found.push(findmem.user);
|
||||
} else {
|
||||
await this.client.users.fetch(nameid).then(fetchUser => found.push(fetchUser)).catch(() => {});
|
||||
await this.client.users.fetch(nameid).then(fetchUser => found.push(fetchUser)).catch(() => { });
|
||||
}
|
||||
} else {
|
||||
found = findMemberRegEx(msg, nameid).map(r => r.user);
|
||||
|
|
@ -289,26 +245,26 @@ module.exports = class mute extends commando.Command {
|
|||
}
|
||||
} else {
|
||||
if (!settingUp && mentions[0].length === 0) {
|
||||
return trySend(this.client, msg, "Who do you wanna mute? Provide as first argument `<[RegExp | user_[mention | ID]]>`. Use `,` to provide more than one user. Use `--` to split arguments.\nExample:```js\n" + `${msg.guild.commandPrefix}${this.name} 832423842785623423, @Shasha#1234, retard wanna get muted, #6969, ^fuck\\s(ur)?\\s.{5}#\\d+69$--69y69mo69w420d420h420m420s--Saying "joe"\`\`\``);
|
||||
return trySend(this.client, msg, "Args: `<[user_[mention|ID|name]]> -- [reason] -- [duration]`. Use `,` to provide multiple user.\nExample:```js\n" + `${msg.guild.commandPrefix}${this.name} 580703409934696449, @Shasha#1234, ur mom,#6969,^fuck\\s(ur)?\\s.{5}#\\d+69$--69y69mo69w420d420h420m420s -- Saying "joe"\`\`\``);
|
||||
}
|
||||
}
|
||||
}
|
||||
let infractionToDoc;
|
||||
if (targetUser.length > 0) {
|
||||
let targetMember = [],
|
||||
notInServer = [];
|
||||
notInServer = [];
|
||||
for (const user of targetUser) {
|
||||
const member = msg.guild.member(user);
|
||||
if (member) {
|
||||
const pushIt = member.toJSON();
|
||||
pushIt.roles = member.roles.cache.map(r => r.id);
|
||||
pushIt.rolesID = member.roles.cache.map(r => r.id);
|
||||
targetMember.push(pushIt);
|
||||
} else {
|
||||
const pushIt = user.toJSON();
|
||||
notInServer.push(pushIt);
|
||||
}
|
||||
}
|
||||
const infractionCase = infractionsDoc?.map(r => r.infraction)?.length;
|
||||
const infractionCase = msg.guild.infractions?.length;
|
||||
infractionToDoc = {
|
||||
infraction: infractionCase ? infractionCase + 1 : 1,
|
||||
by: targetUser,
|
||||
|
|
@ -318,47 +274,47 @@ module.exports = class mute extends commando.Command {
|
|||
for: timeForMessage,
|
||||
until: untilDate,
|
||||
reason: reason,
|
||||
scene: msg.url,
|
||||
msg: msg.toJSON(),
|
||||
members: targetMember,
|
||||
users: notInServer
|
||||
}
|
||||
await col.updateOne({document: msg.guild.id}, { $push:{"moderation.infractions": infractionToDoc}}, {upsert:true});
|
||||
const newUnmuteSchedule = {
|
||||
name: "unmute",
|
||||
path: "./scheduler/unmute.js",
|
||||
worker: {
|
||||
argv: [msg, infractionToDoc.infraction]
|
||||
},
|
||||
date: untilDate
|
||||
}
|
||||
await col.updateOne({ document: msg.guild.id }, { $push: { "moderation.infractions": infractionToDoc } }, { upsert: true });
|
||||
const NAME = msg.guild.id + "/" + infractionToDoc.infraction,
|
||||
newUnmuteSchedule = {
|
||||
name: NAME,
|
||||
path: "./scheduler/unmute.js",
|
||||
worker: {
|
||||
argv: [NAME]
|
||||
},
|
||||
date: untilDate
|
||||
};
|
||||
}
|
||||
resultMsg += `Result:\`\`\`js\nUsers: ${targetUser.map(r => r?.tag).join(", ")}\nReason: ${reason}\nAt: ${invokedAt.toUTCString()}\nFor: ${timeForMessage.join(" ")}\nUntil: ${typeof untilDate !== "string" ? untilDate.toUTCString() : untilDate}\`\`\``;
|
||||
trySend(this.client, msg, {content:resultMsg+"```js\n" + JSON.stringify(infractionToDoc, null, 2) + "```",split:{maxLength: 2000,append:",```",prepend:"```js\n",char:","}});
|
||||
return
|
||||
return trySend(this.client, msg, { content: resultMsg + "```js\n" + JSON.stringify(infractionToDoc, null, 2) + "```", split: { maxLength: 2000, append: ",```", prepend: "```js\n", char: "," } });
|
||||
}
|
||||
};
|
||||
|
||||
/* if (config.mute.role.length === 0) {
|
||||
return msg.channel.send(`Mute role isn't set! Run \`${this.client.commandPrefix}mute --role <role_[mention, ID]>\`. If you insist i will just give them admin perms <:purifyLife:774102054046007298>`)
|
||||
}
|
||||
if (setArgs) {
|
||||
for(let set of setArgs) {
|
||||
set = set.toLowerCase();
|
||||
switch(set) {
|
||||
case startsWith('role'): {
|
||||
let role = set.slice('role'.length).trim();
|
||||
if (role.startsWith('<&')) {
|
||||
role = role.slice(2,-1);
|
||||
}
|
||||
//const foundRole =
|
||||
}
|
||||
}
|
||||
/* if (config.mute.role.length === 0) {
|
||||
return msg.channel.send(`Mute role isn't set! Run \`${this.client.commandPrefix}mute --role <role_[mention, ID]>\`. If you insist i will just give them admin perms <:purifyLife:774102054046007298>`)
|
||||
}
|
||||
if (setArgs) {
|
||||
for(let set of setArgs) {
|
||||
set = set.toLowerCase();
|
||||
switch(set) {
|
||||
case startsWith('role'): {
|
||||
let role = set.slice('role'.length).trim();
|
||||
if (role.startsWith('<&')) {
|
||||
role = role.slice(2,-1);
|
||||
}
|
||||
}*/
|
||||
//const foundRole =
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//scheduler.add()
|
||||
/*const yearDate = dateDur.getFullYear();
|
||||
const monthDate = dateDur.getMonth();
|
||||
const dayDate = dateDur.getDay();
|
||||
const hourDate = dateDur.getHours();
|
||||
const minuteDate = dateDur.getMinutes();
|
||||
const secondDate = dateDur.getSeconds();*/
|
||||
/*const yearDate = dateDur.getFullYear();
|
||||
const monthDate = dateDur.getMonth();
|
||||
const dayDate = dateDur.getDay();
|
||||
const hourDate = dateDur.getHours();
|
||||
const minuteDate = dateDur.getMinutes();
|
||||
const secondDate = dateDur.getSeconds();*/
|
||||
|
|
@ -23,7 +23,7 @@ module.exports = class profile extends commando.Command {
|
|||
*/
|
||||
async run(msg, arg) {
|
||||
let TM;
|
||||
if (!arg) TM = msg.author; else TM = getUser(msg, arg);
|
||||
if (!arg) TM = msg.author; else TM = getUser(msg, arg, true);
|
||||
if (!TM) return trySend(msg.client, msg, "Bro stop lookin for yo imaginary gf");
|
||||
const MEM = msg.guild.member(TM),
|
||||
emb = defaultImageEmbed(msg, null, `\`${TM.tag}\`'s Profile`);
|
||||
|
|
|
|||
|
|
@ -1,10 +1,27 @@
|
|||
"use strict";
|
||||
|
||||
const commando = require("@iceprod/discord.js-commando");
|
||||
const { MessageEmbed, GuildChannel } = require("discord.js");
|
||||
const { MessageEmbed, GuildChannel, Message } = require("discord.js");
|
||||
const { ranLog, errLog, getChannelMessage, noPerm, tryReact, trySend, cleanMentionID, getChannel, adCheck, parseDash, reValidURL, parseDoubleDash, defaultImageEmbed } = require("../../resources/functions");
|
||||
const getColor = require("../../resources/getColor");
|
||||
const emoteMessage = require("../../resources/emoteMessage");
|
||||
const HELP = {
|
||||
desc: `**Embed creator:** You can just copy this template and remove unneeded argument. Every argument are optional.` +
|
||||
`\n\`--j\` JSON: \`[MessageEmbed JSON Object]\`,\n\`--t\` Title: \`[text]\`,\n\`--d\` Description: \`[text]\`,\n\`--a\` Author:\n\` -n\` Name: \`[text]\`,\n\` -i\` Icon: \`[url]\`,\n` +
|
||||
`\` -u\` URL: \`[url]\`,\n\`--c\` Color: \`[hex|number|name]\`,\n\`--i\` Image: \`[url]\`,\n\`--th\` Thumbnail: \`[url]\`,\n` +
|
||||
`\`--u\` URL: \`[url]\`,\n\`--f\` Add Field:\n\` -n\` Name: \`[text]\`,\n\` -d\` Description: \`[text]\`,\n\` -i\` Inline: True if provided,\n` +
|
||||
`\`--fo\` Footer:\n\` -t\` Text: \`[text]\`,\n\` -i\` Icon: \`[url]\`,\n\`--co\` Content: \`[text]\`,\n\`--ch\` Channel: \`[mention|ID|name]\`,\n` +
|
||||
`\`--ti\` Timestamp: \`[ISO 8601|UNIX (Milliseconds)]\` - Use https://time.lol ,\n` +
|
||||
`\`--at\` Attachments: \`[url]\` - You can put \`-c\` when editing to copy all existing message attachments ` +
|
||||
`(Cannot remove existing attachment unless \`--ch\` provided).\n\n**Embed editor:** ` +
|
||||
`You can put\n\`--e\` Edit: \`<[message_[ID|link]|channel_[mention|ID] message_ID]>\`` +
|
||||
`\nas first argument to edit the embed in provided message. All existing property will be replaced ` +
|
||||
`with provided argument. Put\n\`--r\` Remove [Author, Fields, Footer]: \`[a, f, fo]\`\nto remove all existing property ` +
|
||||
`of the provided argument in the embed.\n\nOther arguments:\n\`--q\` Quote: \`<[message_[ID|link]|channel_[mention|ID] message_ID]>\`` +
|
||||
` - Quote a message.`,
|
||||
fields: [
|
||||
]
|
||||
};
|
||||
|
||||
module.exports = class embmaker extends commando.Command {
|
||||
constructor(client) {
|
||||
|
|
@ -14,26 +31,12 @@ module.exports = class embmaker extends commando.Command {
|
|||
aliases: ["embed-maker", "creat-emb", "creat-embed", "embed"],
|
||||
group: "utility",
|
||||
description: "Embed creator.",
|
||||
details:
|
||||
`**Embed creator:** You can just copy this template and remove unneeded argument. Every argument are optional.` +
|
||||
`,\n\`--j\` JSON: \`[MessageEmbed JSON Object]\`,\n\`--t\` Title: \`[text]\`,\n\`--d\` Description: \`[text]\`,\n\`--a\` Author:\n\` -n\` Name: \`[text]\`,\n\` -i\` Icon: \`[url]\`,\n` +
|
||||
`\` -u\` URL: \`[url]\`,\n\`--c\` Color: \`[hex|number|name]\`,\n\`--i\` Image: \`[url]\`,\n\`--th\` Thumbnail: \`[url]\`,\n` +
|
||||
`\`--u\` URL: \`[url]\`,\n\`--f\` Add Field:\n\` -n\` Name: \`[text]\`,\n\` -d\` Description: \`[text]\`,\n\` -i\` Inline: True if provided,\n` +
|
||||
`\`--fo\` Footer:\n\` -t\` Text: \`[text]\`,\n\` -i\` Icon: \`[url]\`,\n\`--co\` Content: \`[text]\`,\n\`--ch\` Channel: \`[mention|ID|name]\`,\n` +
|
||||
`\`--ti\` Timestamp: \`[ISO 8601|UNIX (Milliseconds)]\` - Use https://time.lol ,\n` +
|
||||
`\`--at\` Attachments: \`[url]\` - You can put \`-c\` when editing to copy all existing message attachments ` +
|
||||
`(Cannot remove existing attachment unless \`--ch\` provided).\n\n**Embed editor:** ` +
|
||||
`You can put\n\`--e\` Edit: \`<[message_[ID|link]|channel_[mention|ID] message_ID]>\`` +
|
||||
`\nas first argument to edit the embed in provided message. All existing property will be replaced ` +
|
||||
`with provided argument. Put\n\`--r\` Remove [Author, Fields, Footer]: \`[a, f, fo]\`\nto remove all existing property ` +
|
||||
`of the provided argument in the embed.\n\nOther arguments:\n\`--q\` Quote: \`<[message_[ID|link]|channel_[mention|ID] message_ID]>\`` +
|
||||
` - Quote a message.`
|
||||
details: "Run the command without argument to see details."
|
||||
});
|
||||
}
|
||||
async run(msg, arg) {
|
||||
let isAdmin = true;
|
||||
if (msg.guild && !this.client.owners.includes(msg.author)) {
|
||||
if (!msg.member.hasPermission("EMBED_LINKS")) return trySend(this.client, msg, "No <a:catsmugLife:799633767848214549>");
|
||||
if (!msg.member.hasPermission("ADMINISTRATOR")) isAdmin = false;
|
||||
}
|
||||
const args = parseDoubleDash(arg);
|
||||
|
|
@ -46,13 +49,14 @@ module.exports = class embmaker extends commando.Command {
|
|||
continue;
|
||||
}
|
||||
if (value.startsWith("e ")) {
|
||||
if (msg.guild && !msg.member.hasPermission("MANAGE_MESSAGES")) {
|
||||
reportMessage += "**[EDIT]** Requires Manage Messages.\n";
|
||||
continue;
|
||||
}
|
||||
const editArg = value.slice("e ".length).trim().split(/ +/);
|
||||
if (editArg[0].length > 0) {
|
||||
editSrc = await getChannelMessage(msg, editArg[0], editArg[1]);
|
||||
if (editSrc && editSrc.invoker !== msg.author && !isAdmin) {
|
||||
editSrc = undefined;
|
||||
reportMessage += "**[EDIT]** Require Administrator.\n";
|
||||
continue;
|
||||
}
|
||||
if (editSrc) {
|
||||
const editEmb = editSrc.embeds[0];
|
||||
if (editSrc.content) {
|
||||
|
|
@ -149,7 +153,8 @@ module.exports = class embmaker extends commando.Command {
|
|||
continue;
|
||||
}
|
||||
if (value.startsWith("d ")) {
|
||||
const use = emoteMessage(this.client, value.slice("d ".length).trim().replace(/\\(?!\\)/g, ""));
|
||||
let DD = value.slice("d ".length).trim();
|
||||
let use = emoteMessage(this.client, DD.replace(/\\(?!\\)/g, ""));
|
||||
embed.setDescription(isAdmin ? use : adCheck(use));
|
||||
continue;
|
||||
}
|
||||
|
|
@ -335,6 +340,11 @@ module.exports = class embmaker extends commando.Command {
|
|||
continue;
|
||||
}
|
||||
}
|
||||
const PC = channel?.permissionsFor?.(msg.author).serialize();
|
||||
const PM = msg.channel.permissionsFor?.(msg.author).serialize();
|
||||
const CC = channel?.permissionsFor?.(this.client.user).serialize();
|
||||
const CM = msg.channel.permissionsFor?.(this.client.user).serialize();
|
||||
if (!(PC || PM).EMBED_LINKS) return trySend(this.client, msg, "No <a:catsmugLife:799633767848214549>");
|
||||
if (autIcon === false && embed.author.name) delete embed.author.name;
|
||||
if (!autName && autIcon) autName = "";
|
||||
if (autName || autIcon && embed.author !== null) embed.setAuthor(autName, autIcon, autUrl);
|
||||
|
|
@ -342,8 +352,10 @@ module.exports = class embmaker extends commando.Command {
|
|||
if (footertext || footericon && embed.footer !== null) embed.setFooter(footertext, footericon);
|
||||
if (embed.length === 0 && (embed.thumbnail === null || embed.thumbnail.url === null) && embed.author === null && (embed.image === null || embed.image.url === null) && !footericon) {
|
||||
if (embed.timestamp) embed.setFooter(""); else {
|
||||
content = `<@${msg.author.id}>`;
|
||||
embed = defaultImageEmbed(msg, null, "Usage");
|
||||
embed.setDescription(this.details);
|
||||
embed.setDescription(HELP.desc);
|
||||
if (HELP.fields.length > 0) for (const u of HELP.fields) embed.addField(u.name, u.value, u.inline);
|
||||
}
|
||||
}
|
||||
if (embed.color === 16777215) embed.setColor(16777214);
|
||||
|
|
@ -354,7 +366,7 @@ module.exports = class embmaker extends commando.Command {
|
|||
if (editSrc) {
|
||||
if (channel) {
|
||||
if (msg.guild && !this.client.owners.includes(msg.author)) {
|
||||
if (channel.permissionsFor(msg.author).serialize().ATTACH_FILES && channel.permissionsFor(this.client.user).serialize().ATTACH_FILES && newAttach.length > 0) {
|
||||
if (PC?.ATTACH_FILES && CC?.ATTACH_FILES && newAttach.length > 0) {
|
||||
reportMessage += "**[ATTACHMENT]** Uploading attachments....\n";
|
||||
} else {
|
||||
if (newAttach.length > 0) {
|
||||
|
|
@ -366,9 +378,7 @@ module.exports = class embmaker extends commando.Command {
|
|||
sent.push(trySend(this.client, channel, { content: content, embed: embed, files: newAttach }));
|
||||
} else {
|
||||
if (msg.guild) {
|
||||
const c = msg.channel.permissionsFor(msg.author).serialize(),
|
||||
f = msg.channel.permissionsFor(this.client.user).serialize();
|
||||
if (!c.ATTACH_FILES && !f.ATTACH_FILES) {
|
||||
if (PM.ATTACH_FILES === undefined && CM.ATTACH_FILES === undefined) {
|
||||
if (newAttach.length > 0) {
|
||||
newAttach = [];
|
||||
reportMessage += "**[ATTACHMENT]** Missing permission.\n";
|
||||
|
|
@ -387,7 +397,7 @@ module.exports = class embmaker extends commando.Command {
|
|||
}
|
||||
} else {
|
||||
if (msg.guild && !this.client.owners.includes(msg.author)) {
|
||||
if ((channel ?? msg.channel).permissionsFor(msg.author).serialize().ATTACH_FILES && (channel ?? msg.channel).permissionsFor(this.client.user).serialize().ATTACH_FILES && newAttach.length > 0) {
|
||||
if ((PC || PM).ATTACH_FILES && (CC || CM).ATTACH_FILES && newAttach.length > 0) {
|
||||
reportMessage += "**[ATTACHMENT]** Uploading attachments....\n";
|
||||
} else {
|
||||
if (newAttach.length > 0) {
|
||||
|
|
@ -404,6 +414,9 @@ module.exports = class embmaker extends commando.Command {
|
|||
} else {
|
||||
noPerm(msg);
|
||||
}
|
||||
for (const m of sent) m.then(r => {
|
||||
if (r instanceof Message) r.setInvoker(msg.author);
|
||||
});
|
||||
return sent;
|
||||
} catch (e) {
|
||||
return errLog(e, msg, this.client, true, "", true);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
const commando = require("@iceprod/discord.js-commando");
|
||||
const { default: axios } = require("axios");
|
||||
const { Message } = require("discord.js");
|
||||
const { trySend, getChannelMessage, defaultImageEmbed } = require("../../resources/functions");
|
||||
const { trySend, getChannelMessage, defaultImageEmbed, wait } = require("../../resources/functions");
|
||||
const SPLG = [
|
||||
"en",
|
||||
"ar",
|
||||
|
|
@ -24,6 +24,10 @@ const SPLG = [
|
|||
"vi"
|
||||
],
|
||||
REG = /(?<!\\)--m +[^\s\n]+( +\d{17,19})?/;
|
||||
let rl = 0, ex = 0;
|
||||
setInterval(() => {
|
||||
if (rl > 0) rl--;
|
||||
}, 100);
|
||||
|
||||
module.exports = class translate extends commando.Command {
|
||||
constructor(client) {
|
||||
|
|
@ -32,7 +36,7 @@ module.exports = class translate extends commando.Command {
|
|||
aliases: ["t", "trans"],
|
||||
memberName: "translate",
|
||||
group: "utility",
|
||||
description: "Translate some alien languages.",
|
||||
description: "Translate some alien languages. `--h` for help.",
|
||||
details: "**Supported languages:**\n" +
|
||||
`\`en\` English\n` +
|
||||
`\`ar\` Arabic\n` +
|
||||
|
|
@ -50,8 +54,7 @@ module.exports = class translate extends commando.Command {
|
|||
`\`ru\` Russian\n` +
|
||||
`\`es\` Spanish\n` +
|
||||
`\`tr\` Turkish\n` +
|
||||
`\`vi\` Vietnamese\n\n` +
|
||||
`\`--h\` for help`
|
||||
`\`vi\` Vietnamese`
|
||||
});
|
||||
}
|
||||
/**
|
||||
|
|
@ -79,7 +82,6 @@ module.exports = class translate extends commando.Command {
|
|||
const A = MA[0].slice(4).trim().split(/ +/);
|
||||
console.log(A);
|
||||
const C = await getChannelMessage(msg, A[0], A[1]);
|
||||
console.log(C);
|
||||
if (C) tmes = C;
|
||||
};
|
||||
arg = arg.replace(REG, "").trim();
|
||||
|
|
@ -95,6 +97,10 @@ module.exports = class translate extends commando.Command {
|
|||
if (!trans || trans.length === 0) {
|
||||
return trySend(msg.client, msg, "Nothing to translate. `--h` for help <:nekohmLife:846371737644957786>");
|
||||
}
|
||||
ex++;
|
||||
if (ex > 1) rl += 6;
|
||||
const t = rl * 100;
|
||||
await wait(t);
|
||||
const res = await axios.post("https://translate.mentality.rip/translate", {
|
||||
q: trans.replace(/\./g, ","),
|
||||
source: "auto",
|
||||
|
|
@ -102,7 +108,8 @@ module.exports = class translate extends commando.Command {
|
|||
}).then(r => {
|
||||
console.log(r.data);
|
||||
return r.data.translatedText;
|
||||
}).catch(console.error);
|
||||
}).catch(console.error)
|
||||
.finally(() => ex--);
|
||||
return trySend(msg.client, msg, res);
|
||||
}
|
||||
};
|
||||
|
|
@ -2,11 +2,20 @@
|
|||
|
||||
function timestampAt(client) {
|
||||
const date = new Date(new Date().valueOf() + (client?.matchTimestamp ? client.matchTimestamp : 0)),
|
||||
string = date.toLocaleTimeString("UTC", {"day": "numeric", "month": "2-digit", "year": "2-digit", "hour12": true}),
|
||||
ampm = string.slice(string.length - 3),
|
||||
miliseconds = date.getUTCMilliseconds(),
|
||||
result = string.slice(0, -3) + "." + miliseconds + ampm;
|
||||
string = date.toLocaleTimeString("UTC", { "day": "numeric", "month": "2-digit", "year": "2-digit", "hour12": true }),
|
||||
ampm = string.slice(string.length - 3),
|
||||
miliseconds = date.getUTCMilliseconds(),
|
||||
result = string.slice(0, -3) + "." + miliseconds + ampm;
|
||||
return "At: " + result;
|
||||
};
|
||||
|
||||
module.exports = { timestampAt }
|
||||
/**
|
||||
*
|
||||
* @param {String} string
|
||||
* @returns {import("discord.js").MessageOptions}
|
||||
*/
|
||||
function makeJSONMessage(string) {
|
||||
return { content: '```js\n' + JSON.stringify(string, (k, v) => v ?? undefined, 2) + '```', split: { maxLength: 2000, char: ",", append: ',```', prepend: '```js\n' } };
|
||||
}
|
||||
|
||||
module.exports = { timestampAt, makeJSONMessage }
|
||||
|
|
@ -11,7 +11,7 @@ module.exports = async (GUILD, USER) => {
|
|||
const emb = defaultEventLogEmbed(GUILD);
|
||||
const rea = (await GUILD.fetchBan(USER)).reason;
|
||||
emb.setDescription(rea ?? "No reason provided.")
|
||||
.setTitle(`User \`${USER.tag}\` banned`)
|
||||
.setTitle(`\`${USER.tag}\` banned`)
|
||||
.setColor(getColor("red"))
|
||||
.setThumbnail(USER.displayAvatarURL({ size: 4096, format: "png", dynamic: true }))
|
||||
.addField("User", `<@${USER.id}>\n(${USER.id})`);
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@ module.exports = (member) => {
|
|||
if (!log) return;
|
||||
const emb = defaultEventLogEmbed(member.guild);
|
||||
emb
|
||||
.setTitle("User `" + member.user.tag + "` joined")
|
||||
.setThumbnail(member.user.displayAvatarURL({format: "png", size: 4096, dynamic: true}))
|
||||
.setColor(getColor("cyan"))
|
||||
.addField("Registered", "**" + member.user.createdAt.toUTCString().slice(0, -4) + "**", true)
|
||||
.setDescription(`<@!${member.id}> (${member.id}) just joined.\nWe have ${member.guild.memberCount} total members now.`);
|
||||
.setTitle("`" + member.user.tag + "` joined")
|
||||
.setThumbnail(member.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true }))
|
||||
.setColor(getColor("cyan"))
|
||||
.addField("Registered", "**" + member.user.createdAt.toUTCString().slice(0, -4) + "**", true)
|
||||
.setDescription(`<@!${member.id}> (${member.id}) just joined.\nWe have ${member.guild.memberCount} total members now.`);
|
||||
return trySend(member.client, log, emb);
|
||||
}
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ module.exports = (member) => {
|
|||
const RO = member.roles.cache.sort((a, b) => b.position - a.position).map(r => r.id).slice(0, -1),
|
||||
RU = splitOnLength(RO, 1010, ">, <@&");
|
||||
emb
|
||||
.setTitle("Member `" + member.user.tag + "` left")
|
||||
.setTitle("`" + member.user.tag + "` left")
|
||||
.setThumbnail(member.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true }))
|
||||
.setColor(getColor("yellow"))
|
||||
.addField("Registered", "**" + member.user.createdAt.toUTCString().slice(0, -4) + "**", true)
|
||||
|
|
|
|||
|
|
@ -12,25 +12,25 @@ const getColor = require("../getColor");
|
|||
*/
|
||||
module.exports = (memberold, membernew) => {
|
||||
if (!membernew.guild.eventChannels?.memberRole && !membernew.guild.eventChannels?.member) {
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true})) {
|
||||
membernew.user.cachedAvatarURL = membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true});
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true })) {
|
||||
membernew.user.cachedAvatarURL = membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true });
|
||||
};
|
||||
return;
|
||||
}
|
||||
let log;
|
||||
const emb = defaultEventLogEmbed(membernew.guild);
|
||||
emb.setTitle("Profile `" + memberold.user.tag + "` updated")
|
||||
.setThumbnail(membernew.user.cachedAvatarURL ?? memberold.toJSON().displayAvatarURL)
|
||||
.setColor(getColor("blue"));
|
||||
.setThumbnail(membernew.user.cachedAvatarURL ?? memberold.toJSON().displayAvatarURL)
|
||||
.setColor(getColor("blue"));
|
||||
if (membernew.guild.eventChannels?.memberRole) {
|
||||
log = getChannel(membernew, membernew.guild.eventChannels.memberRole);
|
||||
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]`"));
|
||||
.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]`"));
|
||||
}
|
||||
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]`"));
|
||||
.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]`"));
|
||||
}
|
||||
}
|
||||
if (membernew.guild.eventChannels?.member && membernew.roles.cache.size === memberold.roles.cache.size) {
|
||||
|
|
@ -38,14 +38,14 @@ module.exports = (memberold, membernew) => {
|
|||
if (membernew.displayName != memberold.displayName) {
|
||||
emb.addField("Nickname", "Changed from `" + memberold.displayName + "` to `" + membernew.displayName + "`");
|
||||
}
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true})) {
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true })) {
|
||||
emb
|
||||
.setImage(membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true}))
|
||||
.addField("Avatar", (emb.thumbnail ? "This embed's thumbnail is the user's old avatar.\n" : "") + "The image below is the user's new avatar.");
|
||||
.setImage(membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true }))
|
||||
.addField("Avatar", (emb.thumbnail ? "This embed's thumbnail is the user's old avatar.\n" : "") + "The image below is the user's new avatar.");
|
||||
}
|
||||
}
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true})) {
|
||||
membernew.user.cachedAvatarURL = membernew.user.displayAvatarURL({format: "png", size: 4096, dynamic: true});
|
||||
if (membernew.user.cachedAvatarURL != membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true })) {
|
||||
membernew.user.cachedAvatarURL = membernew.user.displayAvatarURL({ format: "png", size: 4096, dynamic: true });
|
||||
};
|
||||
if (!emb.fields || emb.fields.length === 0) return;
|
||||
return trySend(membernew.client, log, emb);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ function giveNickHeart(msg) {
|
|||
.then(r => {
|
||||
if (r) return trySend(msg.client, msg, "okay <3");
|
||||
})
|
||||
.catch(e => noPerm(msg));
|
||||
.catch(() => noPerm(msg));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,12 +62,12 @@ async function getChannelMessage(msg, MainID, SecondID) {
|
|||
if (SecondID && !/\D/.test(SecondID)) {
|
||||
try {
|
||||
const meschannel = (msg.client.owners.includes(msg.author) ? msg.client : msg.guild).channels.cache.get(MainID);
|
||||
return meschannel.messages.fetch(SecondID);
|
||||
return meschannel.messages.fetch(SecondID, true);
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
return msg.channel.messages.fetch(MainID).catch(() => { });
|
||||
return msg.channel.messages.fetch(MainID, true).catch(() => { });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -81,17 +81,18 @@ function execCB(error, stdout, stderr) {
|
|||
|
||||
/**
|
||||
* Command usage logger
|
||||
* @param {CommandoMessage} msg
|
||||
* @param {CommandoMessage} msg
|
||||
* @param {String} addition
|
||||
*/
|
||||
async function ranLog(msg, addition) {
|
||||
if (typeof addition != "string") return console.log(`[RANLOG] Not a string:`, addition);
|
||||
const channel = msg.client.channels.cache.get(ranLogger),
|
||||
ifCode = addition.startsWith("```") && addition.endsWith("```");
|
||||
const addSplit = splitOnLength((addition.substr(ifCode ? 2045 : 2049)).split(","), 1010, ",");
|
||||
ifCode = addition?.startsWith("```") && addition.endsWith("```");
|
||||
const addSplit = splitOnLength((addition?.substr(ifCode ? 2045 : 2049)).split(","), 1010, ",");
|
||||
const embed = defaultImageEmbed(msg, null, msg.command.name.toLocaleUpperCase() + ` ${msg.id}`);
|
||||
embed.setAuthor(msg.author.tag + ` (${msg.author.id})`, msg.author.displayAvatarURL({ format: "png", size: 128, dynamic: true }))
|
||||
.setURL(msg.url)
|
||||
.setDescription(addition.slice(0, ifCode && addSplit[0]?.[0].length > 0 ? 2044 : 2048) + (ifCode && addSplit[0]?.[0].length > 0 ? "```" : ""));
|
||||
.setURL(msg.url);
|
||||
if (addition && addition.length > 0) embed.setDescription(addition.slice(0, ifCode && addSplit[0]?.[0].length > 0 ? 2044 : 2048) + (ifCode && addSplit[0]?.[0].length > 0 ? "```" : ""));
|
||||
if (addSplit[0]?.[0].length > 0) for (const add of addSplit) embed.addField("", "```js\n" + add.join(",") + (embed.fields.length < (addSplit.length - 1) ? ",```" : ""));
|
||||
embed.setFooter(timestampAt(msg.client), msg.guild?.iconURL({ format: "png", size: 128, dynamic: true }));
|
||||
if (msg.guild) embed.addField("Guild", `\`${msg.guild?.name}\`\n(${msg.guild?.id})`, true);
|
||||
|
|
@ -283,14 +284,14 @@ function findChannelRegEx(msg, name, exclude) {
|
|||
|
||||
/**
|
||||
* Get role object with RegExp
|
||||
* @param {Message | GuildMember} msg Object of the guild being searched
|
||||
* @param {Message | GuildMember | Guild} msg Object of the guild being searched
|
||||
* @param {String} name Keyword
|
||||
* @returns {Role[]} Roles object found
|
||||
*/
|
||||
function findRoleRegEx(msg, name) {
|
||||
if (!msg.guild || !name) return;
|
||||
if (!msg || !name) return;
|
||||
const re = new RegExp(name, "i");
|
||||
return msg.guild.roles.cache.map(r => r).filter(r => re.test(r.name));
|
||||
return (msg.guild || msg).roles.cache.map(r => r).filter(r => re.test(r.name));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -454,7 +455,7 @@ function parseComa(content) {
|
|||
* @returns {String[]}
|
||||
*/
|
||||
function parseDoubleDash(content) {
|
||||
return content.trim().split(/(?<!\\)(--)+/);
|
||||
return content.trim().split(/(?<!https?:\/\/[^\s\n]+)(?<!\\)(--)+/);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -463,26 +464,34 @@ function parseDoubleDash(content) {
|
|||
* @returns {String[]}
|
||||
*/
|
||||
function parseDash(content) {
|
||||
return content.trim().split(/(?<!\\)-(?!-)/);
|
||||
return content.trim().split(/(?<!https?:\/\/[^\s\n]+)(?<!\\)-(?!-)/);
|
||||
}
|
||||
|
||||
const reValidURL = /^https?:\/\/\w+\.\w\w/;
|
||||
const reValidURL = /^https?:\/\/[^\s\n]+\.[^\s\n][^\s\n]/;
|
||||
|
||||
/**
|
||||
* Get user
|
||||
* @param {Message} msg
|
||||
* @param {String} key
|
||||
* @param {Boolean} nonID
|
||||
* @returns {User}
|
||||
*/
|
||||
function getUser(msg, key) {
|
||||
function getUser(msg, key, nonID) {
|
||||
if (!(msg || key)) return;
|
||||
const use = cleanMentionID(key);
|
||||
if (!use || use.length === 0) return;
|
||||
let u;
|
||||
if (/^\d{17,19}$/.test(use)) u = msg.client.users.cache.get(use); else u = getMember(msg.guild, use)?.[0].user;
|
||||
return u;
|
||||
if (/^\d{17,19}$/.test(use)) return msg.client.users.cache.get(use); else if (nonID) return getMember(msg.guild, use)?.[0].user;
|
||||
}
|
||||
|
||||
function getRole(guild, key) {
|
||||
if (!(guild || key)) return;
|
||||
const use = cleanMentionID(key);
|
||||
if (!use || use.length === 0) return;
|
||||
if (/^\d{17,19}$/.test(use)) return guild.roles.cache.get(use); else return findRoleRegEx(guild, use)?.[0];
|
||||
}
|
||||
|
||||
function wait(ms) { return new Promise(r => setTimeout(() => r(), ms)) }
|
||||
|
||||
module.exports = {
|
||||
cleanMentionID, defaultEventLogEmbed,
|
||||
multipleMembersFound, multipleRolesFound, multipleChannelsFound,
|
||||
|
|
@ -492,5 +501,5 @@ module.exports = {
|
|||
trySend, tryDelete, tryReact,
|
||||
adCheck, defaultImageEmbed, getChannel,
|
||||
splitOnLength, parseComa, parseDoubleDash, getMember,
|
||||
parseDash, reValidURL, getUser
|
||||
parseDash, reValidURL, getUser, getRole, wait
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
const { wait } = require("./functions");
|
||||
|
||||
const axios = require("axios").default,
|
||||
U = ["Yo", "Yyo", "Hello my friend", "Hey cutie <3", "What", "Wat", "Watchu want", "Hewwo", "UwU hwee", "OwO whats this", "Yoooooooooo", "Supp", "Whats good mein frien", "Iyo", "Hows doin", "Wassup", "Whats good", "Wanna chat?"];
|
||||
|
||||
|
|
@ -21,16 +23,25 @@ const URL = [
|
|||
'https://rebot.me/just-monika-56'
|
||||
];
|
||||
*/
|
||||
let rl = 0, ex = 0;
|
||||
setInterval(() => {
|
||||
if (rl > 0) rl--;
|
||||
}, 1000);
|
||||
|
||||
async function chatAnswer(message) {
|
||||
// return axios.post("https://rebot.me/ask", { username: "simsimi", question: message }).then(r => r.data).catch(() => { });
|
||||
ex++;
|
||||
if (ex > 1) rl += 1;
|
||||
const t = rl * 1000;
|
||||
await wait(t);
|
||||
const u = message.slice(0, 1000);
|
||||
return axios.get(`https://api.simsimi.net/v1/`, {
|
||||
params: {
|
||||
text: u,
|
||||
lang: "en"
|
||||
}
|
||||
}).then(r => r.data.success.replace(/Sim doesn't know what you are talking about. Please teach me/, "Sorry but i don't speak gibberish").replace(/kemon acho babu/, U[Math.floor(Math.random() * U.length)])).catch(() => { });
|
||||
}).then(r => r.data.success.replace(/Sim doesn't know what you are talking about. Please teach me/, "Sorry but i don't speak gibberish").replace(/kemon acho babu/, U[Math.floor(Math.random() * U.length)])).catch(console.error)
|
||||
.finally(() => ex--);
|
||||
}
|
||||
|
||||
module.exports = { chatAnswer }
|
||||
module.exports = { chatAnswer }
|
||||
|
|
@ -12,8 +12,8 @@ Structures.extend("Guild", g => {
|
|||
}
|
||||
|
||||
async dbLoad() {
|
||||
return database.collection("Guild").findOne({ document: this.id }).then((r, j) => {
|
||||
if (j) return errLog(j, null, this.client);
|
||||
return database.collection("Guild").findOne({ document: this.id }).then((r, e) => {
|
||||
if (e) return errLog(e, null, this.client);
|
||||
this.infractions = r?.moderation?.infractions || [];
|
||||
this.moderation = r?.moderation?.settings || {};
|
||||
this.defaultEmbed = r?.settings?.defaultEmbed || {};
|
||||
|
|
@ -48,14 +48,6 @@ Structures.extend("Guild", g => {
|
|||
} catch (e) { }
|
||||
}
|
||||
|
||||
async setDescription(set) {
|
||||
return database.collection("Guild").updateOne({ document: this.id }, { $set: { description: set }, $setOnInsert: { document: this.id } }, { upsert: true }, (e, r) => {
|
||||
if (e) return errLog(e, null, this.client);
|
||||
this.description = set;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
async addInfraction(add) {
|
||||
try {
|
||||
const r = await database.collection("Guild").findOne({ document: this.id });
|
||||
|
|
@ -195,7 +187,11 @@ Structures.extend("Message", e => {
|
|||
super(client, data, channel);
|
||||
this.previousMessageID = channel.lastMessageID;
|
||||
};
|
||||
}
|
||||
|
||||
setInvoker(user) {
|
||||
return this.invoker = user;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
Structures.extend("GuildMember", e => {
|
||||
|
|
@ -204,8 +200,8 @@ Structures.extend("GuildMember", e => {
|
|||
super(client, data, guild);
|
||||
}
|
||||
|
||||
async getInfractions() {
|
||||
async infractions() {
|
||||
return this.guild.getInfractions(this.id);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
const emoteMessage = require("../emoteMessage");
|
||||
const { getChannel, parseDash, cleanMentionID, trySend } = require("../functions");
|
||||
const { getGuild } = require("./resources/functions");
|
||||
let a, G, C = [], last = 0, nO = "Args: [`-g` Guild: `[name|ID]`] `-c` Channel: `[name|ID]` [`-q` End current session | `-r` Resume previous session]";
|
||||
let a, G, C = [], last = 0, nO = "Args: [`-g` Guild: `[name|ID]` | `-u` Remove channel: `[index]`] `-c` Channel: `[name|ID]` [`-q` End current session | `-r` Resume previous session]";
|
||||
//const p = require("child_process");
|
||||
|
||||
module.exports = {
|
||||
|
|
@ -98,7 +98,7 @@ module.exports = {
|
|||
}
|
||||
console.log("Session:");
|
||||
for (let i = 0; i < C.length; i++) console.log(C[i].guild.name, C[i].guild.id, i + ":", C[i].name, C[i].id);
|
||||
} else if (C[num]) return C[num].send(emoteMessage(client, sl ? arg.slice(num?.toString().length).trim() : arg)).catch(console.error); else {
|
||||
} else if (C[num]) return C[num].send(emoteMessage(client, sl ? arg.slice(num?.toString().length).trim() ?? "hi" : arg)).catch(console.error); else {
|
||||
console.log('No session. Available sessions:');
|
||||
for (let i = 0; i < C.length; i++) console.log(C[i].guild.name, C[i].guild.id, i + ":", C[i].name, C[i].id);
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue