diff --git a/Tools/BiblioTech/BiblioTech.csproj b/Tools/BiblioTech/BiblioTech.csproj
index ab4ef7e4..0fc61932 100644
--- a/Tools/BiblioTech/BiblioTech.csproj
+++ b/Tools/BiblioTech/BiblioTech.csproj
@@ -9,6 +9,7 @@
+
diff --git a/Tools/BiblioTech/Configuration.cs b/Tools/BiblioTech/Configuration.cs
new file mode 100644
index 00000000..73b2fa8c
--- /dev/null
+++ b/Tools/BiblioTech/Configuration.cs
@@ -0,0 +1,13 @@
+using ArgsUniform;
+
+namespace BiblioTech
+{
+ public class Configuration
+ {
+ [Uniform("token", "t", "TOKEN", true, "Discord Application Token")]
+ public string ApplicationToken { get; set; } = string.Empty;
+
+ [Uniform("deploys", "d", "DEPLOYS", false, "Path where deployment JSONs are located.")]
+ public string DeploymentsPath { get; set; } = "deploys";
+ }
+}
diff --git a/Tools/BiblioTech/Program.cs b/Tools/BiblioTech/Program.cs
index 455618a6..e4f27089 100644
--- a/Tools/BiblioTech/Program.cs
+++ b/Tools/BiblioTech/Program.cs
@@ -1,29 +1,49 @@
-using Discord;
+using ArgsUniform;
+using Discord;
using Discord.WebSocket;
-public class Program
+namespace BiblioTech
{
- public static Task Main(string[] args) => new Program().MainAsync();
-
- private DiscordSocketClient client;
-
- public async Task MainAsync()
+ public class Program
{
- client = new DiscordSocketClient();
+ private DiscordSocketClient client = null!;
- client.Log += Log;
+ public static Configuration Config { get; private set; } = null!;
- // You can assign your bot token to a string, and pass that in to connect.
- // This is, however, insecure, particularly if you plan to have your code hosted in a public repository.
- var token = "token";
+ public static Task Main(string[] args)
+ {
+ var uniformArgs = new ArgsUniform(PrintHelp, args);
+ Config = uniformArgs.Parse(true);
- await client.LoginAsync(TokenType.Bot, token);
- await client.StartAsync();
- await Task.Delay(-1);
+ return new Program().MainAsync();
+ }
+
+ public async Task MainAsync()
+ {
+ Console.WriteLine("Starting Codex Discord Bot...");
+ client = new DiscordSocketClient();
+
+ client.Log += Log;
+
+ // You can assign your bot token to a string, and pass that in to connect.
+ // This is, however, insecure, particularly if you plan to have your code hosted in a public repository.
+ var token = "token";
+
+ await client.LoginAsync(TokenType.Bot, token);
+ await client.StartAsync();
+ Console.WriteLine("Running...");
+ await Task.Delay(-1);
+ }
+
+ private static void PrintHelp()
+ {
+ Console.WriteLine("BiblioTech - Codex Discord Bot");
+ }
+
+ private Task Log(LogMessage msg)
+ {
+ Console.WriteLine(msg.ToString());
+ return Task.CompletedTask;
+ }
}
- private Task Log(LogMessage msg)
- {
- Console.WriteLine(msg.ToString());
- return Task.CompletedTask;
- }
-}
\ No newline at end of file
+}
diff --git a/Tools/BiblioTech/build-docker.bat b/Tools/BiblioTech/build-docker.bat
new file mode 100644
index 00000000..bbcc64ae
--- /dev/null
+++ b/Tools/BiblioTech/build-docker.bat
@@ -0,0 +1,2 @@
+docker build -f docker/Dockerfile -t thatbenbierens/codex-discordbot:initial ../..
+docker push thatbenbierens/codex-discordbot:initial
diff --git a/Tools/BiblioTech/docker/Dockerfile b/Tools/BiblioTech/docker/Dockerfile
new file mode 100644
index 00000000..7f3844bf
--- /dev/null
+++ b/Tools/BiblioTech/docker/Dockerfile
@@ -0,0 +1,6 @@
+FROM mcr.microsoft.com/dotnet/sdk:7.0
+
+WORKDIR app
+COPY ./Tools/BiblioTech ./Tools/BiblioTech
+COPY ./Framework/ArgsUniform ./Framework/ArgsUniform
+CMD ["dotnet", "run", "--project", "Tools/BiblioTech"]
diff --git a/Tools/BiblioTech/docker/docker-compose.yaml b/Tools/BiblioTech/docker/docker-compose.yaml
new file mode 100644
index 00000000..f283ac72
--- /dev/null
+++ b/Tools/BiblioTech/docker/docker-compose.yaml
@@ -0,0 +1,6 @@
+services:
+ bibliotech-discordbot:
+ image: thatbenbierens/codex-discordbot:initial
+ environment:
+ - TOKEN=tokenplz
+ - DEPLOYS=deploypath