From bcb05cd0c9258d3bbe470f015e0797e46616e683 Mon Sep 17 00:00:00 2001 From: benbierens Date: Wed, 18 Oct 2023 11:01:24 +0200 Subject: [PATCH] Dockerizes discord bot --- Tools/BiblioTech/BiblioTech.csproj | 1 + Tools/BiblioTech/Configuration.cs | 13 +++++ Tools/BiblioTech/Program.cs | 62 ++++++++++++++------- Tools/BiblioTech/build-docker.bat | 2 + Tools/BiblioTech/docker/Dockerfile | 6 ++ Tools/BiblioTech/docker/docker-compose.yaml | 6 ++ 6 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 Tools/BiblioTech/Configuration.cs create mode 100644 Tools/BiblioTech/build-docker.bat create mode 100644 Tools/BiblioTech/docker/Dockerfile create mode 100644 Tools/BiblioTech/docker/docker-compose.yaml 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