diff --git a/.gitignore b/.gitignore
index d73f2ea..9eaba59 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@
 !src/config/*.d.ts
 !src/config/format.ts
 !src/config/default.ts
-!src/config/emojis.json
+!src/config/emojis.ts
 src/utils/migration/data
 src/config/main.ts
 .vscode/
diff --git a/src/commands/mod/ban.ts b/src/commands/mod/ban.ts
index 41d1252..78f936c 100644
--- a/src/commands/mod/ban.ts
+++ b/src/commands/mod/ban.ts
@@ -191,7 +191,10 @@
     if (!interaction.guild) return;
     const member = interaction.member as GuildMember;
     // Check if the user has ban_members permission
-    if (!member.permissions.has("BanMembers")) return "You do not have the *Ban Members* permission";
+    if (!member.permissions.has("BanMembers")) {
+        // if(!partial) client.logger.warn("Missing permissions", "Ban", "User does not have Ban Members permission");
+        return "You do not have the *Ban Members* permission";
+    }
     if (partial) return true;
     const me = interaction.guild.members.me!;
     let apply: GuildMember;
diff --git a/src/commands/nucleus/stats.ts b/src/commands/nucleus/stats.ts
index 9690258..1cbcee8 100644
--- a/src/commands/nucleus/stats.ts
+++ b/src/commands/nucleus/stats.ts
@@ -8,6 +8,7 @@
     CommandInteraction,
     ComponentType,
     Guild,
+    GuildTextBasedChannel,
     ModalBuilder,
     ModalSubmitInteraction,
     TextInputBuilder,
@@ -91,7 +92,11 @@
             ],
             components: [
                 new ActionRowBuilder<ButtonBuilder>().addComponents(
-                    new ButtonBuilder().setCustomId("admin").setLabel("Admin Panel").setStyle(ButtonStyle.Primary)
+                    new ButtonBuilder().setCustomId("admin").setLabel("Admin Panel").setStyle(ButtonStyle.Primary),
+                    new ButtonBuilder()
+                        .setCustomId("announce")
+                        .setLabel("Announce to all Guilds")
+                        .setStyle(ButtonStyle.Danger)
                 )
             ]
         });
@@ -120,152 +125,280 @@
         // console.log(interaction)
         if (!("awaitMessageComponent" in channel)) return;
         let GuildID = interaction.guildId;
-        if (!GuildID) {
-            try {
-                i1 = await channel!.awaitMessageComponent<ComponentType.Button>({
-                    filter: (i) => i.customId === "admin" && i.user.id === interaction.user.id && i.message.id === m.id,
-                    time: 300000
-                });
-            } catch (e) {
-                console.log(e);
-                return;
-            }
-            await i1.showModal(modal);
-            let out: ModalSubmitInteraction;
-            try {
-                out = await i1.awaitModalSubmit({
-                    filter: (i) => i.customId === "adminPanel" && i.user.id === interaction.user.id,
-                    time: 300000
-                });
-            } catch {
-                return;
-            }
-            await out.deferUpdate();
-            GuildID = out.fields.getTextInputValue("guildID");
-        } else if (!client.guilds.cache.has(GuildID)) {
-            await interaction.editReply({
-                embeds: [new EmojiEmbed().setTitle("Admin").setDescription("Not in server").setStatus("Danger")],
-                components: []
-            });
-        }
-
-        await interaction.editReply({
-            embeds: [],
-            components: [
-                new ActionRowBuilder<ButtonBuilder>().addComponents(
-                    new ButtonBuilder().setCustomId("stats").setLabel("Stats").setStyle(ButtonStyle.Primary),
-                    new ButtonBuilder().setCustomId("data").setLabel("Guild data").setStyle(ButtonStyle.Secondary),
-                    new ButtonBuilder().setCustomId("cache").setLabel("Reset cache").setStyle(ButtonStyle.Success),
-                    new ButtonBuilder().setCustomId("leave").setLabel("Leave").setStyle(ButtonStyle.Danger),
-                    new ButtonBuilder().setCustomId("purge").setLabel("Delete data").setStyle(ButtonStyle.Danger)
-                )
-            ]
-        });
-        let i;
         try {
-            i = await m.awaitMessageComponent<ComponentType.Button>({
-                filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id,
+            i1 = await m.awaitMessageComponent<ComponentType.Button>({
+                filter: (i) => i.user.id === interaction.user.id,
                 time: 300000
             });
-        } catch {
+        } catch (e) {
+            console.log(e);
             return;
         }
-        const guild = (await client.guilds.fetch(GuildID)) as Guild | null;
-        if (!guild) {
-            await i.deferUpdate();
-            await interaction.editReply({
-                embeds: [new EmojiEmbed().setTitle("Admin").setDescription("Not in server").setStatus("Danger")],
-                components: []
-            });
-            return;
-        }
-        if (i.customId === "stats") {
-            await i.deferUpdate();
-            await interaction.editReply({
-                embeds: [
-                    new EmojiEmbed()
-                        .setTitle("Stats")
-                        .setDescription(
-                            `**Name:** ${guild.name}\n` +
-                                `**ID:** \`${guild.id}\`\n` +
-                                `**Owner:** ${client.users.cache.get(guild.ownerId)!.tag}\n` +
-                                `**Member Count:** ${guild.memberCount}\n` +
-                                `**Created:** <t:${guild.createdTimestamp}:F>\n` +
-                                `**Added Nucleus:** <t:${guild.members.me!.joinedTimestamp}:R>\n` +
-                                `**Nucleus' Perms:** https://discordapi.com/permissions.html#${guild.members.me!.permissions.valueOf()}\n`
+        switch (i1.customId) {
+            case "admin": {
+                if (!GuildID) {
+                    await i1.showModal(modal);
+                    let out: ModalSubmitInteraction;
+                    try {
+                        out = await i1.awaitModalSubmit({
+                            filter: (i) => i.customId === "adminPanel" && i.user.id === interaction.user.id,
+                            time: 300000
+                        });
+                    } catch {
+                        return;
+                    }
+                    await out.deferUpdate();
+                    GuildID = out.fields.getTextInputValue("guildID");
+                } else if (!client.guilds.cache.has(GuildID)) {
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed().setTitle("Admin").setDescription("Not in server").setStatus("Danger")
+                        ],
+                        components: []
+                    });
+                }
+
+                await interaction.editReply({
+                    embeds: [],
+                    components: [
+                        new ActionRowBuilder<ButtonBuilder>().addComponents(
+                            new ButtonBuilder().setCustomId("stats").setLabel("Stats").setStyle(ButtonStyle.Primary),
+                            new ButtonBuilder()
+                                .setCustomId("data")
+                                .setLabel("Guild data")
+                                .setStyle(ButtonStyle.Secondary),
+                            new ButtonBuilder()
+                                .setCustomId("cache")
+                                .setLabel("Reset cache")
+                                .setStyle(ButtonStyle.Success),
+                            new ButtonBuilder().setCustomId("leave").setLabel("Leave").setStyle(ButtonStyle.Danger),
+                            new ButtonBuilder()
+                                .setCustomId("purge")
+                                .setLabel("Delete data")
+                                .setStyle(ButtonStyle.Danger)
                         )
-                        .setStatus("Success")
-                        .setEmoji("SETTINGS.STATS.GREEN")
-                ]
-            });
-        } else if (i.customId === "leave") {
-            if (!(await confirm(interaction))) {
-                await interaction.editReply({
-                    embeds: [new EmojiEmbed().setTitle("No changes were made").setStatus("Danger")],
-                    components: []
+                    ]
                 });
-                return;
+                let i;
+                try {
+                    i = await m.awaitMessageComponent<ComponentType.Button>({
+                        filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id,
+                        time: 300000
+                    });
+                } catch {
+                    return;
+                }
+                const guild = (await client.guilds.fetch(GuildID)) as Guild | null;
+                if (!guild) {
+                    await i.deferUpdate();
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed().setTitle("Admin").setDescription("Not in server").setStatus("Danger")
+                        ],
+                        components: []
+                    });
+                    return;
+                }
+                if (i.customId === "stats") {
+                    await i.deferUpdate();
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Stats")
+                                .setDescription(
+                                    `**Name:** ${guild.name}\n` +
+                                        `**ID:** \`${guild.id}\`\n` +
+                                        `**Owner:** ${client.users.cache.get(guild.ownerId)!.tag}\n` +
+                                        `**Member Count:** ${guild.memberCount}\n` +
+                                        `**Created:** <t:${guild.createdTimestamp}:F>\n` +
+                                        `**Added Nucleus:** <t:${guild.members.me!.joinedTimestamp}:R>\n` +
+                                        `**Nucleus' Perms:** https://discordapi.com/permissions.html#${guild.members.me!.permissions.valueOf()}\n`
+                                )
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ]
+                    });
+                } else if (i.customId === "leave") {
+                    if (!(await confirm(interaction))) {
+                        await interaction.editReply({
+                            embeds: [new EmojiEmbed().setTitle("No changes were made").setStatus("Danger")],
+                            components: []
+                        });
+                        return;
+                    }
+                    await guild.leave();
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Left")
+                                .setDescription(`Left ${guild.name}`)
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ],
+                        components: []
+                    });
+                } else if (i.customId === "data") {
+                    await i.deferUpdate();
+                    // Get all the data and convert to a string
+                    const data = await client.database.guilds.read(guild.id);
+                    const stringified = JSON.stringify(data, null, 2);
+                    const buffer = Buffer.from(stringified);
+                    const attachment = new AttachmentBuilder(buffer).setName("data.json");
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Data")
+                                .setDescription(`Data for ${guild.name}`)
+                                .setStatus("Success")
+                        ],
+                        components: [],
+                        files: [attachment]
+                    });
+                } else if (i.customId === "purge") {
+                    if (!(await confirm(interaction))) {
+                        await interaction.editReply({
+                            embeds: [new EmojiEmbed().setTitle("No changes were made").setStatus("Danger")],
+                            components: []
+                        });
+                        return;
+                    }
+                    await client.database.guilds.delete(GuildID);
+                    await client.database.history.delete(GuildID);
+                    await client.database.notes.delete(GuildID);
+                    await client.database.transcripts.deleteAll(GuildID);
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Purge")
+                                .setDescription(`Deleted data for ${guild.name}`)
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ],
+                        components: []
+                    });
+                } else if (i.customId === "cache") {
+                    await i.deferUpdate();
+                    await client.memory.forceUpdate(guild.id);
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Cache")
+                                .setDescription(`Reset cache for ${guild.name}`)
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ],
+                        components: []
+                    });
+                }
+                break;
             }
-            await guild.leave();
-            await interaction.editReply({
-                embeds: [
-                    new EmojiEmbed()
-                        .setTitle("Left")
-                        .setDescription(`Left ${guild.name}`)
-                        .setStatus("Success")
-                        .setEmoji("SETTINGS.STATS.GREEN")
-                ],
-                components: []
-            });
-        } else if (i.customId === "data") {
-            await i.deferUpdate();
-            // Get all the data and convert to a string
-            const data = await client.database.guilds.read(guild.id);
-            const stringified = JSON.stringify(data, null, 2);
-            const buffer = Buffer.from(stringified);
-            const attachment = new AttachmentBuilder(buffer).setName("data.json");
-            await interaction.editReply({
-                embeds: [
-                    new EmojiEmbed().setTitle("Data").setDescription(`Data for ${guild.name}`).setStatus("Success")
-                ],
-                components: [],
-                files: [attachment]
-            });
-        } else if (i.customId === "purge") {
-            if (!(await confirm(interaction))) {
+            case "announce": {
+                const channelsToNotify = await client.database.guilds.staffChannels();
+                const modal2 = new ModalBuilder()
+                    .addComponents(
+                        new ActionRowBuilder<TextInputBuilder>().addComponents(
+                            new TextInputBuilder()
+                                .setStyle(TextInputStyle.Paragraph)
+                                .setLabel("Announcement")
+                                .setCustomId("announcement")
+                                .setPlaceholder("Announcement...")
+                        )
+                    )
+                    .setTitle("Announcement")
+                    .setCustomId("announce");
+                await i1.showModal(modal2);
+                let out: ModalSubmitInteraction;
+                try {
+                    out = await i1.awaitModalSubmit({
+                        filter: (i) => i.customId === "announce" && i.user.id === interaction.user.id,
+                        time: 300000
+                    });
+                } catch {
+                    return;
+                }
+                await out.deferUpdate();
+                const announcement = out.fields.getTextInputValue("announcement");
                 await interaction.editReply({
-                    embeds: [new EmojiEmbed().setTitle("No changes were made").setStatus("Danger")],
-                    components: []
+                    embeds: [
+                        new EmojiEmbed()
+                            .setTitle("Announcement")
+                            .setDescription(
+                                `Announcement will be sent to ${channelsToNotify.length} channels.\n\n${announcement}`
+                            )
+                            .setStatus("Success")
+                            .setEmoji("SETTINGS.STATS.GREEN")
+                    ],
+                    components: [
+                        new ActionRowBuilder<ButtonBuilder>().addComponents(
+                            new ButtonBuilder()
+                                .setCustomId("confirm")
+                                .setLabel("Confirm")
+                                .setStyle(ButtonStyle.Success),
+                            new ButtonBuilder().setCustomId("cancel").setLabel("Cancel").setStyle(ButtonStyle.Danger)
+                        )
+                    ]
                 });
-                return;
+
+                let i;
+                try {
+                    i = await m.awaitMessageComponent<ComponentType.Button>({
+                        filter: (i) => i.user.id === interaction.user.id,
+                        time: 300000
+                    });
+                } catch {
+                    return;
+                }
+                if (i.customId === "confirm") {
+                    await i.deferUpdate();
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Announcement")
+                                .setDescription(
+                                    `Sending to ${channelsToNotify.length} channels. Preview:\n\n${announcement}`
+                                )
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ],
+                        components: []
+                    });
+                    const announcementEmbed = new EmojiEmbed()
+                        .setTitle("Developer Announcement")
+                        .setDescription(announcement)
+                        .setStatus("Danger")
+                        .setEmoji("NUCLEUS.LOGO")
+                        .setFooter({
+                            text: `Sent by ${interaction.user.username}`,
+                            iconURL: interaction.user.displayAvatarURL()
+                        });
+                    for (const channel of channelsToNotify) {
+                        const ch = (await client.channels.fetch(channel)) as GuildTextBasedChannel | null;
+                        if (!ch) continue;
+                        await ch.send({
+                            embeds: [announcementEmbed]
+                        });
+                    }
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Announcement")
+                                .setDescription(
+                                    `Sent to ${channelsToNotify.length} channels. Preview:\n\n${announcement}`
+                                )
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
+                        ],
+                        components: []
+                    });
+                } else if (i.customId === "cancel") {
+                    await i.deferUpdate();
+                    await interaction.editReply({
+                        embeds: [new EmojiEmbed().setTitle("Announcement Cancelled").setStatus("Danger")],
+                        components: []
+                    });
+                }
+                break;
             }
-            await client.database.guilds.delete(GuildID);
-            await client.database.history.delete(GuildID);
-            await client.database.notes.delete(GuildID);
-            await client.database.transcripts.deleteAll(GuildID);
-            await interaction.editReply({
-                embeds: [
-                    new EmojiEmbed()
-                        .setTitle("Purge")
-                        .setDescription(`Deleted data for ${guild.name}`)
-                        .setStatus("Success")
-                        .setEmoji("SETTINGS.STATS.GREEN")
-                ],
-                components: []
-            });
-        } else if (i.customId === "cache") {
-            await i.deferUpdate();
-            await client.memory.forceUpdate(guild.id);
-            await interaction.editReply({
-                embeds: [
-                    new EmojiEmbed()
-                        .setTitle("Cache")
-                        .setDescription(`Reset cache for ${guild.name}`)
-                        .setStatus("Success")
-                        .setEmoji("SETTINGS.STATS.GREEN")
-                ],
-                components: []
-            });
         }
     }
 };
diff --git a/src/config/emojis.json b/src/config/emojis.json
deleted file mode 100644
index 585934d..0000000
--- a/src/config/emojis.json
+++ /dev/null
@@ -1,402 +0,0 @@
-{
-    "NUCLEUS": {
-        "LOGO": "953040840945721385",
-        "PREMIUMACTIVATE": "a1067536222764925068",
-        "PREMIUM": "1067928702027042876",
-        "LOADING": "a946346549271732234",
-        "INFO": {
-            "HELP": "751751467014029322",
-            "ABOUT": "751762088346517504",
-            "COMMANDS": "751762088229339136",
-            "SUPPORT": "751762087780286495"
-        },
-        "COMMANDS": {
-            "RAID": "777143043711172608",
-            "LOCK": "776848800995868682",
-            "IGNORE": "777520659270074389"
-        }
-    },
-    "ICONS": {
-        "ADD": "826823514904330251",
-        "REMOVE": "826823515268186152",
-        "EDIT": "989911820267577366",
-        "HISTORY": "989911933069168690",
-        "FILTER": "990242059451514902",
-        "ATTACHMENT": "997570687193587812",
-        "LOGGING": "999613304446144562",
-        "SAVE": "1065722246322200586",
-        "REORDER": "1069323453909454890",
-        "PUBLISH": "1081691380004421743",
-        "NOTIFY": {
-            "ON": "1000726394579464232",
-            "OFF": "1078058136092541008"
-        },
-        "OPP": {
-            "ADD": "837355918831124500",
-            "REMOVE": "837355918420869162"
-        },
-        "CHANNEL": {
-            "GUILD_TEXT": "990209996182679632",
-            "GUILD_TEXT_NSFW": "990216363526221824",
-            "GUILD_VOICE": "990213162697637969",
-            "GUILD_VOICE_NSFW": "990216017244463124",
-            "GUILD_STORE": "853668786925469706",
-            "GUILD_NEWS": "853668786493063169",
-            "GUILD_NEWS_NSFW": "990216028300673094",
-            "GUILD_STAGE_VOICE": "853668786842763294",
-            "THREAD_CHANNEL": "990210005108158514",
-            "THREAD_PIPE": "990213168183779348",
-            "RULES": "990213153080115250",
-            "FORUM": "1061706437526552716",
-            "CATEGORY": "1064943289708597348"
-        },
-        "FLAGS": {
-            "RED": "1082719687219101800",
-            "YELLOW": "1082719684060794890",
-            "GREEN": "1082719681326108763",
-            "BLUE": "1082719679161843734",
-            "PURPLE": "1082719686292156628",
-            "GRAY": "1082719682492125337"
-        }
-    },
-    "CONTROL": {
-        "TICK": "947441964234702849",
-        "REDTICK": "999612396727439370",
-        "CROSS": "947441948543815720",
-        "BLOCKCROSS": "952261738349330493",
-        "BLOCKTICK": "991805475777695855",
-        "LEFT": "947441951148486728",
-        "RIGHT": "947441957473488916",
-        "UP": "963409197293273108",
-        "DOWN": "963409199549796352",
-        "DOWNLOAD": "947959513032585236",
-        "TICKET": "973253514488860683",
-        "MENU": "976580327835320410",
-        "PILL": {
-            "TICK": "753314339082993832",
-            "CROSS": "753314339389309100"
-        }
-    },
-    "STATUS": {
-        "ONLINE": "729064530084102166",
-        "IDLE": "729064531577536582",
-        "DND": "729064531057311886",
-        "STREAMING": "729764055082074153",
-        "OFFLINE": "729064531271221289"
-    },
-    "CHANNEL": {
-        "TEXT": {
-            "CREATE": "729066924943737033",
-            "EDIT": "951957316117360640",
-            "DELETE": "729064529211686922"
-        },
-        "VOICE": {
-            "CREATE": "729064530830950530",
-            "EDIT": "951957316071223336",
-            "DELETE": "729064530981683200"
-        },
-        "CATEGORY": {
-            "CREATE": "787987508465238026",
-            "EDIT": "787987508565770300",
-            "DELETE": "787987508507967488"
-        },
-        "PURGE": {
-            "RED": "729064530797133875",
-            "GREEN": "947443645391441940"
-        },
-        "TITLEUPDATE": "729763053620691044",
-        "TOPICUPDATE": "729763053477953536",
-        "SLOWMODE": {
-            "ON": "973616021304913950",
-            "OFF": "777138171447869480"
-        },
-        "NSFW": {
-            "ON": "729064531208175736",
-            "OFF": "729381430991388752"
-        }
-    },
-    "MEMBER": {
-        "JOIN": "729066519337762878",
-        "LEAVE": "729064531170558575",
-        "BOT": {
-            "JOIN": "729064528666689587",
-            "LEAVE": "729064528998039633"
-        },
-        "KICK": "729263536785850458",
-        "BAN": "729263536643112991",
-        "UNBAN": "729263536840114216"
-    },
-    "INVITE": {
-        "CREATE": "729064529274601482",
-        "DELETE": "729064531103580230"
-    },
-    "WEBHOOK": {
-        "CREATE": "752070251906203679",
-        "UPDATE": "752073772823216191",
-        "DELETE": "752070251948146768"
-    },
-    "MESSAGE": {
-        "CREATE": "751762088229339136",
-        "EDIT": "729065958584614925",
-        "DELETE": "729064530432360461",
-        "PIN": "729064530755190894",
-        "REACTION": {
-            "ADD": "",
-            "REMOVE": "",
-            "CLEAR": "729064531468353606"
-        },
-        "PING": {
-            "MASS": "729620608408879124",
-            "EVERYONE": "729064531073957909",
-            "ROLE": "729263536915742770"
-        }
-    },
-    "PUNISH": {
-        "WARN": {
-            "RED": "947433493384806430",
-            "YELLOW": "729764054897524768",
-            "GREEN": "947433504076091424"
-        },
-        "KICK": {
-            "RED": "729764053794422896",
-            "YELLOW": "947429333289562132",
-            "GREEN": "947428786692042764"
-        },
-        "BAN": {
-            "RED": "729764053861400637",
-            "YELLOW": "729764053941223476",
-            "GREEN": "947421674364629022"
-        },
-        "UNBAN": {
-            "RED": "972511610885255259",
-            "YELLOW": "972511620343414794",
-            "GREEN": "729263536840114216"
-        },
-        "MUTE": {
-            "RED": "947555098974883910",
-            "YELLOW": "729764053865463840",
-            "GREEN": "947555107980066866"
-        },
-        "SOFTBAN": "729764053941223476",
-        "VOICEMUTE": "729764054855450697",
-        "CLEARHISTORY": "729764062270980096",
-        "NICKNAME": {
-            "RED": "959762533101731980",
-            "YELLOW": "729064531019694090",
-            "GREEN": "959762533072392202"
-        }
-    },
-    "BADGES": {
-        "NUCLEUSDEVELOPER": "957722888360853595",
-        "CLICKSDEVELOPER": "957722888314683462",
-        "BOT": "776375959108190239",
-        "BOOSTER": "775783766131605545",
-        "HypeSquadOnlineHouse1": "775783765930016789",
-        "HypeSquadOnlineHouse2": "775783766152577095",
-        "HypeSquadOnlineHouse3": "775783766303440937",
-        "Hypesquad": "775783766194126908",
-        "PremiumEarlySupporter": "775783766055452693",
-        "BugHunterLevel1": "775783766252847154",
-        "BugHunterLevel2": "775783766130950234",
-        "Partner": "775783766178005033",
-        "Staff": "775783766383788082",
-        "VerifiedDeveloper": "775783766425600060",
-        "Quarantined": "1059794708638994474",
-        "Spammer": "1059794708638994474",
-        "ActiveDeveloper": "1059795592966053918"
-    },
-    "VOICE": {
-        "CONNECT": "784785219391193138",
-        "CHANGE": "784785219353968670",
-        "LEAVE": "784785219432480808",
-        "MUTE": "784785219613360149",
-        "UNMUTE": "784785219441524766",
-        "DEAFEN": "784785219424747550",
-        "UNDEAFEN": "784785219324346378",
-        "STREAM": {
-            "START": "853519659775819787",
-            "STOP": "853519660116213780"
-        },
-        "VIDEO": {
-            "START": "853519659945295873",
-            "STOP": "853519660116738078"
-        }
-    },
-    "SETTINGS": {
-        "STATS": {
-            "GREEN": "752214059159650396",
-            "RED": "1065677252630675556"
-        }
-    },
-    "GUILD": {
-        "RED": "959779988264079361",
-        "YELLOW": "729763053352124529",
-        "GREEN": "959779988503154698",
-        "EMOJI": {
-            "CREATE": "953035168115982437",
-            "EDIT": "729066518549233795",
-            "DELETE": "953035210121953320"
-        },
-        "SETTINGS": {
-            "GREEN": "752570111063228507",
-            "RED": "1068607393728049253"
-        },
-        "ICONCHANGE": "729763053612302356",
-        "TICKET": {
-            "OPEN": "853245836331188264",
-            "CLOSE": "853580122506133505",
-            "ARCHIVED": "853580122636025856"
-        },
-        "ROLES": {
-            "CREATE": "729064530763579413",
-            "DELETE": "729064530885476392",
-            "EDIT": "776109664793919489",
-            "MEMBERS": "752570111281594509",
-            "MESSAGES": "752570111373606942",
-            "VOICE": "752570111088525354"
-        }
-    },
-    "MOD": {
-        "IMAGES": {
-            "SWEARING": "730438422627614810",
-            "INVISIBLE": "730438422690398238",
-            "TOOBIG": "730438422921084998",
-            "TOOSMALL": "730438422921216150"
-        },
-        "SWEARING": "730438422816096377",
-        "SPAM": "730438422853845042"
-    },
-    "NUMBERS": [
-        {
-            "NORMAL": "753259024404840529",
-            "GREEN": "753312608378945648",
-            "RED": "753312608890650664"
-        },
-        {
-            "NORMAL": "753259025990418515",
-            "GREEN": "753312608550912112",
-            "RED": "753312609075462246"
-        },
-        {
-            "NORMAL": "753259024409034896",
-            "GREEN": "753312608513294366",
-            "RED": "753312608680935446"
-        },
-        {
-            "NORMAL": "753259024358703205",
-            "GREEN": "753312608815284426",
-            "RED": "753312609377320966"
-        },
-        {
-            "NORMAL": "753259024555835513",
-            "GREEN": "753312608735461457",
-            "RED": "753312609255686223"
-        },
-        {
-            "NORMAL": "753259024744579283",
-            "GREEN": "753312608630604017",
-            "RED": "753312609138376777"
-        },
-        {
-            "NORMAL": "753259024354639994",
-            "GREEN": "753312608656031806",
-            "RED": "753312609465270412"
-        },
-        {
-            "NORMAL": "753259024530800661",
-            "GREEN": "753312608718815322",
-            "RED": "753312609104822313"
-        },
-        {
-            "NORMAL": "753259024895574037",
-            "GREEN": "753312608790249646",
-            "RED": "753312609477984319"
-        },
-        {
-            "NORMAL": "753259024681533553",
-            "GREEN": "753312608899170365",
-            "RED": "753312609557545089"
-        }
-    ],
-    "BOTS": {
-        "GPS": "878919163937185803",
-        "NUCLEUS": "878919163597439016",
-        "CLICKSFORMS": "878919163337388073",
-        "CASTAWAY": "878919164255944726",
-        "CMPING": "878919164125929502",
-        "HOOKY": "878919164121731082"
-    },
-    "CFSERVICE": {
-        "VERIFIED": "881984571242053642",
-        "UNVERIFIED": "881984571258847232"
-    },
-    "TICKETS": {
-        "SUPPORT": "952295894370369587",
-        "REPORT": "952295894437482537",
-        "QUESTION": "952295894403907645",
-        "ISSUE": "952295894412316672",
-        "SUGGESTION": "952295894399725588",
-        "OTHER": "952295894445883502"
-    },
-    "TRACKS": {
-        "ICON": "963170616444334171",
-        "HORIZONTAL": {
-            "LEFT": {
-                "ACTIVE": "963121920038035506",
-                "INACTIVE": "963121944239153242"
-            },
-            "MIDDLE": {
-                "ACTIVE": "963121925893263420",
-                "INACTIVE": "963121949796597870"
-            },
-            "RIGHT": {
-                "ACTIVE": "963121933384302602",
-                "INACTIVE": "963121956125831168"
-            }
-        },
-        "VERTICAL": {
-            "TOP": {
-                "ACTIVE": "963122664648630293",
-                "INACTIVE": "963122659862917140",
-                "GRAY": {
-                    "ACTIVE": "963123505052934144",
-                    "INACTIVE": "963123495221469194"
-                }
-            },
-            "MIDDLE": {
-                "ACTIVE": "963122679332880384",
-                "INACTIVE": "963122673246937199",
-                "GRAY": {
-                    "ACTIVE": "963123517702955018",
-                    "INACTIVE": "963123511927390329"
-                }
-            },
-            "BOTTOM": {
-                "ACTIVE": "963122691752218624",
-                "INACTIVE": "963122685691453552",
-                "GRAY": {
-                    "ACTIVE": "963123529988059187",
-                    "INACTIVE": "963123523742748742"
-                }
-            }
-        },
-        "SINGLE": {
-            "ACTIVE": "963361162215424060",
-            "INACTIVE": "963361431758176316",
-            "GRAY": {
-                "ACTIVE": "963361204695334943",
-                "INACTIVE": "963361200828198952"
-            }
-        }
-    },
-    "COLORS": {
-        "RED": "875822912802803754",
-        "ORANGE": "875822913104785418",
-        "YELLOW": "875822913079611402",
-        "GREEN": "875822913213841418",
-        "BLUE": "875822912777637889",
-        "PURPLE": "875822913213841419",
-        "PINK": "875822913088020541",
-        "GRAY": "875822913117368340"
-    }
-}
diff --git a/src/config/emojis.ts b/src/config/emojis.ts
new file mode 100644
index 0000000..b7ed91a
--- /dev/null
+++ b/src/config/emojis.ts
@@ -0,0 +1,402 @@
+export default {
+    NUCLEUS: {
+        LOGO: "953040840945721385",
+        PREMIUMACTIVATE: "a1067536222764925068",
+        PREMIUM: "1067928702027042876",
+        LOADING: "a946346549271732234",
+        INFO: {
+            HELP: "751751467014029322",
+            ABOUT: "751762088346517504",
+            COMMANDS: "751762088229339136",
+            SUPPORT: "751762087780286495"
+        },
+        COMMANDS: {
+            RAID: "777143043711172608",
+            LOCK: "776848800995868682",
+            IGNORE: "777520659270074389"
+        }
+    },
+    ICONS: {
+        ADD: "826823514904330251",
+        REMOVE: "826823515268186152",
+        EDIT: "989911820267577366",
+        HISTORY: "989911933069168690",
+        FILTER: "990242059451514902",
+        ATTACHMENT: "997570687193587812",
+        LOGGING: "999613304446144562",
+        SAVE: "1065722246322200586",
+        REORDER: "1069323453909454890",
+        PUBLISH: "1081691380004421743",
+        NOTIFY: {
+            ON: "1000726394579464232",
+            OFF: "1078058136092541008"
+        },
+        OPP: {
+            ADD: "837355918831124500",
+            REMOVE: "837355918420869162"
+        },
+        CHANNEL: {
+            GUILD_TEXT: "990209996182679632",
+            GUILD_TEXT_NSFW: "990216363526221824",
+            GUILD_VOICE: "990213162697637969",
+            GUILD_VOICE_NSFW: "990216017244463124",
+            GUILD_STORE: "853668786925469706",
+            GUILD_NEWS: "853668786493063169",
+            GUILD_NEWS_NSFW: "990216028300673094",
+            GUILD_STAGE_VOICE: "853668786842763294",
+            THREAD_CHANNEL: "990210005108158514",
+            THREAD_PIPE: "990213168183779348",
+            RULES: "990213153080115250",
+            FORUM: "1061706437526552716",
+            CATEGORY: "1064943289708597348"
+        },
+        FLAGS: {
+            RED: "1082719687219101800",
+            YELLOW: "1082719684060794890",
+            GREEN: "1082719681326108763",
+            BLUE: "1082719679161843734",
+            PURPLE: "1082719686292156628",
+            GRAY: "1082719682492125337"
+        }
+    },
+    CONTROL: {
+        TICK: "947441964234702849",
+        REDTICK: "999612396727439370",
+        CROSS: "947441948543815720",
+        BLOCKCROSS: "952261738349330493",
+        BLOCKTICK: "991805475777695855",
+        LEFT: "947441951148486728",
+        RIGHT: "947441957473488916",
+        UP: "963409197293273108",
+        DOWN: "963409199549796352",
+        DOWNLOAD: "947959513032585236",
+        TICKET: "973253514488860683",
+        MENU: "976580327835320410",
+        PILL: {
+            TICK: "753314339082993832",
+            CROSS: "753314339389309100"
+        }
+    },
+    STATUS: {
+        ONLINE: "729064530084102166",
+        IDLE: "729064531577536582",
+        DND: "729064531057311886",
+        STREAMING: "729764055082074153",
+        OFFLINE: "729064531271221289"
+    },
+    CHANNEL: {
+        TEXT: {
+            CREATE: "729066924943737033",
+            EDIT: "951957316117360640",
+            DELETE: "729064529211686922"
+        },
+        VOICE: {
+            CREATE: "729064530830950530",
+            EDIT: "951957316071223336",
+            DELETE: "729064530981683200"
+        },
+        CATEGORY: {
+            CREATE: "787987508465238026",
+            EDIT: "787987508565770300",
+            DELETE: "787987508507967488"
+        },
+        PURGE: {
+            RED: "729064530797133875",
+            GREEN: "947443645391441940"
+        },
+        TITLEUPDATE: "729763053620691044",
+        TOPICUPDATE: "729763053477953536",
+        SLOWMODE: {
+            ON: "973616021304913950",
+            OFF: "777138171447869480"
+        },
+        NSFW: {
+            ON: "729064531208175736",
+            OFF: "729381430991388752"
+        }
+    },
+    MEMBER: {
+        JOIN: "729066519337762878",
+        LEAVE: "729064531170558575",
+        BOT: {
+            JOIN: "729064528666689587",
+            LEAVE: "729064528998039633"
+        },
+        KICK: "729263536785850458",
+        BAN: "729263536643112991",
+        UNBAN: "729263536840114216"
+    },
+    INVITE: {
+        CREATE: "729064529274601482",
+        DELETE: "729064531103580230"
+    },
+    WEBHOOK: {
+        CREATE: "752070251906203679",
+        UPDATE: "752073772823216191",
+        DELETE: "752070251948146768"
+    },
+    MESSAGE: {
+        CREATE: "751762088229339136",
+        EDIT: "729065958584614925",
+        DELETE: "729064530432360461",
+        PIN: "729064530755190894",
+        REACTION: {
+            ADD: "",
+            REMOVE: "",
+            CLEAR: "729064531468353606"
+        },
+        PING: {
+            MASS: "729620608408879124",
+            EVERYONE: "729064531073957909",
+            ROLE: "729263536915742770"
+        }
+    },
+    PUNISH: {
+        WARN: {
+            RED: "947433493384806430",
+            YELLOW: "729764054897524768",
+            GREEN: "947433504076091424"
+        },
+        KICK: {
+            RED: "729764053794422896",
+            YELLOW: "947429333289562132",
+            GREEN: "947428786692042764"
+        },
+        BAN: {
+            RED: "729764053861400637",
+            YELLOW: "729764053941223476",
+            GREEN: "947421674364629022"
+        },
+        UNBAN: {
+            RED: "972511610885255259",
+            YELLOW: "972511620343414794",
+            GREEN: "729263536840114216"
+        },
+        MUTE: {
+            RED: "947555098974883910",
+            YELLOW: "729764053865463840",
+            GREEN: "947555107980066866"
+        },
+        SOFTBAN: "729764053941223476",
+        VOICEMUTE: "729764054855450697",
+        CLEARHISTORY: "729764062270980096",
+        NICKNAME: {
+            RED: "959762533101731980",
+            YELLOW: "729064531019694090",
+            GREEN: "959762533072392202"
+        }
+    },
+    BADGES: {
+        NUCLEUSDEVELOPER: "957722888360853595",
+        CLICKSDEVELOPER: "957722888314683462",
+        BOT: "776375959108190239",
+        BOOSTER: "775783766131605545",
+        HypeSquadOnlineHouse1: "775783765930016789",
+        HypeSquadOnlineHouse2: "775783766152577095",
+        HypeSquadOnlineHouse3: "775783766303440937",
+        Hypesquad: "775783766194126908",
+        PremiumEarlySupporter: "775783766055452693",
+        BugHunterLevel1: "775783766252847154",
+        BugHunterLevel2: "775783766130950234",
+        Partner: "775783766178005033",
+        Staff: "775783766383788082",
+        VerifiedDeveloper: "775783766425600060",
+        Quarantined: "1059794708638994474",
+        Spammer: "1059794708638994474",
+        ActiveDeveloper: "1059795592966053918"
+    },
+    VOICE: {
+        CONNECT: "784785219391193138",
+        CHANGE: "784785219353968670",
+        LEAVE: "784785219432480808",
+        MUTE: "784785219613360149",
+        UNMUTE: "784785219441524766",
+        DEAFEN: "784785219424747550",
+        UNDEAFEN: "784785219324346378",
+        STREAM: {
+            START: "853519659775819787",
+            STOP: "853519660116213780"
+        },
+        VIDEO: {
+            START: "853519659945295873",
+            STOP: "853519660116738078"
+        }
+    },
+    SETTINGS: {
+        STATS: {
+            GREEN: "752214059159650396",
+            RED: "1065677252630675556"
+        }
+    },
+    GUILD: {
+        RED: "959779988264079361",
+        YELLOW: "729763053352124529",
+        GREEN: "959779988503154698",
+        EMOJI: {
+            CREATE: "953035168115982437",
+            EDIT: "729066518549233795",
+            DELETE: "953035210121953320"
+        },
+        SETTINGS: {
+            GREEN: "752570111063228507",
+            RED: "1068607393728049253"
+        },
+        ICONCHANGE: "729763053612302356",
+        TICKET: {
+            OPEN: "853245836331188264",
+            CLOSE: "853580122506133505",
+            ARCHIVED: "853580122636025856"
+        },
+        ROLES: {
+            CREATE: "729064530763579413",
+            DELETE: "729064530885476392",
+            EDIT: "776109664793919489",
+            MEMBERS: "752570111281594509",
+            MESSAGES: "752570111373606942",
+            VOICE: "752570111088525354"
+        }
+    },
+    MOD: {
+        IMAGES: {
+            SWEARING: "730438422627614810",
+            INVISIBLE: "730438422690398238",
+            TOOBIG: "730438422921084998",
+            TOOSMALL: "730438422921216150"
+        },
+        SWEARING: "730438422816096377",
+        SPAM: "730438422853845042"
+    },
+    NUMBERS: [
+        {
+            NORMAL: "753259024404840529",
+            GREEN: "753312608378945648",
+            RED: "753312608890650664"
+        },
+        {
+            NORMAL: "753259025990418515",
+            GREEN: "753312608550912112",
+            RED: "753312609075462246"
+        },
+        {
+            NORMAL: "753259024409034896",
+            GREEN: "753312608513294366",
+            RED: "753312608680935446"
+        },
+        {
+            NORMAL: "753259024358703205",
+            GREEN: "753312608815284426",
+            RED: "753312609377320966"
+        },
+        {
+            NORMAL: "753259024555835513",
+            GREEN: "753312608735461457",
+            RED: "753312609255686223"
+        },
+        {
+            NORMAL: "753259024744579283",
+            GREEN: "753312608630604017",
+            RED: "753312609138376777"
+        },
+        {
+            NORMAL: "753259024354639994",
+            GREEN: "753312608656031806",
+            RED: "753312609465270412"
+        },
+        {
+            NORMAL: "753259024530800661",
+            GREEN: "753312608718815322",
+            RED: "753312609104822313"
+        },
+        {
+            NORMAL: "753259024895574037",
+            GREEN: "753312608790249646",
+            RED: "753312609477984319"
+        },
+        {
+            NORMAL: "753259024681533553",
+            GREEN: "753312608899170365",
+            RED: "753312609557545089"
+        }
+    ],
+    BOTS: {
+        GPS: "878919163937185803",
+        NUCLEUS: "878919163597439016",
+        CLICKSFORMS: "878919163337388073",
+        CASTAWAY: "878919164255944726",
+        CMPING: "878919164125929502",
+        HOOKY: "878919164121731082"
+    },
+    CFSERVICE: {
+        VERIFIED: "881984571242053642",
+        UNVERIFIED: "881984571258847232"
+    },
+    TICKETS: {
+        SUPPORT: "952295894370369587",
+        REPORT: "952295894437482537",
+        QUESTION: "952295894403907645",
+        ISSUE: "952295894412316672",
+        SUGGESTION: "952295894399725588",
+        OTHER: "952295894445883502"
+    },
+    TRACKS: {
+        ICON: "963170616444334171",
+        HORIZONTAL: {
+            LEFT: {
+                ACTIVE: "963121920038035506",
+                INACTIVE: "963121944239153242"
+            },
+            MIDDLE: {
+                ACTIVE: "963121925893263420",
+                INACTIVE: "963121949796597870"
+            },
+            RIGHT: {
+                ACTIVE: "963121933384302602",
+                INACTIVE: "963121956125831168"
+            }
+        },
+        VERTICAL: {
+            TOP: {
+                ACTIVE: "963122664648630293",
+                INACTIVE: "963122659862917140",
+                GRAY: {
+                    ACTIVE: "963123505052934144",
+                    INACTIVE: "963123495221469194"
+                }
+            },
+            MIDDLE: {
+                ACTIVE: "963122679332880384",
+                INACTIVE: "963122673246937199",
+                GRAY: {
+                    ACTIVE: "963123517702955018",
+                    INACTIVE: "963123511927390329"
+                }
+            },
+            BOTTOM: {
+                ACTIVE: "963122691752218624",
+                INACTIVE: "963122685691453552",
+                GRAY: {
+                    ACTIVE: "963123529988059187",
+                    INACTIVE: "963123523742748742"
+                }
+            }
+        },
+        SINGLE: {
+            ACTIVE: "963361162215424060",
+            INACTIVE: "963361431758176316",
+            GRAY: {
+                ACTIVE: "963361204695334943",
+                INACTIVE: "963361200828198952"
+            }
+        }
+    },
+    COLORS: {
+        RED: "875822912802803754",
+        ORANGE: "875822913104785418",
+        YELLOW: "875822913079611402",
+        GREEN: "875822913213841418",
+        BLUE: "875822912777637889",
+        PURPLE: "875822913213841419",
+        PINK: "875822913088020541",
+        GRAY: "875822913117368340"
+    }
+}
diff --git a/src/utils/database.ts b/src/utils/database.ts
index 51b2bca..5386f7f 100644
--- a/src/utils/database.ts
+++ b/src/utils/database.ts
@@ -142,6 +142,16 @@
         // console.log("Guild delete")
         await this.guilds.deleteOne({ id: guild });
     }
+
+    async staffChannels(): Promise<string[]> {
+        const entries = await this.guilds
+            .find(
+                { "logging.staff.channel": { $exists: true } },
+                { projection: { "logging.staff.channel": 1, _id: 0 } }
+            )
+            .toArray();
+        return entries.map((e) => e.logging.staff.channel!);
+    }
 }
 
 interface TranscriptEmbed {
diff --git a/src/utils/getEmojiByName.ts b/src/utils/getEmojiByName.ts
index 9bbf61f..ebcb257 100644
--- a/src/utils/getEmojiByName.ts
+++ b/src/utils/getEmojiByName.ts
@@ -1,12 +1,24 @@
-import emojis from "../config/emojis.json" assert { type: "json" };
+import emojis from "../config/emojis.js";
 import _ from "lodash";
 
 interface EmojisIndex {
     [key: string]: string | EmojisIndex | EmojisIndex[];
 }
 
-function getEmojiByName(name: string | null, format?: string): string {
-    if (!name) return "";
+const EMOJIPATHS: string[] = [];
+
+function getEmojiPaths(obj: EmojisIndex, path: string[] = []) {
+    for (const key in obj) {
+        if (typeof obj[key] === "string") {
+            EMOJIPATHS.push([...path, key].join("."));
+        } else {
+            getEmojiPaths(obj[key] as EmojisIndex, [...path, key]);
+        }
+    }
+}
+getEmojiPaths(emojis);
+
+function getEmojiByName(name: (typeof EMOJIPATHS)[number], format?: string): string {
     const parts = name.split(".");
     let id: string | EmojisIndex | EmojisIndex[] | undefined = emojis;
     for (const part of parts) {
