diff --git a/slowcord/bot/src/Bot.ts b/slowcord/bot/src/Bot.ts
new file mode 100644
index 00000000..a89102e6
--- /dev/null
+++ b/slowcord/bot/src/Bot.ts
@@ -0,0 +1,49 @@
+import { Message } from "discord.js";
+import { Client } from "fosscord-gopnik/build/lib"; // huh? oh well. some bugs in my lib Ig
+
+import { Command, getCommands } from "./commands/index.js";
+
+export default class Bot {
+ client: Client;
+ commands: { [key: string]: Command; } = {};
+
+ constructor(client: Client) {
+ this.client = client;
+ }
+
+ onReady = async () => {
+ this.commands = await getCommands();
+
+ console.log(`Logged in as ${this.client.user!.tag}`);
+
+ this.client.user!.setPresence({
+ activities: [{
+ name: "EVERYTHING",
+ type: "WATCHING",
+ }]
+ });
+
+ };
+
+ onMessageCreate = (msg: Message) => {
+ const prefix = process.env.PREFIX as string;
+ if (msg.content.indexOf(prefix) === -1) return;
+ if (msg.author.bot) return;
+
+ const content = msg.content.slice(prefix.length).split(" ");
+ const cmd = content.shift();
+ if (!cmd) return;
+ const args = content;
+
+ const command = this.commands[cmd];
+ if (!command) return;
+
+ command.exec({
+ user: msg.author,
+ member: msg.member,
+ guild: msg.guild,
+ message: msg,
+ args: args,
+ });
+ };
+}
\ No newline at end of file
diff --git a/slowcord/bot/src/commands/index.ts b/slowcord/bot/src/commands/index.ts
new file mode 100644
index 00000000..ef2d2a22
--- /dev/null
+++ b/slowcord/bot/src/commands/index.ts
@@ -0,0 +1,33 @@
+import { Message, GuildMember, Guild, User } from "discord.js";
+import fs from "fs";
+
+export type CommandContext = {
+ user: User,
+ guild: Guild | null,
+ member: GuildMember | null,
+ message: Message,
+ args: string[],
+};
+
+export type Command = {
+ name: string;
+ exec: (ctx: CommandContext) => any;
+};
+
+const walk = async (path: string): Promise<Command[]> => {
+ const files = fs.readdirSync(path);
+ const out: Command[] = [];
+ for (var file of files) {
+ if (file.indexOf("index") !== -1) continue;
+
+ var imported = await import(`${path}/${file}`);
+ }
+
+ return out;
+};
+
+export const getCommands = async () => {
+ const map: { [key: string]: Command; } = {};
+ (await walk("./build/commands")).forEach((val) => map[val.name] = val);
+ return map;
+};
\ No newline at end of file
diff --git a/slowcord/bot/src/commands/instance.ts b/slowcord/bot/src/commands/instance.ts
new file mode 100644
index 00000000..7fcfaef4
--- /dev/null
+++ b/slowcord/bot/src/commands/instance.ts
@@ -0,0 +1,8 @@
+import { Command } from "./index.js";
+
+export default {
+ name: "instance",
+ exec: ({ message }) => {
+ message.reply("Test");
+ }
+} as Command;
\ No newline at end of file
diff --git a/slowcord/bot/src/index.ts b/slowcord/bot/src/index.ts
new file mode 100644
index 00000000..2113b3a8
--- /dev/null
+++ b/slowcord/bot/src/index.ts
@@ -0,0 +1,20 @@
+import "dotenv/config";
+import Fosscord from "fosscord-gopnik";
+import Bot from "./Bot.js"; // huh?
+
+const client = new Fosscord.Client({
+ intents: ["GUILD_MESSAGES"],
+
+ http: {
+ api: process.env.ENDPOINT_API,
+ cdn: process.env.ENDPOINT_CDN,
+ invite: process.env.ENDPOINT_INV,
+ },
+});
+
+const bot = new Bot(client);
+
+client.on("ready", bot.onReady);
+client.on("messageCreate", bot.onMessageCreate);
+
+client.login(process.env.TOKEN);
\ No newline at end of file
|