diff --git a/src/events/channelDelete.ts b/src/events/channelDelete.ts
index 49bd3c3..ac29238 100644
--- a/src/events/channelDelete.ts
+++ b/src/events/channelDelete.ts
@@ -1,3 +1,5 @@
+import getEmojiByName from "../utils/getEmojiByName.js";
+
 export const event = 'channelDelete'
 
 export async function callback(client, channel) {
@@ -35,6 +37,21 @@
 			displayName = "Channel"
 		}
 	}
+	let list = {
+		id: entry(channel.id, `\`${channel.id}\``),
+		name: entry(channel.id, `${channel.name}`),
+		topic: null,
+		type: entry(channel.type, readableType),
+		category: entry(channel.parent ? channel.parent.id : null, channel.parent ? channel.parent.name : "Uncategorised"),
+		nsfw: null,
+		created: entry(channel.createdTimestamp, renderDelta(channel.createdTimestamp)),
+		deleted: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+		deletedBy: entry(audit.executor.id, renderUser(audit.executor))
+	}
+	if (channel.topic != null ?? false) list.topic = entry(channel.topic, `\`\`\`\n${channel.topic.replace('`', "'")}\n\`\`\``);
+	else delete list.topic;
+	if (channel.nsfw !== null ?? false) list.nsfw = entry(channel.nsfw, channel.nsfw ? `${getEmojiByName("CONTROL.TICK")} Yes` : `${getEmojiByName("CONTROL.CROSS")} No`);
+	else delete list.nsfw;
 
 	let data = {
 		meta:{
@@ -45,15 +62,7 @@
 			emoji: emoji,
 			timestamp: audit.createdTimestamp
 		},
-		list: { // TODO: Add stuff like nsfw, theres loads missing here
-			id: entry(channel.id, `\`${channel.id}\``),
-			name: entry(channel.id, `${channel.name}`),
-			type: entry(channel.type, readableType),
-			category: entry(channel.parent ? channel.parent.id : null, channel.parent ? channel.parent.name : "Uncategorised"),
-			created: entry(channel.createdTimestamp, renderDelta(channel.createdTimestamp)),
-			deleted: entry(new Date().getTime(), renderDelta(new Date().getTime())),
-			deletedBy: entry(audit.executor.id, renderUser(audit.executor))
-		},
+		list: list,
 		hidden: {
 			guild: channel.guild.id
 		}
diff --git a/src/events/channelUpdate.ts b/src/events/channelUpdate.ts
index f5d2f4d..f374edd 100644
--- a/src/events/channelUpdate.ts
+++ b/src/events/channelUpdate.ts
@@ -20,7 +20,7 @@
 	let changes = {
 		id: entry(nc.id, `\`${nc.id}\``),
 		channel: entry(nc.id, renderChannel(nc)),
-		edited: entry(nc.createdTimestamp, renderDelta(nc.createdTimestamp)),
+		edited: entry(new Date().getTime(), renderDelta(new Date().getTime())),
 		editedBy: entry(audit.executor.id, renderUser((await nc.guild.members.fetch(audit.executor.id)).user)),
 	}
 	if (oc.name != nc.name) changes["name"] = entry([oc.name, nc.name], `${oc.name} -> ${nc.name}`);
@@ -114,7 +114,7 @@
 	}
 	let t = oc.type.split("_")[1];
 	if (oc.type != nc.type) changes["type"] = entry([oc.type, nc.type], `${t[0] + t.splice(1).toLowerCase()} -> ${readableType}`);
-
+	if (!(Object.values(changes).length - 4)) return
 	let data = {
 		meta:{
 			type: 'channelUpdate',
diff --git a/src/events/guildCreate.ts b/src/events/guildCreate.ts
index b437b37..4935b4d 100644
--- a/src/events/guildCreate.ts
+++ b/src/events/guildCreate.ts
@@ -1,56 +1,10 @@
 import { MessageActionRow, MessageButton } from "discord.js";
 import generateEmojiEmbed from "../utils/generateEmojiEmbed.js";
-import getEmojiByName from "../utils/getEmojiByName";
+import getEmojiByName from "../utils/getEmojiByName.js";
+import guide from "../automations/guide.js";
 
 export const event = 'guildCreate';
 
-export const callback = async (client, guild) => {
-    let pages = [
-        new generateEmojiEmbed()
-            .setTitle("Welcome to Nucleus")
-            .setDescription(
-                "Thanks for adding Nucleus to your server\n\n" +
-                "On the next few pages you can find instructions on getting started, and commands you may want to set up\n\n" +
-                "If you need support, have questions or want features, you can let us know in [Clicks](https://discord.gg/bPaNnxe)"
-            )
-            .setEmoji("NUCLEUS.LOGO")
-            .setStatus("Danger"),
-        new generateEmojiEmbed()
-    ]
-    let m = await guild.systemChannel.send({embeds: [
-        new generateEmojiEmbed()
-            .setTitle("Welcome")
-            .setDescription(`One moment...`)
-            .setStatus("Danger")
-            .setEmoji("NUCLEUS.LOADING")
-    ], fetchReply: true });
-    let page = 0;
-
-    let f = async () => {
-
-    }
-
-    while (true) {
-        // edit interaction with pages[page]
-        await m.edit({
-            embeds: [pages[page].setFooter({text: `Page ${page + 1}/${pages.length}`})],
-            components: [new MessageActionRow().addComponents([
-                new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setDisabled(page === 0),
-                new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setDisabled(page === pages.length - 1)
-            ])],
-            fetchReply: true
-        });
-        // wait for interaction
-        let interaction = await m.awaitMessageComponent({filter:f, componentType: "BUTTON", time: 60000});
-        // change page variable accordingly
-        if (interaction.component.customId == "left") {
-            if (page > 0) page--;
-        } else if (interaction.component.customId == "right") {
-            if (page < pages.length - 1) page++;
-        } else {
-            await m.delete()
-            break;
-        }
-        // break if required
-    }
-}
\ No newline at end of file
+export async function callback(client, guild) {
+    guide(guild)
+}
diff --git a/src/events/memberLeave.ts b/src/events/memberLeave.ts
index 46d7696..ea461ab 100644
--- a/src/events/memberLeave.ts
+++ b/src/events/memberLeave.ts
@@ -1,10 +1,12 @@
 import humanizeDuration from 'humanize-duration';
+import { purgeByUser } from '../automations/tickets/delete.js';
 import { callback as statsChannelRemove } from '../automations/statsChannelRemove.js';
 
 export const event = 'guildMemberRemove'
 
 export async function callback(_, member) {
     try { await statsChannelRemove(_, member); } catch {}
+    try { purgeByUser(member.id, member.guild); } catch {} // TODO: add this to ban as well
     try {
         const { log, NucleusColors, entry, renderUser, renderDelta } = member.client.logger
         let data = {
diff --git a/src/events/messageChecks.ts b/src/events/messageChecks.ts
index 71ca965..83cfff1 100644
--- a/src/events/messageChecks.ts
+++ b/src/events/messageChecks.ts
@@ -1,4 +1,4 @@
-import { LinkCheck, MalwareCheck, NSFWCheck, SizeCheck, TestString } from '../automations/unscan.js'
+import { LinkCheck, MalwareCheck, NSFWCheck, SizeCheck, TestString, TestImage } from '../automations/unscan.js'
 import readConfig from '../utils/readConfig.js'
 import { Message } from 'discord.js'
 
diff --git a/src/events/messageDelete.ts b/src/events/messageDelete.ts
index 3b7c5c2..ccaacb8 100644
--- a/src/events/messageDelete.ts
+++ b/src/events/messageDelete.ts
@@ -16,7 +16,7 @@
             timestamp: new Date().getTime()
         },
         separate: {
-            start: `**Message:**\n\`\`\`${content}\`\`\``
+            start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : '**Message:** *Message had no content*',
         },
         list: {
             id: entry(message.id, `\`${message.id}\``),
diff --git a/src/events/messageEdit.ts b/src/events/messageEdit.ts
index bb74f8d..318b0ef 100644
--- a/src/events/messageEdit.ts
+++ b/src/events/messageEdit.ts
@@ -2,11 +2,11 @@
 
 export async function callback(client, oldMessage, newMessage) {
     if (newMessage.author.id == client.user.id) return;
-    if (!newMessage.content || !oldMessage.content) return;
 	const { log, NucleusColors, entry, renderUser, renderDelta, renderNumberDelta, renderChannel } = newMessage.channel.client.logger
     newMessage.reference = newMessage.reference || {}
-    let newContent = newMessage.cleanContent
-    let oldContent = oldMessage.cleanContent
+    let newContent = newMessage.cleanContent.replaceAll("`", "‘")
+    let oldContent = oldMessage.cleanContent.replaceAll("`", "‘")
+    if (newContent == oldContent) return;
     if (newContent.length > 256) newContent = newContent.substring(0, 253) + '...'
     if (oldContent.length > 256) oldContent = oldContent.substring(0, 253) + '...'
     let data = {
@@ -19,7 +19,8 @@
             timestamp: newMessage.editedTimestamp
         },
         separate: {
-            start: `**Before:**\n\`\`\`\n${oldContent}\n\`\`\`\n**After:**\n\`\`\`\n${newContent}\n\`\`\``,
+            start: (oldContent ? `**Before:**\n\`\`\`\n${oldContent}\n\`\`\`\n` : '**Before:** *Message had no content*\n') +
+                   (newContent ? `**After:**\n\`\`\`\n${newContent}\n\`\`\`` : '**After:** *Message had no content*'),
             end: `[[Jump to message]](${newMessage.url})`
         },
         list: {
diff --git a/src/events/roleCreate.ts b/src/events/roleCreate.ts
index 487a45e..76af433 100644
--- a/src/events/roleCreate.ts
+++ b/src/events/roleCreate.ts
@@ -2,6 +2,7 @@
 
 export async function callback(client, role) {
 	const { getAuditLog, log, NucleusColors, entry, renderUser, renderDelta, renderRole } = role.client.logger
+    if (role.managed) return;
     let auditLog = await getAuditLog(role.guild, 'ROLE_CREATE');
     let audit = auditLog.entries.filter(entry => entry.target.id == role.id).first();
     if (audit.executor.id == client.user.id) return;
diff --git a/src/events/roleDelete.ts b/src/events/roleDelete.ts
index 0c6d03e..c5cbe63 100644
--- a/src/events/roleDelete.ts
+++ b/src/events/roleDelete.ts
@@ -3,7 +3,8 @@
 export const event = 'roleDelete'
 
 export async function callback(client, role) {
-	const { getAuditLog, log, NucleusColors, entry, renderUser, renderDelta, renderRole } = role.client.logger
+	const { getAuditLog, log, NucleusColors, entry, renderUser, renderDelta } = role.client.logger
+    if (role.managed) return;
     let auditLog = await getAuditLog(role.guild, 'ROLE_DELETE');
     let audit = auditLog.entries.filter(entry => entry.target.id == role.id).first();
     if (audit.executor.id == client.user.id) return;
