diff --git a/COMMANDS/help.ts b/COMMANDS/help.ts
new file mode 100644
index 0000000..b326c90
--- /dev/null
+++ b/COMMANDS/help.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = new SlashCommandBuilder()
+    .setName("help")
+    .setDescription("Shows help for commands")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("hel p");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/_meta.ts b/COMMANDS/mod/_meta.ts
new file mode 100644
index 0000000..adfc5da
--- /dev/null
+++ b/COMMANDS/mod/_meta.ts
@@ -0,0 +1,4 @@
+const name = "mod";
+const description = "Perform mod actions";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/ban.ts b/COMMANDS/mod/ban.ts
new file mode 100644
index 0000000..cddc794
--- /dev/null
+++ b/COMMANDS/mod/ban.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("ban")
+    .setDescription("Bans a user from the server")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/ban]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/clear.ts b/COMMANDS/mod/clear.ts
new file mode 100644
index 0000000..78909a9
--- /dev/null
+++ b/COMMANDS/mod/clear.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("clear")
+    .setDescription("Clears a users messages in a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/clear]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/kick.ts b/COMMANDS/mod/kick.ts
new file mode 100644
index 0000000..895f035
--- /dev/null
+++ b/COMMANDS/mod/kick.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("kick")
+    .setDescription("Clears a users messages in a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/kick]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/_meta.ts b/COMMANDS/mod/lock/_meta.ts
new file mode 100644
index 0000000..73cc18e
--- /dev/null
+++ b/COMMANDS/mod/lock/_meta.ts
@@ -0,0 +1,4 @@
+const name = "lock";
+const description = "Quickly lock and unlock channels";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/add.ts b/COMMANDS/mod/lock/add.ts
new file mode 100644
index 0000000..cb89b55
--- /dev/null
+++ b/COMMANDS/mod/lock/add.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("add")
+    .setDescription("Adds a lock to a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/lock/add]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/remove.ts b/COMMANDS/mod/lock/remove.ts
new file mode 100644
index 0000000..698bee9
--- /dev/null
+++ b/COMMANDS/mod/lock/remove.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("remove")
+    .setDescription("Removes a lock from a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/lock/remove]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/purge.ts b/COMMANDS/mod/purge.ts
new file mode 100644
index 0000000..7c52b13
--- /dev/null
+++ b/COMMANDS/mod/purge.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("purge")
+    .setDescription("Clears messages in a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/purge]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/_meta.ts b/COMMANDS/mod/slowmode/_meta.ts
new file mode 100644
index 0000000..4200b58
--- /dev/null
+++ b/COMMANDS/mod/slowmode/_meta.ts
@@ -0,0 +1,4 @@
+const name = "slowmode";
+const description = "Settings for slowmode in channels";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/clear.ts b/COMMANDS/mod/slowmode/clear.ts
new file mode 100644
index 0000000..3b09dea
--- /dev/null
+++ b/COMMANDS/mod/slowmode/clear.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("clear")
+    .setDescription("Clears slowmode from a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/slowmode/clear]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/set.ts b/COMMANDS/mod/slowmode/set.ts
new file mode 100644
index 0000000..a2dd7ca
--- /dev/null
+++ b/COMMANDS/mod/slowmode/set.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("clear")
+    .setDescription("Sets slowmode in a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/slowmode/set]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/toggle.ts b/COMMANDS/mod/slowmode/toggle.ts
new file mode 100644
index 0000000..fc44f75
--- /dev/null
+++ b/COMMANDS/mod/slowmode/toggle.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("clear")
+    .setDescription("Toggles slowmode in a channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/slowmode/toggle]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/softban.ts b/COMMANDS/mod/softban.ts
new file mode 100644
index 0000000..19db3c2
--- /dev/null
+++ b/COMMANDS/mod/softban.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("softban")
+    .setDescription("Softbans a user")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/softban]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/unban.ts b/COMMANDS/mod/unban.ts
new file mode 100644
index 0000000..fe2133e
--- /dev/null
+++ b/COMMANDS/mod/unban.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("unban")
+    .setDescription("Unbans a user")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/unban]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/viewas.ts b/COMMANDS/mod/viewas.ts
new file mode 100644
index 0000000..fc5474f
--- /dev/null
+++ b/COMMANDS/mod/viewas.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setDescription("View the server as a specific member")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/viewas]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/warn.ts b/COMMANDS/mod/warn.ts
new file mode 100644
index 0000000..f050ef2
--- /dev/null
+++ b/COMMANDS/mod/warn.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("warn")
+    .setDescription("Warns a user")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [mod/warn]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/_meta.ts b/COMMANDS/nucleus/_meta.ts
new file mode 100644
index 0000000..df978ba
--- /dev/null
+++ b/COMMANDS/nucleus/_meta.ts
@@ -0,0 +1,4 @@
+const name = "nucleus";
+const description = "Commands relating to Nucleus itself";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/ping.ts b/COMMANDS/nucleus/ping.ts
new file mode 100644
index 0000000..43a5fd7
--- /dev/null
+++ b/COMMANDS/nucleus/ping.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("ping")
+    .setDescription("Gets the bot's ping time")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [nucleus/ping]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/stats.ts b/COMMANDS/nucleus/stats.ts
new file mode 100644
index 0000000..7f468fa
--- /dev/null
+++ b/COMMANDS/nucleus/stats.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("stats")
+    .setDescription("Gets the bot's statse")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [nucleus/stats]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/suggest.ts b/COMMANDS/nucleus/suggest.ts
new file mode 100644
index 0000000..e76d49f
--- /dev/null
+++ b/COMMANDS/nucleus/suggest.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("suggest")
+    .setDescription("Sends a suggestion to the developers")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [nucleus/suggest]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/privacy.ts b/COMMANDS/privacy.ts
new file mode 100644
index 0000000..dc97370
--- /dev/null
+++ b/COMMANDS/privacy.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = new SlashCommandBuilder()
+    .setName("privacy")
+    .setDescription("Shows info about Nucleus' privacy options")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [privacy]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/_meta.ts b/COMMANDS/role/_meta.ts
new file mode 100644
index 0000000..408576f
--- /dev/null
+++ b/COMMANDS/role/_meta.ts
@@ -0,0 +1,4 @@
+const name = "role";
+const description = "Change roles for users";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/role/add.ts b/COMMANDS/role/add.ts
new file mode 100644
index 0000000..6fa80a2
--- /dev/null
+++ b/COMMANDS/role/add.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("add")
+    .setDescription("Adds a role to someone")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/add]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/_meta.ts b/COMMANDS/role/all/_meta.ts
new file mode 100644
index 0000000..4db116a
--- /dev/null
+++ b/COMMANDS/role/all/_meta.ts
@@ -0,0 +1,4 @@
+const name = "all";
+const description = "Role all users";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/role/all/add.ts b/COMMANDS/role/all/add.ts
new file mode 100644
index 0000000..18ab380
--- /dev/null
+++ b/COMMANDS/role/all/add.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("add")
+    .setDescription("Adds a role to everyone")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/all/add]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/remove.ts b/COMMANDS/role/all/remove.ts
new file mode 100644
index 0000000..414bfd6
--- /dev/null
+++ b/COMMANDS/role/all/remove.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("add")
+    .setDescription("removes a role from everyone")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/all/remove]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/toggle.ts b/COMMANDS/role/all/toggle.ts
new file mode 100644
index 0000000..9b2f3e3
--- /dev/null
+++ b/COMMANDS/role/all/toggle.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("toggle")
+    .setDescription("Adds a role to everyone if they don't have it, removes it if they do")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/all/toggle]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/info.ts b/COMMANDS/role/info.ts
new file mode 100644
index 0000000..d5874bd
--- /dev/null
+++ b/COMMANDS/role/info.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("info")
+    .setDescription("Gets info about a role")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/info]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/remove.ts b/COMMANDS/role/remove.ts
new file mode 100644
index 0000000..c5f44cb
--- /dev/null
+++ b/COMMANDS/role/remove.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("remove")
+    .setDescription("Removes a role from someone")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [role/remove]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/_meta.ts b/COMMANDS/settings/_meta.ts
new file mode 100644
index 0000000..63d726e
--- /dev/null
+++ b/COMMANDS/settings/_meta.ts
@@ -0,0 +1,4 @@
+const name = "settings";
+const description = "Change bot settings";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/all.ts b/COMMANDS/settings/all.ts
new file mode 100644
index 0000000..0f17545
--- /dev/null
+++ b/COMMANDS/settings/all.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("all")
+    .setDescription("Shows a full UI of all settings")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/all]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/automation.ts b/COMMANDS/settings/automation.ts
new file mode 100644
index 0000000..3874f7f
--- /dev/null
+++ b/COMMANDS/settings/automation.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("automation")
+    .setDescription("Shows all automation options")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/automation]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/_meta.ts b/COMMANDS/settings/log/_meta.ts
new file mode 100644
index 0000000..15a6fd4
--- /dev/null
+++ b/COMMANDS/settings/log/_meta.ts
@@ -0,0 +1,4 @@
+const name = "log";
+const description = "Settings for logging";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/channel.ts b/COMMANDS/settings/log/channel.ts
new file mode 100644
index 0000000..af570a7
--- /dev/null
+++ b/COMMANDS/settings/log/channel.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("channel")
+    .setDescription("Sets the log channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/log/channel]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/events.ts b/COMMANDS/settings/log/events.ts
new file mode 100644
index 0000000..4f4c9bd
--- /dev/null
+++ b/COMMANDS/settings/log/events.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("events")
+    .setDescription("Sets what events should be logged")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/log/events]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/ignore.ts b/COMMANDS/settings/log/ignore.ts
new file mode 100644
index 0000000..eea7048
--- /dev/null
+++ b/COMMANDS/settings/log/ignore.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("ignore")
+    .setDescription("Sets which users, channels and roles should be ignored")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/log/ignore]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/ignored.ts b/COMMANDS/settings/log/ignored.ts
new file mode 100644
index 0000000..df5f7b6
--- /dev/null
+++ b/COMMANDS/settings/log/ignored.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("ignored")
+    .setDescription("Gets the ignored users, channels and roles")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/log/ignored]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/_meta.ts b/COMMANDS/settings/mod/_meta.ts
new file mode 100644
index 0000000..713bb48
--- /dev/null
+++ b/COMMANDS/settings/mod/_meta.ts
@@ -0,0 +1,4 @@
+const name = "announcements";
+const description = "Settings for mod messages";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/channel.ts b/COMMANDS/settings/mod/channel.ts
new file mode 100644
index 0000000..16230ba
--- /dev/null
+++ b/COMMANDS/settings/mod/channel.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("channel")
+    .setDescription("Sets the channel for staff messages to go to")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/mod/channel]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/events.ts b/COMMANDS/settings/mod/events.ts
new file mode 100644
index 0000000..3dc5e99
--- /dev/null
+++ b/COMMANDS/settings/mod/events.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("events")
+    .setDescription("Sets which events mods should be notified about")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/mod/events]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/tickets.ts b/COMMANDS/settings/tickets.ts
new file mode 100644
index 0000000..33e1586
--- /dev/null
+++ b/COMMANDS/settings/tickets.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("tickets")
+    .setDescription("Shows settings for tickets")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/tickets]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/_meta.ts b/COMMANDS/settings/verify/_meta.ts
new file mode 100644
index 0000000..999c50b
--- /dev/null
+++ b/COMMANDS/settings/verify/_meta.ts
@@ -0,0 +1,4 @@
+const name = "verify";
+const description = "Settings for verification";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/channel.ts b/COMMANDS/settings/verify/channel.ts
new file mode 100644
index 0000000..ad881c2
--- /dev/null
+++ b/COMMANDS/settings/verify/channel.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("channel")
+    .setDescription("Sets the verify channel")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/verify/channel]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/role.ts b/COMMANDS/settings/verify/role.ts
new file mode 100644
index 0000000..3082c71
--- /dev/null
+++ b/COMMANDS/settings/verify/role.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("role")
+    .setDescription("Sets the role given after verifying")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [settings/verify/role]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/tag.ts b/COMMANDS/tag.ts
new file mode 100644
index 0000000..d716670
--- /dev/null
+++ b/COMMANDS/tag.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = new SlashCommandBuilder()
+    .setName("tag")
+    .setDescription("Manage or get a tag")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [tag]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/_meta.ts b/COMMANDS/ticket/_meta.ts
new file mode 100644
index 0000000..8c21466
--- /dev/null
+++ b/COMMANDS/ticket/_meta.ts
@@ -0,0 +1,4 @@
+const name = "ticket";
+const description = "Manage modmail tickets";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/ticket/close.ts b/COMMANDS/ticket/close.ts
new file mode 100644
index 0000000..1e0856d
--- /dev/null
+++ b/COMMANDS/ticket/close.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("close")
+    .setDescription("Closes a ticket")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [ticket/close]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/create.ts b/COMMANDS/ticket/create.ts
new file mode 100644
index 0000000..6f45cc2
--- /dev/null
+++ b/COMMANDS/ticket/create.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("create")
+    .setDescription("Creates a new modmail ticket")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [ticket/create]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/delete.ts b/COMMANDS/ticket/delete.ts
new file mode 100644
index 0000000..587ecf4
--- /dev/null
+++ b/COMMANDS/ticket/delete.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("delete")
+    .setDescription("Deletes a ticket")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [ticket/delete]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/user/_meta.ts b/COMMANDS/user/_meta.ts
new file mode 100644
index 0000000..6c14052
--- /dev/null
+++ b/COMMANDS/user/_meta.ts
@@ -0,0 +1,4 @@
+const name = "user";
+const description = "Commands for user info";
+
+export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/user/about.ts b/COMMANDS/user/about.ts
new file mode 100644
index 0000000..9015c13
--- /dev/null
+++ b/COMMANDS/user/about.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("about")
+    .setDescription("Shows info about a user")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [user/about]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/user/avatar.ts b/COMMANDS/user/avatar.ts
new file mode 100644
index 0000000..9e22d0c
--- /dev/null
+++ b/COMMANDS/user/avatar.ts
@@ -0,0 +1,20 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = (builder: SlashCommandSubcommandBuilder) =>
+    builder
+    .setName("avatar")
+    .setDescription("Shows a users avatar")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [user/avatar]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/COMMANDS/verify.ts b/COMMANDS/verify.ts
new file mode 100644
index 0000000..bb93dde
--- /dev/null
+++ b/COMMANDS/verify.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = new SlashCommandBuilder()
+    .setName("verify")
+    .setDescription("Get verified in the server")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Command incomplete [verify]");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return true;
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
