Start making a bot with a few example commands
diff --git a/src/commands/example.ts b/src/commands/example.ts
new file mode 100644
index 0000000..73e967e
--- /dev/null
+++ b/src/commands/example.ts
@@ -0,0 +1,19 @@
+import { CommandInteraction } from "discord.js";
+import { SlashCommandBuilder } from "@discordjs/builders";
+import { WrappedCheck } from "jshaiku";
+
+const command = new SlashCommandBuilder()
+    .setName("examplecommand")
+    .setDescription("An example command")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Hello, world!");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return interaction.user.id !== "123456789";
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/src/commands/examplegroup/example.ts b/src/commands/examplegroup/example.ts
new file mode 100644
index 0000000..cc1d031
--- /dev/null
+++ b/src/commands/examplegroup/example.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("examplesubcommand")
+    .setDescription("An example subcommand")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Hello, world!");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return interaction.user.id !== "123456789";
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/src/commands/examplegroup/groupscanhavegroups/_meta.ts b/src/commands/examplegroup/groupscanhavegroups/_meta.ts
new file mode 100644
index 0000000..0b07053
--- /dev/null
+++ b/src/commands/examplegroup/groupscanhavegroups/_meta.ts
@@ -0,0 +1,4 @@
+const name = "examplesubgroup";
+const description = "This is an example subgroup with a meta file";
+
+export { name, description };
\ No newline at end of file
diff --git a/src/commands/examplegroup/groupscanhavegroups/example.ts b/src/commands/examplegroup/groupscanhavegroups/example.ts
new file mode 100644
index 0000000..cc1d031
--- /dev/null
+++ b/src/commands/examplegroup/groupscanhavegroups/example.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("examplesubcommand")
+    .setDescription("An example subcommand")
+
+const callback = (interaction: CommandInteraction) => {
+    interaction.reply("Hello, world!");
+}
+
+const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
+    return interaction.user.id !== "123456789";
+}
+
+export { command };
+export { callback };
+export { check };
\ No newline at end of file
diff --git a/src/config.json b/src/config.json
new file mode 100644
index 0000000..be1c089
--- /dev/null
+++ b/src/config.json
@@ -0,0 +1,11 @@
+{
+    "token": "your-token-here",
+    "developmentToken": "NzEzMzIwMzc5MzY3ODE3MjM2.XseZXw.-NeXEfWg25j2nJ5VDWMrjlxigH4",
+    "managementGuildID": "your-management-guild-id-here",
+    "developmentGuildID": "864185037078790195",
+    "enableDevelopment": true,
+    "owners": [
+      "317731855317336067",
+      "438733159748599813"
+    ]
+}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..6bc97b7
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,11 @@
+import { HaikuClient } from 'jshaiku';
+import { Intents } from 'discord.js';
+import config from './config.json' assert {type: 'json'};
+
+const client = new HaikuClient({
+    intents: new Intents(32767).bitfield,  // This is a way of specifying all intents w/o having to type them out
+}, config);
+
+await client.registerCommandsIn("./commands");
+
+await client.login();
\ No newline at end of file