Still got errors and warnings, mostly the same and easy to fix
diff --git a/src/events/messageCreate.ts b/src/events/messageCreate.ts
index cbb1fa2..bbb6a32 100644
--- a/src/events/messageCreate.ts
+++ b/src/events/messageCreate.ts
@@ -1,28 +1,33 @@
-import { LinkCheck, MalwareCheck, NSFWCheck, SizeCheck, TestString, TestImage } from '../reflex/scanners.js'
-import logAttachment from '../premium/attachmentLogs.js'
-import createLogException from '../utils/createLogException.js'
-import getEmojiByName from '../utils/getEmojiByName.js';
-import client from '../utils/client.js';
-import {callback as a} from '../reflex/statsChannelUpdate.js'
+// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+// @ts-ignore
+import { HaikuClient } from "jshaiku";
+import { LinkCheck, MalwareCheck, NSFWCheck, SizeCheck, TestString, TestImage } from "../reflex/scanners.js";
+import logAttachment from "../premium/attachmentLogs.js";
+import createLogException from "../utils/createLogException.js";
+import getEmojiByName from "../utils/getEmojiByName.js";
+import client from "../utils/client.js";
+import {callback as a} from "../reflex/statsChannelUpdate.js";
+import type { Message } from "discord.js";
-export const event = 'messageCreate'
+export const event = "messageCreate";
-export async function callback(_, message) {
+export async function callback(_client: HaikuClient, message: Message) {
if(!message) return;
- if (message.author.bot) return
- if (message.channel.type === 'dm') return
- try { await a(client, await message.guild.members.fetch(message.author.id)); } catch(e) { console.log(e)}
+ if(!message.guild) return;
+ if (message.author.bot) return;
+ if (message.channel.type === "DM") return;
+ try { await a(client, await message.guild.members.fetch(message.author.id)); } catch(e) { console.log(e);}
- const { log, NucleusColors, entry, renderUser, renderDelta, renderChannel } = client.logger
+ const { log, NucleusColors, entry, renderUser, renderDelta, renderChannel } = client.logger;
- let fileNames = await logAttachment(message);
+ const fileNames = await logAttachment(message);
- let content = message.content.toLowerCase() || ''
- let config = await client.memory.readGuildInfo(message.guild.id);
- const filter = getEmojiByName("ICONS.FILTER")
- let attachmentJump = ""
- if (config.logging.attachments.saved[message.channel.id + message.id]) { attachmentJump = ` [[View attachments]](${config.logging.attachments.saved[message.channel.id + message.id]})` }
- let list = {
+ const content = message.content.toLowerCase() || "";
+ const config = await client.memory.readGuildInfo(message.guild.id);
+ const filter = getEmojiByName("ICONS.FILTER");
+ let attachmentJump = "";
+ if (config.logging.attachments.saved[message.channel.id + message.id]) { attachmentJump = ` [[View attachments]](${config.logging.attachments.saved[message.channel.id + message.id]})`; }
+ const list = {
messageId: entry(message.id, `\`${message.id}\``),
sentBy: entry(message.author.id, renderUser(message.author)),
sentIn: entry(message.channel.id, renderChannel(message.channel)),
@@ -33,116 +38,115 @@
message.reference ? message.reference.messageId : null,
message.reference ? `[[Jump to message]](https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.reference.messageId})` : "None"
)
- }
+ };
if (config.filters.invite.enabled) {
- if (!config.filters.invite.allowed.users.includes(message.author.id) ||
- !config.filters.invite.allowed.channels.includes(message.channel.id) ||
- !message.author.roles.cache.some(role => config.filters.invite.allowed.roles.includes(role.id))
- ) {
+ if (!config.filters.invite.allowed.channels.includes(message.channel.id)) {
if ((/(?:https?:\/\/)?discord(?:app)?\.(?:com\/invite|gg)\/[a-zA-Z0-9]+\/?/.test(content))) {
- createLogException(message.guild.id, message.channel.id, message.id)
+ createLogException(message.guild.id, message.channel.id, message.id);
message.delete();
- let data = {
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted (Automated, Contained Invite)',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted (Automated, Contained Invite)",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + " Contained invite\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " Contained invite\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
}
if (fileNames.files.length > 0) {
- for (let element of fileNames.files) {
+ for (const element of fileNames.files) {
if(!message) return;
- let url = element.url ? element.url : element.local
+ const url = element.url ? element.url : element.local;
if (url !== undefined) {
if(/\.(jpg|jpeg|png|gif|gifv|webm|webp|mp4|wav|mp3|ogg)$/.test(url)) {
- if (config.filters.images.NSFW && !message.channel.nsfw) {
+ if (config.filters.images.NSFW && !(
+ message.channel.type === "GUILD_PUBLIC_THREAD" ? false : message.channel.nsfw
+ )) {
if (await NSFWCheck(url)) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + " Image detected as NSFW\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " Image detected as NSFW\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
if (config.filters.wordFilter.enabled) {
- let text = await TestImage(url)
- let check = TestString(text, config.filters.wordFilter.words.loose, config.filters.wordFilter.words.strict)
+ const text = await TestImage(url);
+ const check = TestString(text ?? "", config.filters.wordFilter.words.loose, config.filters.wordFilter.words.strict);
if(check !== null) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + " Image contained filtered word\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " Image contained filtered word\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
if (config.filters.images.size) {
if(url.match(/\.+(webp|png|jpg)$/gi)) {
if(!await SizeCheck(element)) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + " Image was too small\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " Image was too small\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
@@ -150,150 +154,150 @@
}
if (config.filters.malware) {
if (!MalwareCheck(url)) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + " File detected as malware\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " File detected as malware\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
}
- };
+ }
}
if(!message) return;
- let linkDetectionTypes = await LinkCheck(message)
+ const linkDetectionTypes = await LinkCheck(message);
if (linkDetectionTypes.length > 0) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: `Message Deleted`,
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + ` Link filtered as ${linkDetectionTypes[0].toLowerCase()}\n\n` + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + ` Link filtered as ${linkDetectionTypes[0]?.toLowerCase()}\n\n` + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
if (config.filters.wordFilter.enabled) {
- let check = TestString(content, config.filters.wordFilter.words.loose, config.filters.wordFilter.words.strict)
+ const check = TestString(content, config.filters.wordFilter.words.loose, config.filters.wordFilter.words.strict);
if(check !== null) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'messageDelete',
- displayName: 'Message Deleted',
- calculateType: 'autoModeratorDeleted',
+ type: "messageDelete",
+ displayName: "Message Deleted",
+ calculateType: "autoModeratorDeleted",
color: NucleusColors.red,
- emoji: 'MESSAGE.DELETE',
+ emoji: "MESSAGE.DELETE",
timestamp: new Date().getTime()
},
separate: {
- start: filter + ` Message contained filtered word\n\n` + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*'),
+ start: filter + " Message contained filtered word\n\n" + (content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*")
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
if (config.filters.pings.everyone && message.mentions.everyone) {
- let data = {
+ const data = {
meta: {
- type: 'everyonePing',
- displayName: 'Everyone Pinged',
- calculateType: 'messageMassPing',
+ type: "everyonePing",
+ displayName: "Everyone Pinged",
+ calculateType: "messageMassPing",
color: NucleusColors.yellow,
- emoji: 'MESSAGE.PING.EVERYONE',
+ emoji: "MESSAGE.PING.EVERYONE",
timestamp: new Date().getTime()
},
separate: {
- start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*',
+ start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*"
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
if (config.filters.pings.roles) {
- for(let role of message.mentions.roles) {
+ for(const roleId in message.mentions.roles) {
if(!message) return;
- if (!config.filters.pings.allowed.roles.includes(role.id)) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ if (!config.filters.pings.allowed.roles.includes(roleId)) {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'rolePing',
- displayName: 'Role Pinged',
- calculateType: 'messageMassPing',
+ type: "rolePing",
+ displayName: "Role Pinged",
+ calculateType: "messageMassPing",
color: NucleusColors.yellow,
- emoji: 'MESSAGE.PING.ROLE',
+ emoji: "MESSAGE.PING.ROLE",
timestamp: new Date().getTime()
},
separate: {
- start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*',
+ start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*"
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}
}
if (message.mentions.users.size >= config.filters.pings.mass && config.filters.pings.mass) {
- createLogException(message.guild.id, message.channel.id, message.id)
- await message.delete()
- let data = {
+ createLogException(message.guild.id, message.channel.id, message.id);
+ await message.delete();
+ const data = {
meta: {
- type: 'massPing',
- displayName: `Mass Ping`,
- calculateType: 'messageMassPing',
+ type: "massPing",
+ displayName: "Mass Ping",
+ calculateType: "messageMassPing",
color: NucleusColors.yellow,
- emoji: 'MESSAGE.PING.MASS',
+ emoji: "MESSAGE.PING.MASS",
timestamp: new Date().getTime()
},
separate: {
- start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*',
+ start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*"
},
list: list,
hidden: {
guild: message.channel.guild.id
}
- }
+ };
return log(data);
}
}